| USING AM335x NETBOOT FEATURE | 
 |  | 
 |  Some boards (like TI AM335x based ones) have quite big on-chip RAM and | 
 | have support for booting via network in ROM. The following describes | 
 | how to setup network booting and then optionally use this support to flash | 
 | NAND and bricked (empty) board with only a network cable. | 
 |  | 
 |  I. Building the required images | 
 |   1. You have to enable generic SPL configuration options (see | 
 | doc/README.SPL) as well as CONFIG_SPL_NET_SUPPORT, | 
 | CONFIG_ETH_SUPPORT, CONFIG_SPL_LIBGENERIC_SUPPORT and | 
 | CONFIG_SPL_LIBCOMMON_SUPPORT in your board configuration file to build | 
 | SPL with support for booting over the network. Also you have to enable | 
 | the driver for the NIC used and CONFIG_SPL_BOARD_INIT option if your | 
 | board needs some board-specific initialization (TI AM335x EVM does). | 
 | If you want SPL to use some Vendor Class Identifier (VCI) you can set | 
 | one with CONFIG_SPL_NET_VCI_STRING option. am335x_evm configuration | 
 | comes with support for network booting preconfigured. | 
 |  2. Define CONFIG_BOOTCOMMAND for your board to load and run debrick | 
 | script after boot: | 
 | #define CONFIG_BOOTCOMMAND					\ | 
 | 	"setenv autoload no; "					\ | 
 | 	"bootp; "						\ | 
 | 	"if tftp 80000000 debrick.scr; then "			\ | 
 | 		"source 80000000; "				\ | 
 | 	"fi" | 
 | (Or create additional board configuration with such option). | 
 |  3. Build U-Boot as usual | 
 |   $ make <your_board_name> | 
 |     You will need u-boot.img and spl/u-boot.bin images to perform | 
 | network boot. Copy them to u-boot-restore.img and | 
 | u-boot-spl-restore.bin respectively to distinguish this version | 
 | (with automatic restore running) from the main one. | 
 |  | 
 |  II. Host configuration. | 
 |   1. Setup DHCP server (recommended server is ISC DHCPd). | 
 |    - Install DHCP server and setup it to listen on the interface you | 
 | chose to connect to the board (usually configured in | 
 | /etc/default/dhcpd or /etc/default/isc-dhcp-server). Make sure there | 
 | are no other active DHCP servers in the same network segment. | 
 |    - Edit your dhcpd.conf and subnet declaration matching the address | 
 | on the interface. Specify the range of assigned addresses and bootfile | 
 | to use. IMPORTANT! Both RBL and SPL use the image filename provided | 
 | in the BOOTP reply but obviously they need different images (RBL needs | 
 | raw SPL image -- u-boot-spl-restore.bin while SPL needs main U-Boot | 
 | image -- u-boot-restore.img). So you have to configure DHCP server to | 
 | provide different image filenames to RBL and SPL (and possibly another | 
 | one to main U-Boot). This can be done by checking Vendor Class | 
 | Identifier (VCI) set by BOOTP client (RBL sets VCI to "DM814x ROM v1.0" | 
 | and you can set VCI used by SPL with CONFIG_SPL_NET_VCI_STRING option, | 
 | see above). | 
 |    - If you plan to use TFTP server on another machine you have to set | 
 | server-name option to point to it. | 
 |    - Here is sample configuration for ISC DHCPd, assuming the interface | 
 | used to connect to the board is eth0, and it has address 192.168.8.1: | 
 |  | 
 | subnet 192.168.8.0 netmask 255.255.255.0 { | 
 |   range dynamic-bootp 192.168.8.100 192.168.8.199; | 
 |  | 
 |   if substring (option vendor-class-identifier, 0, 10) = "DM814x ROM" { | 
 |     filename "u-boot-spl-restore.bin"; | 
 |   } elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL" { | 
 |     filename "u-boot-restore.img"; | 
 |   } else { | 
 |     filename "uImage"; | 
 |   } | 
 | } | 
 |  | 
 |   2. Setup TFTP server. | 
 |      Install TFTP server and put image files to it's root directory | 
 | (likely /tftpboot or /var/lib/tftpboot or /srv/tftp). You will need | 
 | u-boot.img and spl/u-boot-spl-bin files from U-Boot build directory. | 
 |  | 
 |  III. Reflashing (debricking) the board. | 
 |   1. Write debrick script. You will need to write a script that will | 
 | be executed after network boot to perform actual rescue actions. You | 
 | can use usual U-Boot commands from this script: tftp to load additional | 
 | files, nand erase/nand write to erase/write the NAND flash. | 
 |  | 
 |   2. Create script image from your script. From U-Boot build directory: | 
 |  | 
 | $ ./tools/mkimage -A arm -O U-Boot -C none -T script -d <your script> debrick.scr | 
 |  | 
 | This will create debrick.scr file with your script inside. | 
 |  | 
 |   3. Copy debrick.scr to TFTP root directory. You also need to copy | 
 | there all the files your script tries to load via TFTP. Example script | 
 | loads u-boot.img and MLO. You have to create these files doing regular | 
 | (not restore_flash) build and copy them to tftpboot directory. | 
 |  | 
 |   4. Boot the board from the network, U-Boot will load debrick script | 
 | and run it after boot. |