cd u-boot export CROSS_COMPILE=arm-linux-gnu- make distclean make orangepi_pc_plus_defconfig make allThis runs quickly, giving me a binary file. I boot my PC Plus using an Armbian image, copy the binary to it using scp and then install it onto eMMC using:
dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk1 bs=1024 seek=8 447+1 records in 447+1 records out 458738 bytes (459 kB) copied, 0.0609168 s, 7.5 MB/sNow we get this:
U-Boot SPL 2016.11-g29e0cfb-dirty (Jan 09 2017 - 11:19:55) DRAM: 1024 MiB Trying to boot from MMC2 U-Boot 2016.11-g29e0cfb-dirty (Jan 09 2017 - 11:19:55 -0700) Allwinner Technology CPU: Allwinner H3 (SUN8I 1680) Model: Xunlong Orange Pi PC Plus I2C: ready DRAM: 1 GiB MMC: SUNXI SD/MMC: 1, SUNXI SD/MMC: 0 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: phy interface0 eth0: ethernet@1c30000 Hit any key to stop autoboot: 0 ** File not found /boot/boot.bmp ** ** Unrecognized filesystem type ** There is no valid bmp file at the given address switch to partitions #0, OK mmc0(part 0) is current device Scanning mmc 0:1... MMC: no card present starting USB... USB0: USB EHCI 1.00 USB1: USB OHCI 1.0 USB2: USB EHCI 1.00 USB3: USB OHCI 1.0 USB4: USB EHCI 1.00 USB5: USB OHCI 1.0 scanning bus 0 for devices... 1 USB Device(s) found scanning bus 2 for devices... 1 USB Device(s) found scanning bus 4 for devices... 1 USB Device(s) found USB device 0: unknown device BOOTP broadcast 1 DHCP client bound to address 192.168.0.60 (9 ms) *** Warning: no boot file name; using 'C0A8003C.img' Using ethernet@1c30000 device TFTP from server 192.168.0.1; our IP address is 192.168.0.60 Filename 'C0A8003C.img'. Load address: 0x42000000For some reason the keyboard does not interrupt the autoboot as it should, but I find typing Control-C a bunch of times while it is trying to do TFTP ultimately places me at the U-Boot prompt. Then I can make and save the environment changes to do network booting as I want to.
First I note the value of this variable (which I am going to change) in case I ever want to go back to the default:
printenv bootcmd bootcmd=run loadsplash; run distro_bootcmdI first did the following, which works, but "wires" too much stuff into the U-boot environment. It is better to let this stuff be fetched via dhcp (but this would be the way to do things if you didn't have a DHCP server set up). See below for the simpler DHCP setup.
setenv serverip 192.168.0.5 setenv ipaddr 192.168.0.60 setenv bootfile orange.bin setenv bootaddr 0x42000000 setenv boot_kyu echo Booting via tftp (\${bootfile})\; tftpboot \${bootaddr} \${bootfile}\; go \${bootaddr} setenv bootcmd run boot_kyu saveenvNote all the backslashes in the definition of "boot_kyu". These are essential for two reasons. One is that without escaping the ";" it thinks you are defining something, then going on to issue the tftpboot command right then. Second is that without escaping the "$" it will interpolate the current values for bootaddr and bootfile at the time of definition, rather than defering them until later as I would like.
When I do this, it tells me:
Saving Environment to MMC... Writing to MMC(0)... doneThe following works great and gets all of the boot information from the DHCP server:
setenv bootaddr 0x42000000 setenv boot_kyu echo Booting Kyu via dhcp/tftp\; dhcp\; go \${bootaddr} setenv bootcmd run boot_kyu saveenv
Tom's electronics pages / [email protected]