RouterBOOT on RB450G has a 4MB NAND kernel size limit

Rafal Jaworowski raj at semihalf.com
Thu Mar 22 22:08:12 UTC 2012


On 2012-03-09, at 02:00, Warner Losh wrote:

> 
> On Mar 8, 2012, at 5:24 PM, Juli Mallett wrote:
> 
>> Hey folks,
>> 
>> I thought it might be useful to share this with others, so they don't
>> waste 6 hours diffing ELF files trying to figure out what the problem
>> is.
>> 
>> It turns out that although it can load ELF files of variable size over
>> TFTP, and although the system is configured with a larger kernel NAND
>> partition, RouterBOOT seems to choke (without any clear error, mind
>> you, because that would be gratuitously-sensible) on loading kernels
>> larger than 4MB.  Of course, it's hard to figure this out because
>> nothing useful turns up on a quick search for '"setting up elf
>> image..." hang' or '"setting up elf image..." -"setting up elf
>> image... ok"', although once you figure it out, it's easy to confirm
>> with a quick Google along the lines of 'rb450g 4mb kernel'.
>> 
>> So, be warned if you're thinking that you'll use an OpenWRT kernel
>> with initramfs over netboot to provision devices to use FreeBSD by
>> copying the kernel to NAND.  Or if you've got yaffs patches to your
>> kernel and can just copy over kernels with impunity.
>> 
>> Has anyone looked at using U-Boot as a second stage loader on this
>> hardware?  In order to make loader useful, we'd have to add an awful
>> lot of infrastructure, including another yaffs implementation, when we
>> don't even have one in-tree yet.  What would be most useful, too,
>> would be to have MMC + SPI support in loader (here again, U-Boot is
>> helpful), so that we could load kernels from SD.  That's a lot of work
>> on loader, and U-Boot already does it all, right?  Any thoughts?
> 
> While not specifically for that hardware, I've scoped out the work it would take to port raj@'s work from ARM to MIPS.  It doesn't look huge, once you settle on the right 'syscall' model.  figured it would take a dedicated person in the weeks to months range of effort, depending on the person :).  Maybe semihalf has already done a port?

No, we haven't finally managed to (despite a couple of approaches :-), but the thing is not at all very difficult as you said. One needs to provide U-Boot context/restore and the MIPS 'syscall' routine, plus debugging. The rest of /boot/ubldr code is independent of the arch.

Rafal



More information about the freebsd-mips mailing list