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.

如何将带sysbios的工程的bootload函数段固定在.out文件的最前面

Other Parts Discussed in Thread: SYSBIOS

各位大神:
背景:6678的工程。自己汇编编写bootload的函数,从emif启动,裸工程跑时能够从flash正常启动并运行。
bootload函数用.sect".bootload"语句限定段分配空间,且在cmd文件中放在section中的最前面
SECTIONS
{
.bootload > L2SRAM
...

}
用hex6x.exe将.out文件转换为.hex文件,bootload函数所在段也位于.hex文件中的第一块数据段
编写烧写工程,将第一段(即bootload函数所在段)烧写进flash芯片的0x00地址中,即可成功启动dsp。

问题:
1、建立带sysbios的工程,在.cfg文件中分配section:
Program.sectMap[".bootload"] = "L2SRAM";
Program.sectMap[".cinit"] = "L2SRAM";
Program.sectMap[".const"] = "L2SRAM";
Program.sectMap[".switch"] = "L2SRAM";
...
但是和裸工程跑不一样的是,经过编译后,在.out文件中,.bootload段始终位于.cinit、.const、.switch、.text段之后(调整Program.sectMap顺序也不行;另外建立cmd文件,像裸工程跑一样建立SECTIONS也无法将.bootload段放置在这些段之前)。
请问有什么办法将.bootload段放置在这些段之前

2、在bootload函数的最后,转跳入_c_int00()函数执行c runtime,请问有什么办法将_c_int00()函数
入口地址固定在某个内存空间么?


万分感谢!

  • 1 把bootload 单独定义1个memory,然后对它单独指定1个空间 位于其他段前面,你看行不行

    2 可以在compiler中使用--entry_point= global_symbol,或者对c_int00所在的boot.c(如前所述,是您自己的代码,所以可以modify),进行code section的重定位