How to start barebox on Freescale iMX28 EVK
Maxime Ripard
maxime.ripard at free-electrons.com
Fri Jun 29 08:59:00 EDT 2012
Hi,
Le 29/06/2012 11:29, Sascha Hauer a écrit :
> On Fri, Jun 29, 2012 at 11:11:59AM +0200, Maxime Ripard wrote:
>> Anyone ?
>>
>> Le 18/06/2012 15:07, Maxime Ripard a écrit :
>>> Hi everyone,
>>>
>>> I'm trying barebox on the imx28 evk evaluation board from freescale, and
>>> I can't get barebox to boot yet.
>>>
>>> I think I might have a problem with the bootlets used, but I'm not sure.
>>>
>>> So, to compile barebox, I did:
>>> ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make imx28evk_defconfig
>>> ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- make
>>>
>>> Using codebench 2011.09 toolchain.
>>>
>>> Then, I used U-boot IVT bootlet from freescale bootlet tarball as a base
>>> for the one I created [1].
>>>
>>> After that, I created the bootstream using
>>> elftosb -z -f imx28 -c ./barebox_ivt.bd -o imx28_ivt_barebox.sb
>>>
>>> Finally, I pushed on a properly formatted SD Card (with a 0x53 partition
>>> flag on the first partition) using Freescale mk_hdr script[2] to
>>> generate the proper headers:
>>>
>>> ./mk_hdr.sh `sudo fdisk -lu /dev/sdb | awk '$5==53 {print $2}'` 1 >
>>> temp.bin
>>>
>>> sudo dd if=temp.bin of=/dev/sdb1 ibs=512 conv=sync
>>> sudo dd if=imx28_ivt_barebox.sb of=/dev/sdb1 ibs=512 obs=512 seek=1
>>> conv=sync
>>>
>>> When I finally plug the card in and boot the card, the two first
>>> bootlets are properly executed, and then, it hangs, displaying nothing
>>> but what is looking like an address: 0x8050100f
>
> This code comes from the i.MX28 ROM and means:
>
> Requested data beyond the end of a section.
>
> Maybe your entry point is wrong? I just had a look at our .bd file and
> it looks like this:
>
> sources {
> power_prep="./power_prep/power_prep";
> u_boot="/home/sha/dude/bosch/OSELAS.BSP-Bosch-SCM/platform-scm/build-target/barebox-2012.05.0/barebox";
> }
>
> section (0) {
>
> //----------------------------------------------------------
> // Power Supply initialization
> //----------------------------------------------------------
>
> load power_prep;
> load ivt (entry = power_prep:_start) > 0x8000;
> hab call 0x8000;
>
> //----------------------------------------------------------
> // Load and call u_boot - ELF ARM image
> //----------------------------------------------------------
>
> load u_boot;
> load ivt (entry = u_boot:exception_vectors) > 0x8000;
> hab call 0x8000;
>
> }
Yep, it was just that. Changing the entry point to exception_vectors did
the trick. Thanks a lot!
Maxime
--
Maxime Ripard, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the barebox
mailing list