FreeBSD and BeagleBone
raj at semihalf.com
Sat Jan 21 10:30:39 UTC 2012
On 2012-01-21, at 08:34, Tim Kientzle wrote:
> On Jan 20, 2012, at 7:26 AM, Mark Murray wrote:
>>> For the moment, I'm more curious about just how far I can push this
>>> using FreeBSD tools only.
>> I've locally updated cross-(binutils|gcc|gdb) to the latest stable
>> versions, and they seem to work really well for u-boot, OpenPilot and a
>> couple of other things.
> Warner's pointer about "make xdev" helped a lot.
> $ cd /usr/src && make xdev XDEV=arm XDEV_ARCH=arm
> Then U-boot almost builds with
> $ cd ~/u-boot
> $ gmake CROSS_COMPILE=arm-freebsd- am335x_evm_config
> $ gmake CROSS_COMPILE=arm-freebsd-
> To actually get it to build, I've had to make two changes to U-Boot sources:
> * In config.mk, remove "-nostdinc" from CPPFLAGS
> * In Makefile, add /usr/arm-freebsd/usr/lib/libc.a to PLATFORM_LIBS
> The first fixes missing stddef.h, stdarg.h headers. (I'm not
> sure why the -nostdinc works on Linux.)
> The second is needed to resolve __umodsi3, __udivsi3, etc,
> functions. (These might be defined in libgcc on Linux, and
> there's some logic here to try to locate libgcc.)
> With these, I've been able to rebuild u-boot for
> the BeagleBone from TI's sources to add the "bootelf"
> command. (The same changes seem to allow the current source
> from denx.de to build on FreeBSD.)
> But ubldr still won't run:
> U-Boot# fatload mmc 0 0x80008000 ubldr
> reading ubldr
> 232591 bytes read
> U-Boot# bootelf 0x80008000
> Anyone else used U-Boot to run ubldr on Arm?
Looking at memory addresses you use for loading etc. the problem you might be hitting is with a linking address range: ubldr by default is linked against 0x1000000, and the bootelf command would follow this while parsing ELF and placing code/data in memory. If your system config does not allow available RAM in this range it would crash / hang. If this is the case, please try to adjust linking addr range in sys/boot/arm/uboot/ldscript.arm to fit your layout and see if this helps.
More information about the freebsd-arm