to fix prsdk 5675
[keystone-rtos/ibl.git] / doc / ibl_single_binary.txt
1 == Generating the program to create an IBL binary ==
3 - The Release will have a set of binary images for each EVM/SOC supported in both endians
4 - Each binary will however have to be customized for an individual use case.
5 - Change directory into
7   cd ibl/src/util/iblConfig/src
9 - Now edit the file device.c
11 - 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
13 - Below we depict an example of what to change. Please appropriately change
14 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. 
16     ibl.bootModes[2].u.ethBoot.doBootp          = FALSE;
17     ibl.bootModes[2].u.ethBoot.useBootpServerIp = TRUE;
18     ibl.bootModes[2].u.ethBoot.useBootpFileName = TRUE;
19     ibl.bootModes[2].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
22     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.ipAddr,    158,218,100,116);
23     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.serverIp,  158,218,100,23);
24     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.gatewayIp, 158,218,100,2);
25     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.netmask,   255,255,255,0);
27 - In the above case the bootloader will issue a TFTP request. If the user wants to boot using DHCP, then change 
29     ibl.bootModes[2].u.ethBoot.doBootp          = FALSE;
31     to
33     ibl.bootModes[2].u.ethBoot.doBootp          = TRUE;
36 - 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.
38     /* There is no e-fuse mac address. A value must be assigned */
39     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 10;
40     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 224;
41     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 166;
42     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 102;
43     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 87;
44     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 25;
46 - One other setting that will need to be changed is the filename. Change the filename depending on what the user wants to boot up. 
48     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[0]  = 'c';
49     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[1]  = '6';
50     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[2]  = '6';
51     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[3]  = '7';
52     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[4]  = '0';
53     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[5]  = '-';
54     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[6]  = 'l';
55     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[7]  = 'e';
56     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[8]  = '.';
57     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[9]  = 'b';
58     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[10] = 'i';
59     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[11] = 'n';
60     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[12] = '\0';
61     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0';
62     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';
64 - Save the file once all changes have been made
66 - Then issue the command
68   cd ibl/src/util/iblConfig/build
70 - Now issue the following command depending on the EVM
72 For DSK6455
73 make EVM=c6455 I2C_MAP_ADDR=0x500
75 For C6474
76 make EVM=c6474 I2C_MAP_ADDR=0x200
78 For C6474L 
79 make EVM=c6474l I2C_MAP_ADDR=0x200
81 For C6457 
82 make EVM=c6457 I2C_MAP_ADDR=0x200
84 For C6472
85 make EVM=c6472 I2C_MAP_ADDR=0x500
87 For C6678 
88 make EVM=c6678l I2C_MAP_ADDR=0x500
90 For C6670 
91 make EVM=c6670l I2C_MAP_ADDR=0x500
93 For C6657
94 make EVM=c6657l I2C_MAP_ADDR=0x500
96 For TCI6634K2K
97 make EVM=tci6634k2k I2C_MAP_ADDR=0x500
99 - There will an '''iblConfig.out''' that gets generated.
101 == Create an IBL binary for a given EVM ==
103 - 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.
105 - Then issue the command ./iblConfig.out
107 - This will generate the required ibl.bin for the given EVM in the required endian