90 likes | 247 Views
VHDL and C. Booting the TS-7300 boards . Overview . After looking at the general approach to booting machines (generally PCs) we will now look at the TS-7300 board Firstly some general observations on booting embedded boards They quite often don’t have hard drives
E N D
VHDL and C Booting the TS-7300 boards
Overview • After looking at the general approach to booting machines (generally PCs) we will now look at the TS-7300 board • Firstly some general observations on booting embedded boards • They quite often don’t have hard drives • They are frequently low power • Need to drop into background – low power mode • They use un-attended boot mode. • They will use specialised/stripped down kernels.
TS board gotchas • The TS-7300 differs from more commonly found boards in a number of ways • It doesn’t have on-board flash, so there is no real BIOS/BSP to speak of • It boots of an SD (Secure Digital) disc, so it use proprietory code
TS-7300 boot sequence • On power on the ARM EP9302 CPU search for an on board boot device • It can find them in a number of places • FLASH memory • UART (ay 9600 baud!) • SPI interface • It looks for a boot image to run either the OS or a BIOS/BSP
TS-7300 boot sequence • On the TS-7300 board the SPI interface is used to talk with a 2k serial EEPROM • The EEPROM has the string “CRUS” meaning that this is a bit of boot code • The TS board downloads the 2k of code in the EEPROM into on-chip SRAM and executes it.
TS-7300 boot sequence • The EEPROM code does some self testing, sets up SDRAM, bus timing, and Ethernet MAC addresses • There is an (unused on our system) 36 byte security block at the end of the EEPROM that allows many security options. • Passwording • Locking to a specific sdcard
TS-7300 boot sequence • The TS board now loads the boot sector from the SDCard into SDRAM 0x1000 • This code, Thumb mode, is executed and allows access to further SDCard sectors and it loads in the compressed kernel and initrd into memory (the 1st 2 disc partitions)
TS-7300 boot sequence EEPROM SPI ARM CPU EEPROM CODE In SRAM SDCard Boot Sector Partition 1 Partition 2 Partition 3 (rootfs) Compressed kernel SDcard Boot sector Initrd image 0x1000 0x218000 0x1000000 SDRAM Memory
TS-7300 boot sequence • The Compressed kernel code is executed – it decompresses itself and then loads the initrd • The initrd loads in the FPGA image and the kernel drivers for the SDCard • The kernel then mounts the 3rd partition on the SDCard and ‘pivots’ root to it. /sbin/init is started. • The system is now up!