Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
您好!
在通过 EPI 连接的外部 SRAM 中放置.bss 段时遇到问题。
配置:
目标 F28M35H52C1 (Cortex-M3 + C2000 DSP) CCS 版本: 5.5.0.00077 编译器 TI v5.1.1 IPC 3.10.1.11 SYS/BIOS 6.35.04.50 TI RTOS 1.20.0.28
硬件是一款定制电路板、在 EPI 总线上具有 F28M35H52C1处理器、2 MB 外部 SRAM (Alliance Memory AS6C1616-55TIN)和 LCD 控制器(EPSON S1D13742)。
我已经使用这个外部 SRAM 来存储 GUI 映像(1Mbyte)和显示缓冲区(768KB)、一些其他段(所有这些段都正常)以及我要存储.bss 的 ARM_EXTRAM 段。
以下是 cmd 文件的摘录:
存储器
{
EXTRAM (RW) :origin = 0x60020D00,length = 0xBB800
EXTRAM_BIN (RW) :origin = 0x600DC500,length = 0x100000
ARM_EXTRAM (rwx):origin = 0x601E6E10,length = 0x191F0
}
部分
{
.SDRRAM :> EXTRAM
.remote_bin :> EXTRAM_BIN
.bss :> ARM_EXTRAM
}
EXTRAM 和 EXTRAM_BIN 与#pragma 一同使用:
#pragma DATA_SECTION (GuiLib_DisplayBuf、".SDRRAM")
#pragma DATA_SECTION (SD_Card_RamBuffer、".remote_bin")
EPI 在 EPI_CONFIG.c (见下面的附件)中配置了 EPI_Init(),这两个函数中调用:
e2e.ti.com/.../EPI_5F00_config.c
void customResetISR (void){
EPI_Init();
返回;
}
void customStartFunction (void){
EPI_Init();
返回;
}
这两个函数在 main.cfg 中进行配置,并按预期在 main 之前调用(使用断点进行验证):
startup.resetFxn ="&customResetISR";
var len = Startup.firstFxns.length
startup.firstFxns.length++;
startup.firstFxns[len]='customStartFunction;
当我尝试将.bss 段放在 ARM_EXTRAM 中时、会出现问题。 我获得以下消息"存储器映射阻止读取0x601F1E1C":
仔细检查后,似乎 BIOS_start()中出现了此错误。
我尝试使用以下代码操作 main 开头的存储器、它不会产生任何错误:
short * MemLoc =(short *)(0x601F1E1C);
*MemLoc = 1234;
总之、访问外部 SRAM 对于.bss 以外的其他段可以正常工作、并且 EPI 使用 XDC 复位和启动函数进行初始化、这应该是在.bss 以零初始化之前进行的。
请问我是否错过了 EPI 初始化的步骤,这会导致 BIOS_start()失败?
提前感谢您的帮助。
此致、
Paul Noalhyt