I'm trying to do the NAND flash I2C example as depicted in the following file : C:\Program Files\Texas Instruments\mcsdk_2_00_05_17\tools\boot_loader\examples\i2c\nand\docs\README.txt: NAND boot over I2C example
The steps to built and run the example succeed :
NAND Boot Over I2C Example Version 01.00.00.00
Booting Hello World image from NAND flash via IBL over I2C 0x51 ...IBL: PLL and DDR Initialization Complete
I passed the steps to program the EEPROM and the NAND
Unfortunately, the result of the boot is not the "Hello world" I expected !!!
IBL Result code 00 IBL: Booting from NAND Linux version 2.6.34-evmc6678.el-20110504 (firstname.lastname@example.org) (gcc version 4.5.1 (Sourcery G++ Lite 4.5-109) ) #1 Wed May 4 11:14:47 EDT 2011 Designed for the EVMC6678 board, Texas Instruments. CPU0: C66x rev 0x0, 1.2 volts, 1000MHz Initializing kernel Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyS0,115200 initrd=0x80400000,0x300000 ip=dhcp rw PID hash table entries: 2048 (order: 1, 8192 bytes) ..............
IP-Config: Auto-configuration of network failed. Freeing unused kernel memory: 140K freed starting pid 17, tty '': '/etc/rc.sysinit'
Mounting proc filesystem: done. Mounting other filesystems: done. Starting mdev Setting hostname localhost: done. Bringing up loopback interface: done. Starting inetd: done.
eth0 Link encap:Ethernet HWaddr 90:D7:EB:95:49:2B BROADCAST ALLMULTI MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:7080 (6.9 KiB) Interrupt:48
starting pid 54, tty '/dev/console': '/bin/sh' / #
It seems that the instructions given in the README.txt file, changing "tools\boot_loader\ibl\src\make\bin\i2cConfig.gel" to ibl_BOOT_FORMAT_ELF doesn't take effect.
I read the following topic on forum : http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/113883.aspx=> I identify a Configure IBL step that is not depicted in the readme.txt file :
Configure IBL Terminate previous debug session (load IBL session) Power-down EVM Power-up EVM Boot pins still set to little endian "No Boot" Launch the EVM6678 target configuration Load the evm6678l.gel file that accompanied the CCSv5.02 patch Wait for memory map setup to complete
Connect to Core 0 Wait for GEL initialization sequence to finish Load Core 0 with <MCSDK_beta2>\tools\boot_loader\ibl\src\util\i2cConfig\i2cparam_c661x_le.out Load GEL file <MCSDK_beta2>\tools\boot_loader\ibl\src\util\i2cConfig\i2cConfig.gel Run the i2cparam_c661x_le.out program Run the EVM c6678 IBL -> setConfig_c6678_main GEL script Press "Enter" ===Program states that the I2C table write completed
Is it necessary ?If yes, how to load a gel file with CCV5 : only when associated with core on target configuration ?
Other question : Where "tools\boot_loader\ibl\src\make\bin\i2cConfig.gel" is it taken into account ? by the make evm_c6678_i2c CTRL or somewhere else ?
Any other idea to solve my problem ?
The gel file i2cConfig.gel is needed to change the IBL boot params table stored in EEPROM 0x51 address directory and it works along with i2cparam_c661x_le.out executable. The idea is param table can be changed to the settings as per the gel file settings by executing i2cparam_c661x_le.out program.
You can refer to "Loading and Setting up the EVM with the Gel file" section of the BIOS MCSDK user guide which describes an example gel file to load on to the EVM . http://processors.wiki.ti.com/index.php/BIOS_MCSDK_2.0_Getting_Started_Guide#Use_JTAG_to_Load_the_Application . Similar method can be used to load the i2cConfig.gel file located under "tools\boot_loader\ibl\src\make\bin\i2cConfig.gel".
finally, I have succeed more easily to change the configuration of the IBL by changing the /ibl/src/util/iblconfig/src/device.c file and compiling the IBL, flashing the EEPROM.=> No need of the gel file, one less operation with CCV5.
But I didn't succeed to boot from NAND the Hello world example.
I have added traces with "uart_write_string (...)" calls on the iblmain.c and dload.c file: => I go to the iblBootElf(...) function from elfwrap.c=> I go to the DLOAD_load(...) function from dload.c=> but the (!dload_headers(fd, dyn_module)) returns FALSE.
=> I suppose that THE HELLO WORLD flashing in the NAND FLASH is not at the right place or not at the right format ? I have followed the example : - Copying the .out into app.bin.- loading the file on 0x80000000 DDR2 memory adresse.
As the .map file of the Hello world example give the memory for the program to be 0x0082000 :
OUTPUT FILE NAME: <../bin/i2cnandboot_evm6678l.out> ENTRY POINT SYMBOL: "_c_int00" address: 0086cda0
name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- L2SRAM 00820000 000e0000 000573b6 00088c4a RW X L1PSRAM 00e00000 00007fff 00000000 00007fff RW X L1DSRAM 00f00000 00007fff 00000000 00007fff RW X MSMCSRAM 0c000000 00200000 00000000 00200000 RW X DDR3 80000000 10000000 00000000 10000000 RW X
, I put this value in the nand_writer_input.txt file :
file_name = app.bin start_addr = 8519680
The Nand Writer help file refers to a start_addr 16384. What is the right value ?
Does somebody really try this example with the EVM 6678 ?
After a rough effort to make a code composer project of the Boot program, I finally find the trouble : It was a confusion with the start adress in the nandwriter_input.txt.
=> The start adress must be 0x4000 (It is 0x000 for NOR writer).
Good to hear that your problem is resolved.
regarding the change of i2cparams there are multiple ways.
1. change the device.c source file itself and rebuild IBL (like you did here, you need to have the IBL build environment).
2. Use the i2cConfig.gel along with a DSP executable (Advantage is you don't need IBL build environment and the change happens in the target itself).
3. We would be providing a configuration tool which would change the configuration parameters of the ibl image (either released/rebuilt). Later you can use the program_evm script to flash the image to eeprom 0x51. (Currently release 2.0.5 has an issue, where this tool is not prebuilt).
Hello GAUTHIER Jean-Michel,
I was trying to work the same in windows environment. I have provided the screen shot of the output here.
My boot switch are
Switch 1 2 3 4
sw3 off off on off
sw4 off off on on (if i change this setting to on off on on, as provided in the readme.txt, then no output).
sw5 on on on off
sw6 on on on on
Since you have already tried this and succeed, kindly provide me with some inputs.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.