因为程序中有大量的矩阵运算,为了缩短运行时间,所以需要将程序放入L2中并加优化才能满足要求。但是现在程序放在L2中加o2优化后,在debug状态下可以运行,烧写后无法运行。我是在程序的定时中断中设置了LED灯的亮灭来观察程序是否正常运行的。我做了以下尝试(1)程序放在DDR2不放在L2中,不加任何优化,烧写后能运行(2)程序放在L2中,加任何级别优化和不加优化,烧写后都不能运行(3)程序不放在L2中,,加o1级别优化,烧写能运行(没有确认过运行结果是否正确)(4)程序不放在L2中,加o2和o3级别优化,烧写不能运行。不知道有没有人遇到这种问题。我猜想是不是在产生ais文件时加载的配置文件C6748AISgen_456M_config.cfg写的不对,请问加优化和放程序在L2中,烧写时是不是需要对C6748AISgen_456M_config.cfg文件进行更改?我现在的C6748AISgen_456M_config.cfg内容如下:
Boot Mode=NAND Flash
Boot Speed=115200
Flash Width=0
Flash Timing=8224114
Configure Peripheral=False
Configure PLL0=True
Configure SDRAM=False
Configure PLL1=True
Configure DDR2=True
Configure LPSC=True
Configure Pinmux=False
Enable CRC=False
Specify Entrypoint=False
Enable Sequential Read=False
Use 4.5 Clock Divider=False
Use DDR2 Direct Clock=False
Use mDDR=False
Use DuplicateMddrSetting=False
ROM ID=3
Device Type=1
Input Clock Speed=24
Clock Type=0
PLL0 Pre Divider=1
PLL0 Multiplier=19
PLL0 Post Divider=1
PLL0 Div1=1
PLL0 Div3=4
PLL0 Div7=10
PLL1 Multiplier=13
PLL1 Post Divider=1
PLL1 Div1=1
PLL1 Div2=2
PLL1 Div3=3
Entrypoint=0
SDRAM SDBCR=0
SDRAM SDTMR=0
SDRAM SDRSRPDEXIT=0
SDRAM SDRCR=0
DDR2 PHY=c3
DDR2 SDCR=134632
DDR2 SDCR2=0
DDR2 SDTIMR=264a2a09
DDR2 SDTIMR2=4412c722
DDR2 SDRCR=40000260
LPSC0 Enable=0+1+2+3+4+5+9+11+12+13+15+
LPSC0 Disable=
LPSC0 SyncRst=
LPSC1 Enable=0+1+3+4+5+6+7+9+10+11+12+13+14+15+16+17+18+19+20+21+24+25+26+27+28+29+30+31+
LPSC1 Disable=
LPSC1 SyncRst=
Pinmux=
App File String=
AIS File Name=
Shine:
用仿真器跟一下boot后的代码,看代码有没有搬进来,正确boot进来后代码运行到哪里出错了?
user4266273:
回复 Shine:
再请问一下,您说的用仿真器跟boot代码意思是烧写完之后 点绿色的运行按键吗?我应该怎么操作,怎么观察这个代码有没有搬进来?
Shine:
回复 user4266273:
烧写完之后,板子下电,配置boot mode管脚,重新上电连仿真器,load symbol。具体可以看下面的wiki网站
processors.wiki.ti.com/…/Debugging_Boot_Issues
user4266273:
回复 Shine:
按照您提供的方案做了测试,发现程序中的10ms定时标志置1之后 if语句判断不过去。也就是说,我在程序中设置了一个Timer2INT的标志,当10ms定时中断时,置1,通过if语句判断,如果这个标志为1时,执行XXX操作,但是我发现 Timer2INT = 1,但是if判断不能通过。如图所示
Tony Tang:
回复 user4266273:
可能是.stack小了,加大试试。