Hi ,all
I am testing bootloader of my PCB which has two c6678 PG1.0. My PCB has the same EEPROM and NAND flash asTMDXEVM6678LE and the CORE_CLK is 100MHz , DDR_CLK is 66.667Mhz
I wrote a UART test program and I'm trying using IBL boot from NAND flash. The bootmode of the DSPs is controlled by FPGA.
The steps are as follows:
1.Set the bootmode as Noboot
in the fpga I wrote verilog as follows:
assign DSP_GPIO_00 = 1 ; //Little Endian
assign DSP_GPIO_01 = 0 ; //BootMode00 1
assign DSP_GPIO_02 = 0 ; //BootMode01
assign DSP_GPIO_03 = 0 ; //BootMode02
assign DSP_GPIO_04 = 0 ; //BootMode03
assign DSP_GPIO_05 = 0 ; //BootMode04
assign DSP_GPIO_06 = 0 ; //BootMode05
assign DSP_GPIO_07 = 0 ; //BootMode06
assign DSP_GPIO_08 = 0 ; //BootMode07
assign DSP_GPIO_09 = 0 ; //BootMode08
assign DSP_GPIO_10 = 0 ; //BootMode09
assign DSP_GPIO_11 = 0 ; //BootMode10
assign DSP_GPIO_12 = 0 ; //BootMode11
assign DSP_GPIO_13 = 0 ; //BootMode12
assign DSP_GPIO_14 = 0 ;
assign DSP_GPIO_15 = 0 ;
I just assign the pin to the 1 or 0 to set the bootmode and use little endian.
2.use eeprom and nand writer program from" mcsdk_2_01_02_06\tools\writer"
follow the steps in the documents:
1st:write the i2crom_0x51_c6678_le.bin to EEPROM
2nd:modify language in i2cConfig.gel :
in section hotmenu setConfig_c6678_main():
modify ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_BBLOB;
as ibl.bootModes[1].u.nandBoot.bootFormat = ibl_BOOT_FORMAT_ELF;
and write parameter table to the EEPROM.
3rd:use NAND writer write my test program to the NAND flash.
the logs are as follow:
[C66xx_0] EEPROM Writer Utility Version 01.00.00.05
Writing 52072 bytes from DSP memory address 0x0c000000 to EEPROM bus address 0x0051 starting from device address 0x0000 ...
Reading 52072 bytes from EEPROM bus address 0x0051 to DSP memory address 0x0c010000 starting from device address 0x0000 ...
Verifying data read ...
EEPROM programming completed successfully
&
Run the GEL for for the device to be configured, press return to program the I2C
I2c table write complete
&
[C66xx_0] NAND Writer Utility Version 01.00.00.01
Flashing block 1 (0 bytes of 219356)
Flashing block 2 (16384 bytes of 219356)
Flashing block 3 (32768 bytes of 219356)
Flashing block 4 (49152 bytes of 219356)
Flashing block 5 (65536 bytes of 219356)
Flashing block 6 (81920 bytes of 219356)
Flashing block 7 (98304 bytes of 219356)
Flashing block 8 (114688 bytes of 219356)
Flashing block 9 (131072 bytes of 219356)
Flashing block 10 (147456 bytes of 219356)
Flashing block 11 (163840 bytes of 219356)
Flashing block 12 (180224 bytes of 219356)
Flashing block 13 (196608 bytes of 219356)
Flashing block 14 (212992 bytes of 219356)
Reading and verifying block 1 (0 bytes of 219356)
Reading and verifying block 2 (16384 bytes of 219356)
Reading and verifying block 3 (32768 bytes of 219356)
Reading and verifying block 4 (49152 bytes of 219356)
Reading and verifying block 5 (65536 bytes of 219356)
Reading and verifying block 6 (81920 bytes of 219356)
Reading and verifying block 7 (98304 bytes of 219356)
Reading and verifying block 8 (114688 bytes of 219356)
Reading and verifying block 9 (131072 bytes of 219356)
Reading and verifying block 10 (147456 bytes of 219356)
Reading and verifying block 11 (163840 bytes of 219356)
Reading and verifying block 12 (180224 bytes of 219356)
Reading and verifying block 13 (196608 bytes of 219356)
Reading and verifying block 14 (212992 bytes of 219356)
NAND programming completed successfully
It displays all are OK
But when I set the bootmode as I2C mode:
assign DSP_GPIO_00 = 1 ; //Little Endian
assign DSP_GPIO_01 = 1 ; //BootMode00 1
assign DSP_GPIO_02 = 0 ; //BootMode01
assign DSP_GPIO_03 = 1 ; //BootMode02 1
assign DSP_GPIO_04 = 0 ; //BootMode03
assign DSP_GPIO_05 = 1 ; //BootMode04 1
assign DSP_GPIO_06 = 0 ; //BootMode05
assign DSP_GPIO_07 = 0 ; //BootMode06
assign DSP_GPIO_08 = 0 ; //BootMode07
assign DSP_GPIO_09 = 0 ; //BootMode08
assign DSP_GPIO_10 = 0 ; //BootMode09
assign DSP_GPIO_11 = 1 ; //BootMode10 1
assign DSP_GPIO_12 = 0 ; //BootMode11
assign DSP_GPIO_13 = 0 ; //BootMode12
assign DSP_GPIO_14 = 0 ;
assign DSP_GPIO_15 = 0 ;
DSP does not boot from NAND properly and I enter DEBUG mode see the Device Status Register(0x02620020) is always 0x00000021
and the BOOTCOMPLETE(0x0262013C) reg is 0x00000001
but the same operation on my TMDXEVM6678LE board all OK, and the Device Status Register is 0x0000082B, this is right.
then I use Oscilloscope see the SDA pin of the eeprom when power on , and from comparison I found the data from the EEPROM of my board is less than that from the TMDXEVM6678LE.
I dont know where the problem is ???
please help me !
Thanks very much!!!