[U-Boot] Booting from network

U.Mutlu for-gmane at mutluit.com
Sun Apr 7 16:59:14 UTC 2019


Chris Packham wrote on 04/07/2019 01:22 AM:
> On Sun, 7 Apr 2019, 9:03 AM U.Mutlu, <for-gmane at mutluit.com> wrote:
>
>> I'm booting over the network (GbE) from a tftp server.
>> It works, but is IMHO very slow.
>> Is there a faster method for booting over the net?
>>
>
> TFTP is about as good as your going to get in u-boot right now.
>
> Because TFTP sends a block at a time waiting for an ack between blocks it's
> not going to be as fast as something that runs over TCP and benefits from
> buffering.
>
> One tunable you might get some use out of is $tftpblocksize, this will
> increase the number of bytes per block. Try setting this to around 1400
> keeping the overall Ethernet frame under 1518.

After attaching a monitor to the device, I now can see that
the cause is that sometimes the tftboot (or tftp) command fails,
but the script continues... Ie. there is missing some evaluation/test
of the return code of the command.
One better should do it in a loop with n retries. I've yet to read
in u-boot documentation on how one can do such tests in the script.

> boot.cmd:
>> dhcp 0x49000000
>> tftpboot 0x46000000 192.168.1.201:uImage
>> tftpboot 0x49000000 192.168.1.201:u-boot.dtb
>> setenv bootargs console=ttyS0,115200 root=/dev/sda1 rootwait panic=10
>> rootfstype=ext4 rw ${extra}
>> bootm 0x46000000 - 0x49000000
>>
>> Btw, in the above script, can I safely replace the addresses
>> with ${kloadaddr} and ${fdtaddr} ?
>> I wonder where these variables get set or obtained from.
>> (I saw these variables somewhere on the net, but there was no
>> initialisation,
>> so I assumed it must be something internal/intrinsic, right?)
>>
>
> To my knowledge the only intrinsics are $loadaddr, $fileaddr and $filesize.
> The latter two are set after a successful load. However plenty of boards
> have $fdtaddr etc in their default environment so you might have acces to
> those depending on your board.

I now see that the u-boot commands "bdinfo" and "printenv" do print such infos.
I haven't grasped yet if that info is persistent, or initialized each time
by u-boot, but it seems there could be some persistent store beyond uSD
on the device.
My device is Banana Pi R1 (aka BPi-R1 or Lamobo R1). I'm relatively new
to this board, and also generally to these Raspi-like small devices.

It's IMO a nice PC-like dual-core ARMv7-A20 1GHz 32bit board with GbE router & 
switch capabilities,
but I have one major problem with this board: the SSD (SATA2 3Gbps AHCI)
write-speed is only about 52 MB/s (read-speed is about 200 MB/s).
I try to find out which component is responsible for the slow write-speed:
is it the SATA driver (ahci-sunxi[1c18000.sata]), or other components (HW or SW)?
How could one best encircle/pinpoint this SATA specific problem-source?

root at r1-3:/tmp# dmesg | grep -i "sata\|ahci"
[    5.485336] ahci-sunxi 1c18000.sata: Linked as a consumer to regulator.11
[    5.592431] ahci-sunxi 1c18000.sata: controller can't do PMP, turning off 
CAP_PMP
[    5.599953] ahci-sunxi 1c18000.sata: SSS flag set, parallel bus scan disabled
[    5.607139] ahci-sunxi 1c18000.sata: AHCI 0001.0100 32 slots 1 ports 3 Gbps 
0x1 impl platform mode
[    5.616118] ahci-sunxi 1c18000.sata: flags: ncq sntf stag pm led clo only 
pio slum part ccc
[    5.625664] scsi host0: ahci-sunxi
[    5.629551] ata1: SATA max UDMA/133 mmio [mem 0x01c18000-0x01c18fff] port 
0x100 irq 37
[    5.963890] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)


root at r1-3:/tmp# cat /proc/interrupts
            CPU0       CPU1
...
  37:       3330       2813     GICv2  88 Level     ahci-sunxi[1c18000.sata]
...


> And: though my board can output via HDMI, I've no monitor attached,
>> and a serial cable (TTY to USB) I don't have at the moment.
>> Is there another method to get the u-boot output (or log) to be sent to a
>> remote host/log?
>>
>
> I've never used in personally but CONFIG_NET_CONSOLE exists, I believe its
> only good for output.
>
> I'd still recommend getting a serial cable if your going to be playing with
> u-boot becasue at some point you'll do something that stops your board from
> booting.

Yes, I've already ordered such an adapter cable, will get it tomorrow or tuesday.





More information about the U-Boot mailing list