====== Using TFTP and NFS during software development ======
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
To speedup software development process you can configure your [[litesom:liteboard]] to download firmware directly from your //PC workstation// via LAN network.
This howto will guide you how to configure [[litesom:liteboard|liteboard]] to:
- boot ''U-Boot'' from ''uSD card'',
- bring-up [[litesom:liteboard|liteboard]] network interface,
- request IPv4 address from DHCP server,
- download ''kernel image'' and ''device tree blob file'' via TFTP protocol,
- boot ''kernel'',
- mount ''rootfs'' via NFS service.
With this configuration all steps required to deploy new firmware on [[litesom:liteboard]] are limited to the absolute minimum:
- build new firmware,
- install new ''kernel image'' and ''device tree blob file'' in TFTP directory,
- install new ''rootfs'' in NFS directory,
- reboot [[litesom:liteboard]].
Because Buildroot can be configured to execute 2nd and 3rd steps as post-build action therefore in most cases deploy process will look like:
- build new firmware,
- reboot [[litesom:liteboard]].
====== PC workstation configuration ======
This howto was tested on [[https://wiki.debian.org/DebianStretch|Debian 9]] (codename Stretch).
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)
Please adjust IP address (here ''10.42.0.1'') and netmask (here ''255.255.255.0'') to your network configuration.
If your [[litesom:liteboard|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 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
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:about|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/ bs=4M
sync
If you need more help with this step please read [[litesom:buildroot:quick_start|Buildroot quick start]] howto.
By default ''sdcard.img'' file contains complete configuration to boot [[litesom:liteboard|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 [[litesom:liteboard|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 [[litesom:liteboard|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 [[litesom:liteboard|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 [[litesom:liteboard|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 [[litesom:liteboard|liteboard]] to boot & run will be updated.
====== Liteboard configuration ======
By default [[litesom:liteboard|liteboard]] is configured to download and run all software from ''uSD'' card. This configuration can be changed via ''U-Boot environment variables''.
Once [[litesom:liteboard|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 [[litesom:liteboard|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'' - [[litesom:liteboard|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 [[litesom:liteboard|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
[ 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 [[litesom:liteboard|liteboard]] will always use TFTP/NFS after reboot.