This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 NAND boot



做这个的目的是想学习一下整个boot的过程。但是没有成功,以下是我的操作步骤,请帮忙看下哪个环节出了问题,非常感谢!

 首先,我使用的软硬件是:mcsdk_2_00_04_16   ccs_base_5.0.3.00023  evm6678LE

   我自己写了一个板子上LED灯闪烁的程序作为例程,烧入NAND中,用来判断Boot是否成功。 附件的LedTest.rar就是程序。测试程序没有问题后:

生成应用程序的二进制文件,烧入NAND中。

1、将LedTest.rar转换成bin文件

     tiobj2bin.bat LedTest.out LedTest.bin ofd6x.exe hex6x.exe mkhex4bin.exe  

     其中tiobj2bin.bat是在Texas Instruments\cg_xml\ofd 目录下

             ofd6x.exe和hex6x.exe在 Texas Instruments\ccsv5\tools\compiler\c6000\bin 目录下

              mkhex4bin.exe在 Texas Instruments\cg_xml\bin 目录下

2、将LedTest.bin文件写入NAND中。

     使用mcsdk_2_00_04_16\tools\writer\nand\evmc6678l\bin\nandwriter_evm6678l.out

     其中nand_writer_input.txt文件的内容为

     file_name  = LedTest.bin
     start_addr = 16384

将IBL烧入EEPROM中

1、将i2crom_0x51_c6678_le.bin文件从"mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin"拷贝到"mcsdk_2_00_04_16\tools\writer\eeprom\evmc6678l\bin"

2、使用mcsdk_2_00_04_16\tools\writer\eeprom\evmc6678l\bin\eepromwriter_evm6678l.out进行烧写

     其中eepromwriter_input.txt的内容为:

    file_name  =  i2crom_0x51_c6678_le.bin
    bus_addr   = 0x51
    start_addr = 0
    swap_data  = 0

配置IBL

1、修改mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cConfig.gel的内容,将函数setConfig_c6678_main()的语句

     ibl.bootModes[1].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_BBLOB;   替换为

     ibl.bootModes[1].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_ELF;    

 2、运行程序mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out

3、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main 

4、几秒钟以后,在console界面上敲击回车键

测试是否成功

 1、首先修改板子的启动模式

    (pin1, pin2, pin3, pin4) 
    SW3(off, off, on, off),
    SW4(on, off, on, on),
    SW5(on, on, on, off),
    SW6(on, on, on, on)

2、启动板子。

 现象:LED灯完全没有反应。

LedTest.rar
  • 您好,

    1. 确认在烧写应用程序集IBL过程中均将EVM板拨成No boot mode;

    2. 将生成应用程序*.out文件直接修改后缀为*.bin烧写到Nand flash,不需要进行转换。

  • Andy Yin

      谢谢回复

     1、烧写过程中,我确认EVM的启动模式是No boot mode

        2、我的工程格式是elf,这是否有影响呢?

  • 您好,

    上面在配置IBL时已经修改为ELF格式,所以ELF格式是正确的,请问你现在进展如何了?

  • Andy Yin

     您好,谢谢你对本问题的关注!

    目前单core的已经没问题了。程序已经正确的boot起来了。非常感谢!

    但是还有一个问题,现在的boot为什么都不需要把out转换成bin了呢?

  • 您好,

    应该是跟IBL有关,这个问题我和我同事也比较纳闷,但是还没时间去确定原因,我近期会确认后更新答复的,谢谢

  • Eric, 您好

    请问你从开始nand boot失败,到后来boot成功时做了哪些改动?或者说之前出错的地方在哪里?

    谢谢~!请赐教~

  • 你好,流程就按照上面的。 第一次不成功是因为我把bin文件写入nand了。后来直接使用CCS生成的out文件,写入NAND,boot就成功了。

  • 谢谢回复!

    "第一次不成功是因为我把bin文件写入nand了。后来直接使用CCS生成的out文件,写入NAND,boot就成功了。"  这句话我怎么听起来还是一头雾水,可否说的详细一点?你的意思是说,点灯工程的out文件直接重命名为.bin文件了,然后写入NAND~ 还是??

  • 不好意思,没收到邮件通知,还以为你没回复了。  ccs生成的out文件,只要把文件的后缀名改成.bin。就行了。 写入NAND。  

    第二步注意,写漏了一步,要把文件 i2crom_0x51_c6678_le.bin加载到0x80000000后,再继续运行程序,否则会出问题。

  • Eric,谢谢您的回复哈。

    我后来也是直接将.out命名为.bin之后直接烧写到flash中的,boot成功。

  • 你好,

    请问运行程序mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out是什么意思啊,没有工程好像不能load(i2cparam_0x51_c6678_le_0x500.out)文件啊。

    谢谢

  • 您好~

    我想问下,您将程序将烧写到NAND后,再次上电后,LED就按照您的程序正常闪烁吗?还有我测试了一下(void) platform_delay(10000000);这个语句的时间延迟有问题啊?不知道您那是怎样的?谢谢~

  • 您好!

       是的,我这边程序运行后的情况就是boot和直接通过ccs跑这个程序的效果是一样的,led等按照程序设置的闪烁。

  • 不好意思回复完了,希望你的问题已经解决。   把target文件运行起来,加载程序的时候,可以随意选定.out程序的。

  • 您好~谢谢~按照你的步骤,我将程序烧写进去后,并没有出现直接跑这程序时的LED闪烁情况,但是POST那个程序却可以按照那个烧写成功!不知道您是否有出现过这种情况?谢谢~

  • 确认是不是烧对了。  程序本身我是通过ccs先测试正确,才将out烧入nand中,正确写入后,运行效果与通过ccs直接运行是一致的

  • 您好~程序我也通过了CCS测试,确定了正常运行时会有LED闪烁。应该是烧写过程中出错了!但是同样的步骤却可以将POST这个正常烧写,实在是找不出原因,所以才想问问您是否遇到过同样的问题?谢谢~

  • 那确实是没有遇到这种情况了,在烧写nand遇到的步骤以及遇到的问题,都在这个帖子上了。

  • 本人使用C6678 EMIF16的外挂一个NOR FLASH,16M x 16bit,NOR FLASH BOOT时,对EEPROM烧写IBL和参数配置成功,.out到.bin,烧写程序到flash后,重启后boot失败,

    对于nor的烧写偏移地址是0x0吗?nand的地址是怎么算出来的?还有,sw3设置成1101,小端I2C启动后,读拨码值的寄存器DEVSTAT 0x02620020为FFFF,而设置成noboot或其他模式时则读值正确,对应为拨码开关的值0801.0803.0807等,为什么只有I2C模式读取错误呢?能看一下evm的值吗,

  • andy 你好,为什么我在论坛上不能发布新帖子,发布新帖子的那个链接一直是灰色状态。

    在6678中,我想用0核监控其他7个核的运行状态,用0核给其他核加载程序,然后运行。目前我用0核与上位机能够通信,并且能够做到上位机对6678内存的读写,我能够把out文件解析出来,但是遇到的问题是,我不知道如何将程序下载到1-7核的内存,他的其实地址如何计算呢?

  • Eric,你好:

           看了你的这篇帖子,对6678-evm的nand flash启动有所了解,但是完全按照你给的思路和步骤,就是没有成功,很是郁闷。

           我想请教几个问题:

           1、在烧写LedTest.bin到nand flash时,需不需要先load到DDR3中去?

            2、no boot模式的拨码开关是不是如下:

                 (pin1, pin2, pin3, pin4) 
                 SW3(off, on, on, on),
                 SW4(on, on, on, on),
                 SW5(on, on, on, on),
                 SW6(on, on, on, on)

     

            谢谢了!!!

                 

  •  你好,我按照你上述的步骤进行了测试,发现boot没有成功,主要有以下几个问题,希望你能帮忙确认一下:

    1、在生成应用程序的二进制文件,烧入NAND中,是否需要将LedTest.bin load到地址0x80000000;(MCSDK的read me里边介绍的)?

    2、将IBL烧入EEPROM中, i2crom_0x51_c6678_le.bin load的地址是0x0c000000还是0x80000000?

  • 1、在生成应用程序的二进制文件,烧入NAND中,需要将LedTest.bin load到地址0x80000000,同事修改相应的txt烧写配置文件

    2、将IBL烧入EEPROM中, i2crom_0x51_c6678_le.bin load的地址是0x0c000000,可以通过修改源程序修改烧写地址

  • 你好:关于楼主的配置ILB我有些不懂

    2、运行程序mcsdk_2_00_04_16\tools\boot_loader\ibl\src\make\bin\i2cparam_0x51_c6678_le_0x500.out

    3、加载文件 i2cConfig.gel然后在CCS的DEBUG界面上点击,Srcipts->EVM c6678 IBL -> setConfig_c6678_main 

    4、几秒钟以后,在console界面上敲击回车键

    这是楼主的步骤,但是运行了程序之后怎么加载gel文件呢?还在console界面里面敲回车是什么用?谢谢!

  • CCS的tools里面有个gel load,点击,会处理gel加载的界面,在界面上右击鼠标,选择load gel,加载你要加载的gel文件,也就是i2cconfig.gel。然后点击ccs的Srcipts->EVM c6678 IBL -> setConfig_c6678_main 。最后用鼠标点击console界面,回车

  • 你好,能把你的mcsdk_2_00_04_16\tools打包发给我一下吗,我用的mcsdk_2_01_02_06,一直不能从nand boot成功!谢谢了

  • 给个qq或者邮箱

  • 能把你的tools文件夹打包发我一下吗,我的邮箱是maguodong12345@126.com ,谢谢了

  • 你好,谢谢!现在已经可以从nand引导了,上次是因为我配置IBL时把gel文件修改错了!

  • 不好意思,好久没上,没看到你的消息!

  •   你好!请问你的mcsdk_2_00_04_16在哪儿下的,我在官网下的mcsdk_2_01_02_06在编译时老出错。

      谢谢!

  • LZ大神还在吗,我对程序真是一窍不通。。。然后我的6678板子跑LZ的例程的时候又有error,求指导。万分感谢。。

    QQ 327023905

  • 现在能在DSP的RAM中仿真测试通过了,但是烧写过程还是有问题。。

  • 我在烧写应用程序集IBL过程中没有将EVM板拨成No boot mode,但显示烧写成功。但boot运行不起来。请问烧写过程中,将EVM板拨成No boot mode有没有影响。

  • 您好

    我使用6678LE  mcsdk_2_01_02_06

    no noot下加载nandwriter_evm66xxl.out,将txt文档里的app.bin改为我的Ledtest.bin(由Ledtest.out直接改后缀而来);烧写后打印结果如下:最后打印烧写成功,但断电后拨开关为:

     (pin1, pin2, pin3, pin4) 
        SW3(off, off, on, off), 
        SW4(on, off, on, on), 
        SW5(on, on, on, off),
        SW6(on, on, on, on)

    nand启动,并不闪烁。为何?IBL是之前已经烧写了的,并且我的SPI自启动是没有问题的。

    关于版本问题,请您帮我确认下,我这个mcsdk版本:IBL 0x51 ; POST 0x50; 烧写镜像文件是使用bin  ;对吗???一直看到文档上的版本问题说法不一致。

    [C66xx_0] NAND Writer Utility Version 01.00.00.01

     

    Flashing block 1 (0 bytes of 633273)

    Flashing block 2 (16384 bytes of 633273)

    Flashing block 3 (32768 bytes of 633273)

    Flashing block 4 (49152 bytes of 633273)

    Flashing block 5 (65536 bytes of 633273)

    Flashing block 6 (81920 bytes of 633273)

    Flashing block 7 (98304 bytes of 633273)

    Bad block # 8 detected, skipping block ... 

    Flashing block 9 (114688 bytes of 633273)

    Flashing block 10 (131072 bytes of 633273)

    Flashing block 11 (147456 bytes of 633273)

    Flashing block 12 (163840 bytes of 633273)

    Flashing block 13 (180224 bytes of 633273)

    Flashing block 14 (196608 bytes of 633273)

    Flashing block 15 (212992 bytes of 633273)

    Bad block # 16 detected, skipping block ... 

    Flashing block 17 (229376 bytes of 633273)

    Flashing block 18 (245760 bytes of 633273)

    Flashing block 19 (262144 bytes of 633273)

    Flashing block 20 (278528 bytes of 633273)

    Flashing block 21 (294912 bytes of 633273)

    Flashing block 22 (311296 bytes of 633273)

    Flashing block 23 (327680 bytes of 633273)

    Bad block # 24 detected, skipping block ... 

    Flashing block 25 (344064 bytes of 633273)

    Flashing block 26 (360448 bytes of 633273)

    Flashing block 27 (376832 bytes of 633273)

    Flashing block 28 (393216 bytes of 633273)

    Flashing block 29 (409600 bytes of 633273)

    Flashing block 30 (425984 bytes of 633273)

    Flashing block 31 (442368 bytes of 633273)

    Bad block # 32 detected, skipping block ... 

    Flashing block 33 (458752 bytes of 633273)

    Flashing block 34 (475136 bytes of 633273)

    Flashing block 35 (491520 bytes of 633273)

    Flashing block 36 (507904 bytes of 633273)

    Flashing block 37 (524288 bytes of 633273)

    Flashing block 38 (540672 bytes of 633273)

    Flashing block 39 (557056 bytes of 633273)

    Bad block # 40 detected, skipping block ... 

    Flashing block 41 (573440 bytes of 633273)

    Flashing block 42 (589824 bytes of 633273)

    Flashing block 43 (606208 bytes of 633273)

    Flashing block 44 (622592 bytes of 633273)

    Reading and verifying block 1 (0 bytes of 633273)

    Reading and verifying block 2 (16384 bytes of 633273)

    Reading and verifying block 3 (32768 bytes of 633273)

    Reading and verifying block 4 (49152 bytes of 633273)

    Reading and verifying block 5 (65536 bytes of 633273)

    Reading and verifying block 6 (81920 bytes of 633273)

    Reading and verifying block 7 (98304 bytes of 633273)

    Bad block # 8 detected, skipping block ... 

    Reading and verifying block 9 (114688 bytes of 633273)

    Reading and verifying block 10 (131072 bytes of 633273)

    Reading and verifying block 11 (147456 bytes of 633273)

    Reading and verifying block 12 (163840 bytes of 633273)

    Reading and verifying block 13 (180224 bytes of 633273)

    Reading and verifying block 14 (196608 bytes of 633273)

    Reading and verifying block 15 (212992 bytes of 633273)

    Bad block # 16 detected, skipping block ... 

    Reading and verifying block 17 (229376 bytes of 633273)

    Reading and verifying block 18 (245760 bytes of 633273)

    Reading and verifying block 19 (262144 bytes of 633273)

    Reading and verifying block 20 (278528 bytes of 633273)

    Reading and verifying block 21 (294912 bytes of 633273)

    Reading and verifying block 22 (311296 bytes of 633273)

    Reading and verifying block 23 (327680 bytes of 633273)

    Bad block # 24 detected, skipping block ... 

    Reading and verifying block 25 (344064 bytes of 633273)

    Reading and verifying block 26 (360448 bytes of 633273)

    Reading and verifying block 27 (376832 bytes of 633273)

    Reading and verifying block 28 (393216 bytes of 633273)

    Reading and verifying block 29 (409600 bytes of 633273)

    Reading and verifying block 30 (425984 bytes of 633273)

    Reading and verifying block 31 (442368 bytes of 633273)

    Bad block # 32 detected, skipping block ... 

    Reading and verifying block 33 (458752 bytes of 633273)

    Reading and verifying block 34 (475136 bytes of 633273)

    Reading and verifying block 35 (491520 bytes of 633273)

    Reading and verifying block 36 (507904 bytes of 633273)

    Reading and verifying block 37 (524288 bytes of 633273)

    Reading and verifying block 38 (540672 bytes of 633273)

    Reading and verifying block 39 (557056 bytes of 633273)

    Bad block # 40 detected, skipping block ... 

    Reading and verifying block 41 (573440 bytes of 633273)

    Reading and verifying block 42 (589824 bytes of 633273)

    Reading and verifying block 43 (606208 bytes of 633273)

    Reading and verifying block 44 (622592 bytes of 633273)

    NAND programming completed successfully

  • 您好,我使用TMDSEVM6678LE Rev.2A和mcsdk_2_01_02_06:

    烧写IBL到EEPROM 是使用I2C 0x51,0x0C000000,然后使用i2cConfig.gel配置IBL。

    然后烧写工程bin文件(由OUT文件直接改后缀)到NOR 或NAND ,使用0x80000000.

    IBL已烧写到EEPROM,还可以继续烧写POST bin文件到EEPROM里吗?这时候是使用0x50还是0x51?这时候是使用0x0C000000还是0x80000000呢?

    我在论坛里看到关于版本问题,对使用bin文件/dat文件 还是0x0c000000 还是0x80000000,使用0x50还是0x51,有着不同的说法。请您针对这几个问题确认下。

  • 能把TOOLS工具发给我一份吗,我现在遇到了类似的现象,唯一没有试过的方法就是换一个MCSDK,谢谢了 我的邮箱是784079815@qq.com

  • 能把TOOLS工具发给我一份吗,我现在遇到了类似的现象,唯一没有试过的方法就是换一个MCSDK,谢谢了 我的邮箱是784079815@qq.com

  • 请问单核boot成功后,如何做多核的程序自加载呢?我刚刚接触6678,都不太熟悉。还有,现在out直接重命名bin之后,多个核之间的out文件怎么烧写呀,还需要合并吗?

  • 请问单核boot成功后,如何做多核的程序自加载呢?我刚刚接触6678,都不太熟悉。还有,现在out直接重命名bin之后,多个核之间的out文件怎么烧写呀,还需要合并吗?

  • hi 您好 Eric Mao

    这段时间我一直在做IBL NAND FLASH 自加载。但我刚刚接触6678,都不太熟悉。现在单核IBL nand boot可以成功了,如何做多核的程序自加载呢?还有,现在out直接重命名bin之后,多个核之间的out文件怎么烧写呀,还需要合并吗?需要boot parameter table 和 DDR table之类的配置吗?

    不知道您是否有过相关方面的开发经验,如果方便能提供一些例程吗?不胜感激


  • 你好,我只在6678上完成了单核启动的流程。  多核的没有做了。因为后面做其他芯片去了,6678方面的就没有深入。不好意思。

  • 您好,zhonghong zhang

    请问您的多核自加载程序弄好了吗?怎么弄的,能给一个详细的说明吗?

    我现在用的EVM6678LE开发板,emif16 nand flash单核弄通了,多核的还是不行

    我的邮箱397014885@qq.com,看到的话能告知小弟一下吗?不胜感激.

  • 大神你好,刚刚接触6678开发板,想请问程序里点亮LED灯的函数platform_led(0, PLATFORM_LED_ON, PLATFORM_USER_LED_CLASS);的意义,还有其他函数的意义,如何查找这些函数相关的说明。不胜感激。