Porting barebox to Novena: misc questions

Sean Cross xobs at kosagi.com
Thu Mar 13 06:18:44 EDT 2014


On 13/3/14 3:38 PM, Sascha Hauer wrote:
> Hi Sean,
> 
> On Thu, Mar 13, 2014 at 10:04:35AM +0800, Sean Cross wrote:
>> Hi,
>>
>> I've finally managed to get U-Boot's SPL to configure DDR3 and load
>> barebox off of a FAT partition on an i.MX6DL.  I also have a barebox
>> build with most features turned on, and I'm running into a number of
>> problems.  barebox is able to load a zImage off of the FAT partition,
>> set up ATAGs, and jump to it.  So I have the basics done.  But there are
>> lots of little things that aren't working.
>>
>> When I boot without an Ethernet cable plugged in, the "timeout" command
>> takes a very long time to complete.  It generally freezes at "Hit any
>> key to stop autoboot:  3" and tends to ignore input for around ten
>> seconds.  How can I prevent this from happening, short of compiling out
>> FEC support?
> 
> Are you trying to start from network without a cable plugged in? When I
> start from network without a cable I get:
> 
> running /env/bin/init...
> 
> Hit m for menu or any other key to stop autoboot:  1
> blspec: blspec_scan_directory: net loader/entries
> booting net
> dhcp failed: Network is down
> dhcp: Network is down
> 
> It indeed takes some seconds until we are sure that the link is down.
> That timeout could be reduced, but we must give the phy some time to
> bring up the link.
> 
> Or does this happen when you are not trying to boot from network at all?
> That shouldn't happen. If it does, maybe some automount command triggers
> network accesses.

This was caused by the default environment I imported.  It set
"ip=dhcp", which I guess caused it to try and obtain an address.  I've
set it to "ip=none" for now, and the problem has gone away.

>> The "usb" command just hangs the system.  It should at least detect the
>> other ASIX Ethernet port.  I have &usbh1 configured identically to
>> sabrelite.  Is there something else I need to configure?
> 
> This usually means the phys are not configured correctly. Are you
> probing from devicetree?

I am probing from devicetree.  I don't see phys mentioned anywhere
except in the imx6qdl.dtsi file, which means that in theory there
shouldn't be anything for me to modify.

>>
>> The "usbserial" command returns "usbserial: No such device".  Like usb,
>> I have &usbotg configured the same as sabrelite.  It doesn't work with
>> dr_mode set to either "host" or "otg".
> 
> Ok, from devicetree it seems. I can say that there shouldn't be any bugs
> in the common usb code preventing your devices from being probed. It
> normally boils down to some usbmisc register setting being wrong.

I don't see any usbmisc register mentioned in any of the board bringup
files.  The first time I run usbserial it says "No such device", and
subsequent runs cause it to print out "Invalid argument".

>> How can I pass the correct ram size to Linux?  The comment on
>> barebox_arm_entry() notes that "[memsize] doesn't necessarily have to be
>> the full SDRAM", and indeed I notice that barebox hangs if I pass it the
>> full 3840 MB passed from U-Boot.  So I'm currently limiting it to 1GB in
>> my start_imx6dl_kosagi_novena_6dl routine.  Do I need to somehow add the
>> remainder as another bank somewhere?  Or modify the bank size in my
>> kosagi_novena_init() in board.c?
> 
> If you probe from devicetree the correct amount of memory is taken from
> there. If that doesn't work (dynamic amount of memory for example) you
> can set the memory in the devicetree to 0 and call arm_add_mem_device
> instead.

Thank you.  Now I've got the full memory amount showing up.

>> Finally, I was unable to get barebox to boot with MMU support.  For some
>> reason it kept trying to allocate memory just outside of allocated RAM.
> 
> This is related to the wrong memory setup. That should be solved when
> you get that straight.
> 
>>  Is there any benefit to running with the MMU enabled on i.MX6?
> 
> Definitely, yes. barebox runs much faster with MMU enabled.

If I enable the MMU but disable early MMU, it hangs with this error:

Board: Kosagi i.MX6DL Novena Board
detected i.MX6 DualLite revision 1.1
ERROR: out of memory

[<5062e9ed>] (unwind_backtrace+0x1/0x74) from [<5061c525>] (panic+0x1d/0x34)
[<5061c525>] (panic+0x1d/0x34) from [<5061cc27>] (xmemalign+0xf/0x14)
[<5061cc27>] (xmemalign+0xf/0x14) from [<5062f687>] (mmu_init+0x16b/0x1f8)
[<5062f687>] (mmu_init+0x16b/0x1f8) from [<50600797>]
(start_barebox+0x1b/0xd0)
[<50600797>] (start_barebox+0x1b/0xd0) from [<5062efcd>] (__start+0x91/0xa4)
[<5062efcd>] (__start+0x91/0xa4) from [<50600005>]
(__bare_init_start+0x1/0xc)
### ERROR ### Please RESET the board ###

If I also enable early MMU, it hangs much much earlier.  When I dug into
it, it looked like it was trying to place a TTB just outside of the
allocated memory region, for some reason.

This is with me passing SZ_1G to barebox_arm_entry().  If I pass
something small like SZ_64M, it hangs completely.  If I instead pass it
SZ_128M, it works just fine, but of course the MMU still doesn't work.


Sean



More information about the barebox mailing list