TI中文支持网
TI专业的中文技术问题搜集分享网站

omap-l138 bootloader 实现分散加载问题?

Omap-l138 启动,RBL—>my_bootloader- arm_rtos / dspbios.

My_bootloader.bin  是AIS格式的文件,RBL负责把它加载到相应的内存去。但是,当my_bootloader把arm_rtos加载到内存的时候,如何实现以下链接文件时,正确加载arm_rtos?(arm_rtos.bin 或arm_rtos.hex)

我的链接文件link.cmd

MEMORY

{

SHAREDRAM: o = 0x80000000 l = 0x00020000

ARMRAM: o = 0xFFFF0000 l = 0x00002000

DDR_MEM: o = 0xc0000000 l = 0x2000000

}

SECTIONS

{

.boot > DDR_MEM

.cinit > SHAREDRAM /* Initialization Tables */

.pinit > SHAREDRAM /* C++ Constructor Tables */

.const > SHAREDRAM /* Constant Data */

.switch > DDR_MEM /* Jump Tables */

.text > DDR_MEM /* Executable Code */

.bss{ *(.bss) } > SHAREDRAM

.far > SHAREDRAM /* Far Global & Static Variables */

.stack > SHAREDRAM /* Software System Stack */

.svcstack > SHAREDRAM /* Supervisor Mode Stack */

.irqstack > SHAREDRAM /* IRQ Interrupt Stack */

.fiqstack > SHAREDRAM /* FIQ Interrupt Stack */

.sysmem > SHAREDRAM /* Dynamic Memory Allocation Area */

.cio > SHAREDRAM /* C I/O Buffer */

.intvecs > ARMRAM /* Interrupt Vectors */

.data > SHAREDRAM

}

要是我自已写bootloader的时候,是不是要把 .boot .switch .text section 搬到DDR_MEM相应的内存.

.cinit .pinit .const .bss .far .stack …搬到SHAREDRAM

.intvecs 搬到ARMRAM的内存去呢?

如何实现以上各section的copy 到DDR 和 shareRAM中去?

我搞不太明白..没做过….

是不是要把相应的SECTION搬到相应的内存去?

假如:.boot section 是启动的,.map可知,程序入口地址是0xc8001000,难道我直接从NOR FLASH读出来,

搬到内存上去(搬到内存何处?),直接跳到入口地址.就行了?

zhihua xie zhihua xie:

意思就是:要是自己去实现RBL的功能,如何去实现?(RBL肯定能把各section的代码从NOR FLASH加载到相应的运行域)

Tony Tang:

回复 zhihua xie zhihua xie:

一方面可以参考TI提供的UBL。

关键是my_bootloader要知道arm_rtos.bin 的格式,如果是image格式(如uboot.bin),则将整个image搬到目的内存,然后跳转到入口地址。

所谓的image格式即为内存映像,只需要知道内存的首地址,整块搬过去即可。

zhihua xie zhihua xie:

回复 Tony Tang:

如果要从NOR FLASH 存储器COPY DSPBIOS也是这样做?CCS3.3如何生成内存映像的BIN格式?

Tony Tang:

回复 zhihua xie zhihua xie:

不分有没有DSP BIOS, 你问的是ARM的还是DSP的?这里有一点点区别。因为ARM的hex470.exe不支持-boot选项生成boot table, 而DSP的hex6x.exe支持-boot生成boot table形式的加载表。

请参考贴:www.deyisupport.com/…/5319.aspx

赞(0)
未经允许不得转载:TI中文支持网 » omap-l138 bootloader 实现分散加载问题?
分享到: 更多 (0)