Using TFTP and NFS during software development
<uml> hide footbox box “liteboard” participant liteSOM as liteboard participant uSD as sd end box box “PC workstation” participant "TFTP\nserver" as tftp participant "NFS\nserver" as nfs end box →> liteboard : reset activate liteboard liteboard → sd : get bootloader activate sd sd –> liteboard : U-Boot deactivate sd liteboard → liteboard : run bootloader liteboard → tftp : get kernel image activate tftp tftp –> liteboard : zImage deactivate tftp liteboard → tftp : get device tree activate tftp tftp –> liteboard : liteboard.dtb deactivate tftp liteboard → liteboard : run kernel liteboard → nfs : mount rootfs activate nfs nfs –> liteboard loop operations on rootfs liteboard -> nfs nfs --> liteboard end loop </uml> |
To speedup software development process you can configure your liteboard to download firmware directly from your PC workstation via LAN network. This howto will guide you how to configure liteboard to:
With this configuration all steps required to deploy new firmware on liteboard are limited to the absolute minimum:
Because Buildroot can be configured to execute 2nd and 3rd steps as post-build action therefore in most cases deploy process will look like:
|
PC workstation configuration
If you are using non Debian based distribution please modify all apt-get …
commands accordingly to the package manager used on your system.
TFTP server
To install TFTP server please run following command
sudo apt-get install tftpd-hpa
sudo apt-get install tftpd-hpa Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: pxelinux The following NEW packages will be installed: tftpd-hpa 0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded. Need to get 50.2 kB of archives. After this operation, 121 kB of additional disk space will be used. Get:1 http://ftp.pl.debian.org/debian stretch/main amd64 tftpd-hpa amd64 5.2+20150808-1+b1 [50.2 kB] Fetched 50.2 kB in 0s (236 kB/s) Preconfiguring packages ... Selecting previously unselected package tftpd-hpa. (Reading database ... 361203 files and directories currently installed.) Preparing to unpack .../tftpd-hpa_5.2+20150808-1+b1_amd64.deb ... Unpacking tftpd-hpa (5.2+20150808-1+b1) ... Setting up tftpd-hpa (5.2+20150808-1+b1) ... Processing triggers for systemd (232-25) ... Processing triggers for man-db (2.7.6.1-2) ..
On success on your PC workstation you should see new directory /srv/tftp
- this directory is shared via TFTP server.
NFS server
To install NFS server please run following command
sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-kernel-server Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: nfs-kernel-server 0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded. Need to get 124 kB of archives. After this operation, 334 kB of additional disk space will be used. Get:1 http://ftp.pl.debian.org/debian stretch/main amd64 nfs-kernel-server amd64 1:1.3.4-2.1 [124 kB] Fetched 124 kB in 0s (283 kB/s) Selecting previously unselected package nfs-kernel-server. (Reading database ... 361218 files and directories currently installed.) Preparing to unpack .../nfs-kernel-server_1%3a1.3.4-2.1_amd64.deb ... Unpacking nfs-kernel-server (1:1.3.4-2.1) ... Setting up nfs-kernel-server (1:1.3.4-2.1) ... Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /lib/systemd/system/nfs-server.service. Job for nfs-server.service failed because the control process exited with error code. See "systemctl status nfs-server.service" and "journalctl -xe" for details. nfs-server.service couldn't start. Creating config file /etc/exports with new version Creating config file /etc/default/nfs-kernel-server with new version Processing triggers for systemd (232-25) ... Processing triggers for man-db (2.7.6.1-2) ...
On success new file /etc/exports
will be added. This file contains configuration for all directories exported via NFS.
To share your PC workstation directory via NFS you have to create it first.
sudo mkdir /srv/myproject
To share /nfs/myproject
directory via NFS server please edit /etc/exports
file and append following line
/srv/myproject 10.42.0.1/255.255.255.0(rw,no_subtree_check,no_root_squash)
10.42.0.1
) and netmask (here 255.255.255.0
) to your network configuration.
If your liteboard is connected directly to your PC workstation via (for example) eth0
interface you can check current configuration via ifconfig eth0
command, like presented below.
$ sudo ifconfig eth0 eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 10.42.0.1 netmask 255.255.255.0 broadcast 10.42.0.255 inet6 fe80::d715:5cc:9b4d:d289 prefixlen 64 scopeid 0x20<link> ether d4:be:d9:1b:19:07 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 356 (356.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 20 memory 0xe6700000-e6720000
If you are using different LAN configuration please contact your network administrator for support.
After changes in /etc/exports
file you should trigger NFS server to apply configuration from this file.
sudo exportfs -a sudo exportfs -rv
Now your /srv/myproject
directory is shared via NFS server.
Buildroot
After successful build buildroot/output/images
directory contains following files:
boot.vfat
,imx6ul-liteboard.dtb
,rootfs.ext2
,rootfs.ext4
,rootfs.tar
,sdcard.img
,SPL
,u-boot.bin
,u-boot.img
,zImage
.
This directory contains everything what is needed to configure TFTP and NFS services.
U-Boot
U-Boot
is the only one application which must be loaded by liteSOM from uSD
card.
The easiest way to install U-Boot
on uSD
card is to copy complete sdcard.img
to it, like presented below.
sudo dd if=output/images/sdcard.img of=/dev/<SD card> bs=4M sync
By default sdcard.img
file contains complete configuration to boot liteboard directly from uSD
card, later on we will change U-Boot
configuration and the rest of the software (i.e. everything except U-Boot
) will be loaded directly from your PC workstation.
Kernel + Device tree
Kernel image
and device tree blob file
must be accessible by the liteboard via TFTP protocol, therefore both files must be copied to /srv/tftp
directory.
sudo cp output/images/zImage /srv/tftp/ sudo cp output/images/imx6ul-liteboard.dtb /srv/tftp/
ROOT filesystem
To allow liteboard to mount rootfs
via NFS we have to extract rootfs.tar
file to /srv/myproject
directory like presented below.
sudo tar -xavf output/images/rootfs.tar -C /srv/myproject/
Buildroot post compilation action
After each build you have to perform following steps to update firmware shared with your liteboard:
sudo cp output/images/zImage /srv/tftp/ sudo cp output/images/imx6ul-liteboard.dtb /srv/tftp/ sudo tar -xavf output/images/rootfs.tar -C /srv/myproject/
All those steps can be performed automatically by the Buildroot via script defined by BR2_ROOTFS_POST_IMAGE_SCRIPT
option.
For the liteboard BR2_ROOTFS_POST_IMAGE_SCRIPT
points to board/grinn/liteboard/post-image.sh
file which is responsible for sdcard.img
generation
#!/usr/bin/env bash BOARD_DIR="$(dirname $0)" GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" rm -rf "${GENIMAGE_TMP}" genimage \ --rootpath "${TARGET_DIR}" \ --tmppath "${GENIMAGE_TMP}" \ --inputpath "${BINARIES_DIR}" \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}"
You can append to this file all TFTP/NFS related actions
sudo cp -f ${BINARIES_DIR}/zImage /srv/tftp/zImage sudo cp -f ${BINARIES_DIR}/imx6ul-liteboard.dtb /srv/tftp/imx6ul-liteboard.dtb sudo tar -xavf ${BINARIES_DIR}/rootfs.tar -C /srv/myproject
#!/usr/bin/env bash BOARD_DIR="$(dirname $0)" GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" TFTP_DIR=/srv/tftp NFS_DIR=/srv/myproject rm -rf "${GENIMAGE_TMP}" genimage \ --rootpath "${TARGET_DIR}" \ --tmppath "${GENIMAGE_TMP}" \ --inputpath "${BINARIES_DIR}" \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}" sudo cp -f ${BINARIES_DIR}/zImage ${TFTP_DIR}/zImage sudo cp -f ${BINARIES_DIR}/imx6ul-liteboard.dtb ${TFTP_DIR}/imx6ul-liteboard.dtb sudo tar -xavf ${BINARIES_DIR}/rootfs.tar -C ${NFS_DIR}
With this configuration always after make all
all files used by the liteboard to boot & run will be updated.
Liteboard configuration
By default liteboard is configured to download and run all software from uSD
card. This configuration can be changed via U-Boot environment variables
.
Once liteboard is started you should see U-Boot
output.
U-Boot SPL 2017.01 (May 04 2017 - 18:54:17) Trying to boot from MMC1 U-Boot 2017.01 (May 04 2017 - 18:54:17 +0000), Build: jenkins-Buildroot-liteboard-release-9 CPU: Freescale i.MX6UL rev1.1 528 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 42C Reset cause: POR Board: Grinn liteBoard DRAM: 256 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial switch to partitions #0, OK mmc0 is current device Net: FEC [PRIME] Error: FEC address not set. Hit any key to stop autoboot: 1
As suggested by the last line default autoboot
procedure can be halted by any key.
Once it is terminated you will see U-Boot
prompt with enabled CLI.
Hit any key to stop autoboot: 0 =>
Network boot procedure is defined by two variables netargs
and netboot
:
=> printenv netargs netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
=> printenv netboot netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} ;
To configure TFTP/NFS services at liteboard side we have to define few parameters:
serverip
- your PC workstation IP address,
setenv serverip 10.42.0.1
nfsroot
- rootfs
directory shared via NFS,
setenv nfsroot /srv/myproject
ethaddr
- liteboard MAC address (1A:4D:47:59:F6:24
is an example).
setenv ethaddr 1A:4D:47:59:F6:24
All variables configured like presented above are stored in RAM memory, i.e. after reset they are uninitialized. To save them permanently please use saveenv
command.
=> saveenv Saving Environment to MMC... Writing to MMC(0)... done
Booting liteboard via TFTP/NFS
To boot liteboard via TFTP and NFS you can use U-Boot
netboot
command
=> run netboot Booting from net ...
This command will:
1. download kernel image
via TFTP protocol
BOOTP broadcast 1 DHCP client bound to address 10.42.0.158 (9 ms) Using FEC device TFTP from server 10.42.0.1; our IP address is 10.42.0.158 Filename 'zImage'. Load address: 0x82000000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ############################### 2.3 MiB/s done Bytes transferred = 6176776 (5e4008 hex)
2. download device tree blob file
via TFTP protocol
BOOTP broadcast 1 DHCP client bound to address 10.42.0.158 (13 ms) Using FEC device TFTP from server 10.42.0.1; our IP address is 10.42.0.158 Filename 'imx6ul-liteboard.dtb'. Load address: 0x83000000 Loading: ## 1.8 MiB/s done Bytes transferred = 21230 (52ee hex)
3. boot kernel
with rootfs
mounted via NFS
## Flattened Device Tree blob at 83000000 Booting using the fdt blob at 0x83000000 Using Device Tree in place at 83000000, end 830082ed Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.9.2 (jenkins@jenkins) (gcc version 5.4.0 (Buildroot 2017.02.2) ) #1 SMP Thu May 4 18:58:02 UTC 2017 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt:Machine model: Grinn i.MX6UL liteBoard [ 0.000000] cma: Reserved 16 MiB at 0x8f000000 [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] percpu: Embedded 14 pages/cpu @cedd2000 s26728 r8192 d22424 u57344 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 [ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/nfs ip=dhcp nfsroot=10.42.0.1:/srv/myproject,v3,tcp [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Memory: 221280K/262144K available (9216K kernel code, 460K rwdata, 2976K rodata, 1024K init, 8237K bss, 24480K reserved, 16384K cma-reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xd0800000 - 0xff800000 ( 752 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc0a00000 (10208 kB) [ 0.000000] .init : 0xc0d00000 - 0xc0e00000 (1024 kB) [ 0.000000] .data : 0xc0e00000 - 0xc0e73140 ( 461 kB) [ 0.000000] .bss : 0xc0e75000 - 0xc1680454 (8238 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Running RCU self tests [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU lockdep checking is enabled. [ 0.000000] Build-time adjustment of leaf fanout to 32. [ 0.000000] RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=1 [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] Switching to timer-based delay loop, resolution 41ns [ 0.000017] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns [ 0.000061] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.002500] Console: colour dummy device 80x30 [ 0.002572] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.002594] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.002614] ... MAX_LOCK_DEPTH: 48 [ 0.002633] ... MAX_LOCKDEP_KEYS: 8191 [ 0.002652] ... CLASSHASH_SIZE: 4096 [ 0.002672] ... MAX_LOCKDEP_ENTRIES: 32768 [ 0.002691] ... MAX_LOCKDEP_CHAINS: 65536 [ 0.002710] ... CHAINHASH_SIZE: 32768 [ 0.002730] memory used by lock dependency info: 5167 kB [ 0.002750] per task-struct memory footprint: 1536 bytes [ 0.002834] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000) [ 0.002881] pid_max: default: 32768 minimum: 301 [ 0.003623] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.003659] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.007977] CPU: Testing write buffer coherency: ok [ 0.009681] /cpus/cpu@0 missing clock-frequency property [ 0.009731] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.009803] Setting up static identity map for 0x80100000 - 0x80100070 [ 0.017521] Brought up 1 CPUs [ 0.017565] SMP: Total of 1 processors activated (48.00 BogoMIPS). [ 0.017588] CPU: All CPU(s) started in SVC mode. [ 0.021998] devtmpfs: initialized [ 0.064018] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 0.065934] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.068052] pinctrl core: initialized pinctrl subsystem [ 0.076487] NET: Registered protocol family 16 [ 0.083369] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.092715] cpuidle: using governor menu [ 0.161124] No ATAGs? [ 0.161225] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.161259] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.168408] imx6ul-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver [ 0.322252] mxs-dma 1804000.dma-apbh: initialized [ 0.330028] vgaarb: loaded [ 0.332247] SCSI subsystem initialized [ 0.335516] usbcore: registered new interface driver usbfs [ 0.335979] usbcore: registered new interface driver hub [ 0.336581] usbcore: registered new device driver usb [ 0.339022] Linux video capture interface: v2.00 [ 0.339590] pps_core: LinuxPPS API ver. 1 registered [ 0.339621] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.339743] PTP clock support registered [ 0.341836] Advanced Linux Sound Architecture Driver Initialized. [ 0.348220] Bluetooth: Core ver 2.22 [ 0.348471] NET: Registered protocol family 31 [ 0.348501] Bluetooth: HCI device and connection manager initialized [ 0.348655] Bluetooth: HCI socket layer initialized [ 0.348721] Bluetooth: L2CAP socket layer initialized [ 0.349182] Bluetooth: SCO socket layer initialized [ 0.356632] clocksource: Switched to clocksource mxc_timer1 [ 0.358009] VFS: Disk quotas dquot_6.6.0 [ 0.358346] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.433874] NET: Registered protocol family 2 [ 0.437959] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [ 0.438101] TCP bind hash table entries: 2048 (order: 4, 73728 bytes) [ 0.439905] TCP: Hash tables configured (established 2048 bind 2048) [ 0.440264] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 0.440769] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 0.442949] NET: Registered protocol family 1 [ 0.445709] RPC: Registered named UNIX socket transport module. [ 0.445759] RPC: Registered udp transport module. [ 0.445785] RPC: Registered tcp transport module. [ 0.445811] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.455793] futex hash table entries: 256 (order: 2, 16384 bytes) [ 0.461155] workingset: timestamp_bits=30 max_order=16 bucket_order=0 [ 0.523263] NFS: Registering the id_resolver key type [ 0.523709] Key type id_resolver registered [ 0.523748] Key type id_legacy registered [ 0.524055] jffs2: version 2.2. (NAND) �© 2001-2006 Red Hat, Inc. [ 0.529180] fuse init (API version 7.26) [ 0.553604] io scheduler noop registered [ 0.553654] io scheduler deadline registered [ 0.554857] io scheduler cfq registered (default) [ 0.570817] imx-sdma 20ec000.sdma: Direct firmware load for imx/sdma/sdma-imx6q.bin failed with error -2 [ 0.570887] imx-sdma 20ec000.sdma: external firmware not found, using ROM firmware [ 0.596163] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 18, base_baud = 5000000) is a IMX [ 1.264609] console [ttymxc0] enabled [ 1.274943] [drm] Initialized [ 1.366894] brd: module loaded [ 1.417610] loop: module loaded [ 1.434067] libphy: Fixed MDIO Bus: probed [ 1.440929] CAN device driver interface [ 1.448820] 2188000.ethernet supply phy not found, using dummy regulator [ 1.460219] pps pps0: new PPS source ptp0 [ 1.467120] libphy: fec_enet_mii_bus: probed [ 1.481814] fec 2188000.ethernet eth0: registered PHC device 0 [ 1.491238] usbcore: registered new interface driver asix [ 1.497367] usbcore: registered new interface driver ax88179_178a [ 1.503817] usbcore: registered new interface driver cdc_ether [ 1.510338] usbcore: registered new interface driver net1080 [ 1.516365] usbcore: registered new interface driver cdc_subset [ 1.522920] usbcore: registered new interface driver zaurus [ 1.529256] usbcore: registered new interface driver cdc_ncm [ 1.534967] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.541620] ehci-pci: EHCI PCI platform driver [ 1.546586] ehci-mxc: Freescale On-Chip EHCI Host driver [ 1.553499] usbcore: registered new interface driver usb-storage [ 1.571100] ci_hdrc ci_hdrc.0: EHCI Host Controller [ 1.577064] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 [ 1.606740] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00 [ 1.622028] hub 1-0:1.0: USB hub found [ 1.626310] hub 1-0:1.0: 1 port detected [ 1.641034] mousedev: PS/2 mouse device common for all mice [ 1.651650] input: 20cc000.snvs:snvs-powerkey as /devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0 [ 1.677079] snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-r as rtc0 [ 1.686243] i2c /dev entries driver [ 1.691694] IR NEC protocol handler initialized [ 1.696304] IR RC5(x/sz) protocol handler initialized [ 1.701534] IR RC6 protocol handler initialized [ 1.706119] IR JVC protocol handler initialized [ 1.710763] IR Sony protocol handler initialized [ 1.715433] IR SANYO protocol handler initialized [ 1.720244] IR Sharp protocol handler initialized [ 1.724998] IR MCE Keyboard/mouse protocol handler initialized [ 1.730931] IR XMP protocol handler initialized [ 1.750760] imx2-wdt 20bc000.wdog: timeout 60 sec (nowayout=0) [ 1.757229] Bluetooth: HCI UART driver ver 2.3 [ 1.761729] Bluetooth: HCI UART protocol H4 registered [ 1.766996] Bluetooth: HCI UART protocol LL registered [ 1.773999] sdhci: Secure Digital Host Controller Interface driver [ 1.780323] sdhci: Copyright(c) Pierre Ossman [ 1.784723] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.793234] sdhci-esdhc-imx 2190000.usdhc: Got CD GPIO [ 1.867845] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA [ 1.945747] mmc0: host does not support reading read-only switch, assuming write-enable [ 1.959178] mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA [ 1.967896] mmc0: new high speed SDHC card at address 3907 [ 1.982679] usbcore: registered new interface driver usbhid [ 1.988449] usbhid: USB HID core driver [ 1.995423] mmcblk0: mmc0:3907 SE04G 3.64 GiB [ 2.014255] mmcblk0: p1 p2 [ 2.081055] NET: Registered protocol family 10 [ 2.094092] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 2.101784] random: fast init done [ 2.112221] NET: Registered protocol family 17 [ 2.116962] can: controller area network core (rev 20120528 abi 9) [ 2.126155] NET: Registered protocol family 29 [ 2.134688] can: raw protocol (rev 20120528) [ 2.141049] mmc1: new DDR MMC card at address 0001 [ 2.146921] can: broadcast manager protocol (rev 20161123 t) [ 2.152711] can: netlink gateway (rev 20130117) max_hops=1 [ 2.161821] mmcblk1: mmc1:0001 MMC02G 1.79 GiB [ 2.168604] Key type dns_resolver registered [ 2.178526] mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB [ 2.187611] cpu cpu0: dev_pm_opp_get_opp_count: OPP table not found (-19) [ 2.197301] mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB [ 2.205083] mmcblk1rpmb: mmc1:0001 MMC02G partition 3 128 KiB [ 2.215620] Registering SWP/SWPB emulation handler [ 2.330804] snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01 04:15:27 UTC (15327) [ 2.449858] Generic PHY 2188000.ethernet:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=2188000.ethernet:00, irq=-1) [ 2.462916] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 4.573299] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx [ 4.583032] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 4.609608] Sending DHCP requests ., OK [ 4.650334] IP-Config: Got DHCP answer from 10.42.0.1, my address is 10.42.0.158 [ 4.658022] IP-Config: Complete: [ 4.661364] device=eth0, hwaddr=1a:4d:47:59:f6:24, ipaddr=10.42.0.158, mask=255.255.255.0, gw=10.42.0.1 [ 4.671410] host=10.42.0.158, domain=, nis-domain=(none) [ 4.677341] bootserver=10.42.0.1, rootserver=10.42.0.1, rootpath= nameserver0=10.42.0.1 [ 4.693408] vdd3p0: disabling [ 4.696715] ALSA device list: [ 4.699735] No soundcards found. [ 4.804533] VFS: Mounted root (nfs filesystem) readonly on device 0:12. [ 4.818024] devtmpfs: mounted [ 4.825557] Freeing unused kernel memory: 1024K (c0d00000 - c0e00000) Starting logging: OK Initializing random number generator... done. Starting network: ip: RTNETLINK answers: File exists Skipping eth0, used for NFS from 10.42.0.1 FAIL Welcome to Buildroot buildroot login:
Autostart via TFTP/NFS
Instead of entered manually run netboot
command , you can overwrite bootcmd
command used by U-Boot
after reboot
=> setenv bootcmd run netboot
and then
=> saveenv Saving Environment to MMC... Writing to MMC(0)... done
With this configuration liteboard will always use TFTP/NFS after reboot.