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.

自己编写C6747 BOOT LOADER遇到的问题

我的板子上在CS2上挂了个NOR FLASH,想用NONE AIS BOOT的方式引导,在NOR中制作一个二级BOOT LOADER。

查找了网上的资料,目前用C单独写了一个工程。在将生成的.OUT文件用HEX6X转为intel HEX格式时,对以下内容不是太明白:

转换时使用的CMD文件指定了ROM起始地址和SECTION段,比如.text .cinit段,请问这些段在FLASH中如何放置,如果是顺序放置,加载时怎么将这些段放到RAM中合适的位置?我是否可以将ROM起始地址从0开始定义?

在SPRU186w文档中,说到HEX6X可以自己建立一个BOOT TABLE,我是否要在程序中额外处理这个TABLE,还是说会自动生成段拷贝的程序?或者说我需要自己在程序的CMD文件中指定LOAD和RUN地址,然后自己用汇编写一个拷贝函数?

上图中说的entry_point 是不是说BOOT LOADER执行完后,程序跳转的地址?上述地址是不是程序运行时相对于DSP地址空间的地址?

对这几点很困惑,希望能帮忙解答下,非常感谢!我觉得TI在这种文档支持上讲的非常笼统,而且也没有对应的例子,让人费解。

  • 1. 放在flash地址0开始。

    2. 需要自己写搬移代码,二次bootloader代码要根据boot table里的段地址和段长度去搬移代码段到相应的目的地址。

    3. 图显示不出来,建议看一下下面的wiki网站。
    processors.wiki.ti.com/.../Secondary_Bootloaders_on_OMAP-L1x
  • WEI LIU 说:
    转换时使用的CMD文件指定了ROM起始地址和SECTION段,比如.text .cinit段,请问这些段在FLASH中如何放置,如果是顺序放置,加载时怎么将这些段放到RAM中合适的位置?我是否可以将ROM起始地址从0开始定义?

    NONE AIS BOOT有两种模式,legacy NOR boot和Direct NOR boot,你要的是哪种。

    另外,看一下下面的命令,直接转成binary..

    /* boot image command file
    -b
    -image
    -zero
    -fill 0x0
    -o appImage.bin
    ROMS
    {
    IRAM: org = 0x60000000, len=0x4000  //这一段无所谓 
    }

  • 谢谢,我先测试一下!这个转换的意思是可以直接生成内存镜像的意思吧,也就是我可以直接读取生成的文件然后从0地址开始写入到NOR FLASH中?
  • 这个地址上的文章讲的比较清楚,按上面的方法改了。
  • 我还是用legacy nor boot吧,直接外部RAM引导感觉可能会有点慢