1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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.
|