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.

下载hex格式程序到EVM6424评估板上,为什么不能运行呢



实验结果:led.out文件转led.ais格式下载到norflsh中正常运行, 而led.out文件转led.hex格式下载到norflash中不能运行。下载的led.ais格式,DSP的boot脚Fastboot配置成1,就能运行。但是下载led.Hex格式,不管DSP的Fastboot怎么配置都不能运行。

操作过程:CCS编译后led.out文件,用C642x_FlashAndBootUtils_trunk软件分别转换成led.ais与led.hex两个文件,然后用C642x_FlashAndBootUtils_trunk自带工程下载到EVM6424的 norflash中。


         我的理解是这样:1:下载HEX格式到FLASH .  由于BOOTMODE:0100, Fastboot=0,文档说从外设0x42000000启动,那么DSP可以直接从FLASH读取HEX格式数据运行呀?为什么不能运行呢?

                                      2:下载的HEX格式到FLASH .  由于BOOTMODE:1001, Fastboot=1,文档说DSP 用EMIF without AIS格式,0x00100000启动,那么DSP是不是运行内部一级引导程序,然后加载我下载的HEX前1KB数据,到内部RAM,然后运行。但是也不能运行起来??


             希望TI工程师解惑!!!


                  

  • 1. 这种模式下是直接跳转到0x42000000地址开始运行。

    2. 这种模式比第一种多了个PLL配置,配置好后也是直接跳转到0x42000000地址开始运行。

    你看一下0x42000000处放的是否是你的程序入口地址。

  • 上面这两种是EMIFA ROM direct boot, 或者EMIFA ROM FAST BOOT without AIS,指的是从flash直接运行,那么对应的CMD文件也是要把程序的初始化段分配到NOR flash,示初始化段分配到RAM才能运行的。这种模式下是没有搬运过程的。

    而你前面说的转成AIS能运行,说明你的程序的cmd一定是分配到RAM的,所以这个同样的工程在NOR flash上肯定不能直接运行。

    2.6 EMIFA ROM Direct Boot (BOOTMODE[3:0] = 0100b, FASTBOOT = 0)
    EMIFA direct boot does not require intervention from the ROM bootloader software. The DSP hardware
    boot module causes direct branch to start of EMIFA memory at address 0×42000000.


    2.7 EMIFA ROM Fast Boot Without AIS (BOOTMODE[3:0] = = 1001b, FASTBOOT == 1)
    In this boot mode, the ROM bootloader configures the PLL based on values of AEM and PLLMS[2:0] pins
    latched at reset. Then, it branches directly to address 0×42000000. This boot mode effectively operates
    the same as EMIFA direct boot (BOOTMODE[3:0]==0100b, FASTBOOT==0), with exception that the PLL
    is now configured. This enables faster EMIF clock to speed boot from an external device.

  •        谢谢你的回答,你的回答对我很有用。我配置的cmd都在L2RAM中,所以从你的回答我不能把HEX运行成功。   我想按你说的把CMD配置文件改一下,使得生成的HEX,能运行在EMIFA ROM direct boot,或EMIFA ROM FAST BOOT without AIS模式!

            请教问题1:下面是我设置的CMD总是报错,不晓得错在哪里?

           请教问题2:EMIFA ROM direct boot和EMIFA ROM FAST BOOT without AIS是不是都必须是HEX格式,有没64x+系列的HEX这种格式说的说明呢?想学习一下生成的HEX数据格式!

             请教问题3:我生成的AIS大约有40多KB的文件下载到NOR中可以运行。应用程序带TCP协议,启动起来后,拔掉CS2引脚,同样能运行。于是推测DSP内部Bootloader把Nor中应用程序全部读写到了L1P中了,并没有像网上所说DSP内部Bootloader先搬1K数据到内部运行,需用户开发二级bootloadr,再搬运用户引用程序。而是按AIS文件要求全部自动搬运完用户所有应用程序到内部L1P,运行起来后不再需要NOR,是这样的吗?

    MEMORY
    {
         L2RAM: o = 0x10800000 l = 0x00020000
        DDR2: o = 0x80000000 l = 0x10000000
        FLASH: o = 0x42000000 l = 0x003FFE00 

    }SECTIONS

    {

        .text : {} > FLASH run = L2RAM, LOAD_START(0x42000000), RUN_START(0x10800000), SIZE(0x00007900)
       .cinit : {} > FLASH run = L2RAM, LOAD_START(0x42007B14), RUN_START(0x10808d08), SIZE(0x0000020c)
       .switch : {} > FLASH run = L2RAM, LOAD_START(0x42007B14), RUN_START(0x108091a8), SIZE(0x00000030)

    /*.text : {} > FLASH run = 0x10800000, load=0x42000000
    .cinit : {} > FLASH run = 0x10808d08, load=0x42007B14
    .switch : {} > FLASH run = 0x108091a8, load=0x42007B14*/

    .stack > L2RAM
    .bss > L2RAM
    .cio > L2RAM
    .data > L2RAM
    .sysmem > L2RAM
    .far > L2RAM
    .const > L2RAM .ddr2 > DDR2

    }

  • 谢谢你的回答!

           “”你看一下0x42000000处放的是否是你的程序入口地址。“”     怎么看呢,有什么办法仿真看吗?还是需要自己编写一个读Nor的程序运行查看?

  •  不要把这不同的芯片的信息混合了。你说的: 并没有像网上所说DSP内部Bootloader先搬1K数据到内部运行。这是跟芯片相关,也跟boot 模式,及格式相关的。

    AIS格式的文件是带有格式的了,直接搬过去怎么能运行?

    TI的C6000系列前面经历C62x, C671x, C672x, C674x, C64x, C64+, C66x,这么多代的核,那么多的芯片,甚至有人拿着C62x的文档来讨论C64+的问题,这不科学啊。

  •       将.OUT文件转ais格式运行正常起来了,将.OUT文件转HEX文件运行不起来!

          我现在想把转换的HEX格式用:直接EMIF boot或EMIF with out AIS方式启动。你在上面告诉我是由于我的CMD文件都配置子在RAM中原因。于是乎我将初始化段改了一下,其他段不变放在RAM中。    

         .text : {} run = 0x10800000, load=0x42000000
        .cinit : {} run = 0x10808d08, load=0x42007B14
       .switch : {} run = 0x108091a8, load=0x42017b14

     然后用CCS点击完全编译,看见SEED仿真器开始下载程序,但是总是报错?重新将Nor格式化,下载还是报错。

    我想问问,为什么不能下载起来呢? 若是下载起来后能从EMIF boot或EMIF with out AIS启动吗?

  • 如果看0x42000000入口处代码,是需要编写一段读Norflash代码吗?


    Emulation Boot (BOOTMODE[3:0] = 0000b, FASTBOOT = 0 or 1)设置后好像也不能读出0x42000000入口处代码?

  • NOR flash哪能通过CCS直接download啊,写flash有命令控制顺序要求,要通过程序实现的。将这个.out转成你说的 hex,再通过你原来的烧flash的方式写到flash.

  • 连上仿真器,看一下0x42000000的内容。
    http://processors.wiki.ti.com/index.php/Accessing_c_int00

     

  • 哦,对,还要修改CMD文件,将入口函数分配到flash开始地址。

    说实话,你还是按目前能跑起来的AIS方式做吧。不明白你要用这种direct boot的目的是什么?