DSP28335 程序烧写到flash运行不正确

您所在的位置:网站首页 动物园笔趣阁 DSP28335 程序烧写到flash运行不正确

DSP28335 程序烧写到flash运行不正确

2024-06-04 07:14| 来源: 网络整理| 查看: 265

DSP28335-程序烧写到flash运行不正确

转自:火星与猫的杂货铺 2020-07-22 关注 DSP28335在线仿真没问题,但下载到flash里面,程序运行不正确。具体调试过程如下: 1、通过线仿真调试完成,并通过LED指示灯判断后,程序运行正常。所以将该程序转换为flash模式进行烧写,将在线仿真转换为flash模式有两种方式。 在这里插入图片描述 可以将工程中的28335_RAM_lnk.cmd从工程中删除,添加CMD文件夹下的F28335.cmd文件,全编译一次即可烧写;也可以如图1所示,在F28335.cmd文件上右键,exclude from build前打√ ,取消28335_RAM_lnk.cmd 文件前的√

在这里插入图片描述 2、将主程序中的:MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); 与InitFlash();两个函数的注释取消。否则无法在flash中运行。 3、完成以上两步,就可以build all –run-debug ,开始烧写。 4、问题来了,在flash烧写成功后,断电后再次上电程序运行不对,因为LED指示灯没有闪烁。开始的时候,我怀疑.cmd文件配置错误,但经过检查并没有问题,而且这个.cmd文件是我之前使用过的,并且在之前的使用中,主程序的基本结构与现在的程序基本相同,而且之前的程序量更大,所以问题不可能出自.CMD文件。没办法又经过度娘查询,但都无功而返。这里就不介绍网上的办法了,各位可以自己查询。

最后经过逐步排查,竟然是程序设计的问题:

1、LED指示灯闪烁不对,因为程序中既调用了GpioDataRegs.GPATOGGLE.bit.GPIO24 = 1;指示灯闪烁,又在485通讯中(当初应该为了测试通讯速度速度)使用了GpioDataRegs. GPADAT.bit.GPIO24 = 1(0);

2、在线(online)程序调试中使用了DSP28x_usDelay延时函数,但在程序没有使用#pragma CODE_SECTION(InitFlash, “ramfuncs”)该函数,这样的情况在线调试没问题,烧写到flash后很有可能出现问题,应该增加#pragma CODE_SECTION(DSP28x_usDelay, “ramfuncs”); 在这里插入图片描述 总结一下,烧写到flash中的程序要仔细检查,因为某些程序上的错误或者结构上问题在线仿真调试是看不出问题的,但在flash中运行就会将程序跑飞。

验证:在主函数中增加Memcopy()和InitFlash()函数。 并注意F28335.cmd中SECTIONS节。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3