打印

关于使用双核进行编译的问题

[复制链接]
1632|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
codys|  楼主 | 2014-5-7 20:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题比较复杂,一步一步说:

F28035芯片,CCS5.5,实验设备有TI原装的DRV8412-C2-KIT,原来参照controlSuite的例子 《development_kits\TMDSIACLEDCOMKIT_v1.1\IsoACLighting-F28027-DMX512 》 将SCI中断服务函数放到RAM内存中运行,一切正常。不过CMD文件是用另一个例子《development_kits\DRV8412-C2-KIT_v131\GUI_project 》  中的    “F28035_FLASH_DRV8412GUI.CMD”。

后来由于自己的程序需要使用CLA,并且使用了CLAmath.Lib,参阅了例子 《 development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_CLA_F2803x 》,最后整合出来新的CMD文件(另见附件)。

现在问题来了,首先,如果SCI的中断服务程序还是拷贝到RAM中的话,一进入中断就出错,出错表现为跳到例程中的”interrupt void ISR_ILLEGAL(void)“函数中。如果注释掉 #pragma CODE_SECTION (sciaRxIsr, "ramfuncs") 这个语句,就能正常运行。

还有一个问题,在仿真模式下,CLA 和 CLAmath函数都能正常运行,但是,如果断电后再启动芯片,CLA就出错了。通过主CPU的中断函数输出,可以判断CLA还是在运行的。重新在CCS中连接上芯片后,观察CLA中的变量,发现出错的是CLAmath的函数CLAsinPU。

所以综合前面那个SCI中断函数的问题,感觉就是,可能CMD文件和相关的代码没处理好,现在只要是运行时要拷贝到Ram内存的东西,除了CLA 拷贝到 progRam没问题外,其他的都有问题。

实在研究不出来,请求专家帮忙看看。

参照例程,CLA的拷贝函数是

memcpy(&Cla1funcsRunStart, &Cla1funcsLoadStart, (Uint32)&Cla1funcsLoadSize);

SCI的拷贝函数是

MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

编译时没有任何错误,最原始的工程项目是development_kits\DRV8412-C2-KIT_v131\GUI_project 。

F28035_FLASH_DRV8412GUI.zip

2.45 KB

相关帖子

沙发
codys|  楼主 | 2014-5-8 08:38 | 只看该作者
问题找到了,第一个问题是将0x3F8000的L0当作一个内存来用,其实他和0x008000的内存是同一个内存~~~~

第二个问题,是因为CLAmath.Lib中的CLAsinPU函数要用到一个table,这个table在CMD文件中没有放到Flash上,所以断电重启就没了,由于参考的例程《 development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_CLA_F2803x 》是在RAM上运行的,所以没定义这个,我也没留意。而且,这个例程也没对应的Flash版本~~

感觉怎么两个问题都是坑啊,整了我两天了,本来还以为两个问题有关联,所以整得更加神秘,不过也好,整整更健康,不折腾就不会进步

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
dirtwillfly + 4 赞一个!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝