IBL version 1.0.0.11

Generating the program to create an IBL binary

 * The Release will have a set of binary images for each EVM/SOC supported in both endians


 * Each binary will however have to be customized for an individual use case.


 * Change directory into

cd ibl/src/util/iblConfig/src


 * Now edit the file device.c


 * There are individual functions for each EVM supported in the release. Edit the appropriate function. If multiple EVMs/SOCs are going to be used, then it is better to make the changes for each EVM at this stage


 * Below we depict an example of what to change. Please appropriately change the IP address, the server IP, etc. This will have to be customized for the user's development environment. The index of the bootmode, i.e bootMode[2] or bootMode[1] or bootMode[0] varies between the various EVMs.

ibl.bootModes[2].u.ethBoot.doBootp         = FALSE; ibl.bootModes[2].u.ethBoot.useBootpServerIp = TRUE; ibl.bootModes[2].u.ethBoot.useBootpFileName = TRUE; ibl.bootModes[2].u.ethBoot.bootFormat      = ibl_BOOT_FORMAT_BBLOB;

SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.ipAddr,   158,218,100,116); SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.serverIp, 158,218,100,23); SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.gatewayIp, 158,218,100,2); SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.netmask,  255,255,255,0);


 * In the above case the bootloader will issue a TFTP request. If the user wants to boot using DHCP, then change

ibl.bootModes[2].u.ethBoot.doBootp         = FALSE;

to

ibl.bootModes[2].u.ethBoot.doBootp         = TRUE;


 * Please note that the 6455 does not have an EFUSE MAC address. Hence for every EVM this needs to be different and the MAC address needs to be explicitly given.

/* There is no e-fuse mac address. A value must be assigned */ ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 10; ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 224; ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 166; ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 102; ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 87; ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 25;


 * One other setting that will need to be changed is the filename. Change the filename depending on what the user wants to boot up.

ibl.bootModes[2].u.ethBoot.ethInfo.fileName[0] = 'c'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[1] = '6'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[2] = '6'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[3] = '7'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[4] = '0'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[5] = '-'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[6] = 'l'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[7] = 'e'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[8] = '.'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[9] = 'b'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[10] = 'i'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[11] = 'n'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[12] = '\0'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0'; ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';


 * Save the file once all changes have been made


 * Then issue the command

cd ibl/src/util/iblConfig/build


 * Now issue the following command depending on the EVM


 * There will an iblConfig.out that gets generated.

Create an IBL binary for a given EVM

 * To create a IBL binary for a given use case, please copy the prebuilt IBL binary for the required EVM in the required endian from the releases folder and rename it to ibl.bin. Please Note, you have to rename the IBL to ibl.bin. This binary(ibl.bin) should be in the same folder as the iblConfig.out that was built in the above step. please be in ibl/src/util/iblConfig/build folder at all times.


 * Then issue the command ./iblConfig.out


 * This will generate the required ibl.bin for the given EVM in the required endian

C6457

 * For both Big and Little Endian Boot, SW4 pins 1-4 should represent master I2C Boot Mode.
 * SW4 pins 1-4 should be 1000.
 * The c6457 EVM has a NAND and the bootloader supports both a TFTP boot mode and a NAND boot mode
 * SW3 pin 1 switches between TFTP boot mode and NAND boot mode.
 * For TFTP boot mode SW3 pin 1 should be OFF
 * For NAND boot mode SW3 pin 1 should be ON
 * These settings are depicted below

C6474L

 * For both Big and Little Endian Boot, SW4 pins 1-4 should represent master I2C Boot Mode.
 * SW4 pins 1-4 should be 1000.
 * The C6474L EVM has a UART port and J13 jumper 3-5, 4-6 are connected
 * The c6474l EVM has a NAND and the bootloader supports both a TFTP boot mode and a NAND boot mode
 * SW3 pin 1 switches between TFTP boot mode and NAND boot mode.
 * For TFTP boot mode SW3 pin 1 should be OFF
 * For NAND boot mode SW3 pin 1 should be ON
 * These settings are depicted below

C6472

 * For Little and Big Endian Boot, SW2[1-4] should be 0100, i.e. SW2 should be in master I2C Boot Mode
 * The C6472 EVM has a UART port and J10 jumper 3-5, 4-6 are connected
 * The c6472 EVM has a NAND and the bootloader supports both a TFTP boot mode and a NAND boot mode
 * SW1 pin 1 switches between TFTP boot mode and NAND boot mode.
 * For TFTP boot mode SW1 pin 1 should be OFF
 * For NAND boot mode SW1 pin 1 should be ON
 * These settings are depicted below

C6474

 * For both Big and Little Endian Boot, SW5 pins 1-4 should represent master I2C Boot Mode.
 * SW5 pins 1-4 should be 1000.
 * There seems to be a discrepancy between the docs and the actual switch on the EVM. So to boot of the EEPROM, the SW5 pins 1-4 should be 0111
 * The C6474 supports only TFTP boot
 * These settings are depicted below

DSK6455

 * For Little Endian SW 3 Pin 1 should be OFF and for Big Endian SW 3 Pin 1 should be ON
 * For both Big and Little Endian boot SW3 pin 2 and 4 should be 1, and SW3 pin 3 and 5 must be 0. This represents I2C Master Boot Mode.
 * The DSK6455 Supports only TFTP Boot
 * To initially flash the bootloader, SW3 should be in I2C Slave Mode as shown below.

Hardware setup for c66x EVMs

 * Both the C6670 and C6678 Low cost EVMs are exactly the same w.r.t switch settings.
 * The Endian Switches are given below.


 * When writing the IBL to the EEPROM and the kernel to the NAND, the switch settings should be as follows for both little and big endian.


 * To Use the TFTP boot mode in little endian, the switch settings should be as follows


 * To Use the NAND boot mode in little endian, the switch settings should be as follows


 * To Use the TFTP boot mode in big endian, the switch settings should be as follows


 * To Use the NAND boot mode in big endian, the switch settings should be as follows

Setup for EEPROM writers

 * In the case of the c64x+ devices, EEPROM writers will be provided for both endians.


 * In the case of the c66x devices, EEPROM writers will be provided for only little endian but this can be used to flash a big endian binary.
 * For flashing a big endian bootloader using a little endian writer, keep the EVM in little endian Mode


 * CCS can be used to flash the IBL


 * For each EVM/SOC the following will be required. Make sure that all the following are in the same directory


 * The appropriate EEPROM writer.
 * The ibl.bin that needs to be written to the EEPROM
 * The eepromwriter_input.txt file


 * In the eepromwriter_input.txt file change the file_name and bus_addr appropriately. The bus_addr should be 80 for the c64x+ devices and 81 for the c66x devices.

Steps to flash the Bootloader

 * First keep the EVM in NO BOOT mode
 * Then connect to the EVM
 * Program Load the EEPROM writer and do not execute the program
 * Then do the following
 * Data Load the bootloader(ibl.bin) to memory at location 0x800000 in the case of the c64x+ EEPROM writers.
 * Data Load the bootloader(ibl.bin) to memory at location 0x80000000 in the case of the c66x EEPROM writers.
 * If using the little endian writer enable swap option in CCS. This option should be disabled when using the big endian writer.
 * Now execute the EEPROM writer.

Steps to flash a Kernel Binary to the NAND

 * We will be using the kernel NAND write utility to write a kernel to the NAND
 * Please follow the steps below to write the kernel binary to the NAND flash

flash_eraseall /dev/mtd2

nandwrite -p /dev/mtd2 vmlinux-c6xxx.bin


 * Please take care to flash the appropriate kernel binary to the NAND
 * This procedure assumes that the kernel binary is present in the filesystem

Booting a Kernel

 * After flashing the bootloader to the EEPROM, appropriately change the DIP switch settings to boot from TFTP or NAND in the appropriate I2C Boot Mode.