我的仿真器出了毛病,只能做编译,看看目标代码,无法 DEBUG。
我的实验是这样的:程序中写:
#pragma CODE_SECTION(ChineseChr,\"My_Sec\"
;
unsigned int ChineseChr[] = {xxxx,xxxx,xxxx,...,xxx,xxx};
unsegned int s;
void GetChr(unsigned int j)
{
r = ChineseChr[j];
}
cmd 文件中当然写了:
.My_Sec:{} 〉PROG PAGE 0
问题是, DSP 程序地址总线和数据地址总线是分开的,读取程序区与数据区,用的是不同的指令。如果编译的处理不匹配,连接时(尽管改了CMD)也无能为力。
我看到编译出的 ASM 文件是:
_ChineseChr .usect \"My_Sec\",128,1
读代码表 r = ChineseChr[j] 编译为:
LAC *,AR0 ; j 值取到 AR2,
ADLK _ChineseChr,0 ;加上 _ChineseChr ,得到地址
SACL *
LAR AR3,* ,AR3 ;经过AR0 指示的工作单元,把地址传到 AR3
BLDD *,#r,AR1
用的是 BLDD 指令,还是从数据存储空间中读数。