EDN China > 技术文章 > 微处理器与DSP > CPU/GPU > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) TMS320F28xx DSP中内部Flash的应用研究

来源:中电网 / 作者:南京航空航天大学 王敏?? 陈富林?? 2007年02月10日 ?? 收藏0
括为每个初始化全局变量把数据从.cinit段(位于片上FLASH存储器)拷贝到.ebss段(位于RAM)。例如,当一个全局变量在源代码中声明为:

?????? int x="5";

?????? "5"被放置在初始化段.cinit,而符号"x"被放置在.ebss段。然后,_c_int00程序在运行时把"5"拷贝到"x"的位置。当软件中有初始化全局和静态变量的大量数值时。在C环境引导程序完成并且调用main()(这里看门狗可以被配置或被禁止)函数之前看门狗定时器会超时。在代码开发的过程中,这个问题可能不会在RAM中显现出来,因为从.cinit段拷贝的数据被连接到RAM后会非常快速地运行。然而,当.cinit段连接到内部Flash时。拷贝每个数据将会耗费大量的周期。因为内部Flash存储器缺省为最大等待状态(等待状态仅在用户代码运行到main()后才会被配置)。另外。代码从Flash中实现数据拷贝.这又会增加完成数据拷贝需要的时间(代码取指和数据读肯定会访问Flash)。
看门狗超时周期缺省到尽可能的最小值.结合这么一个事实,看门狗超时变成真实的可能性。有一个简单的方法使用CCS来检测看门狗超时,步骤如下:

?????? (1)为已经写入Flash的代码装载符号(单击File→Load Symbols→Load Symbols Only)

?????? (2)复位DSP(单击Debug→Reset CPU)。

?????? (3)重新开始DSP(单击Debug→Restart)。如果bootloader被设置为"Jump to Flash".那么无需进行这一步。

?????? (4)运行到main()(单击Debug→Go_Main)。如果没有到达main(),那么在C环境初始化程序完成之前看门狗很有可能已经溢出。

?????? 解决看门狗超时问题最简单的办法就是在开始C环境初始化程序之前禁止看门狗。在main()到达之后重新使能看门狗,并且开始正常的代码执行流程。通过将WDCR寄存器中的WDDIS位设置为1来禁止看门狗。必须使用汇编代码(因为C环境还没有建立)。在上文中,Codestart汇编代码段实现了能跳转到C环境初始化程序_c_int00的跳转指令。为了禁止看门狗,这个跳转要变为跳转到看门狗禁止代码。此看门狗代码然后又跳转到_c_int00的程序。下面的代码例子实现了这些功能:

此看门狗代码然后又跳转到_c_int00的程序
此看门狗代码然后又跳转到_c_int00的程序


?????? 6结束语

?????? 文中列举的Flash的这几种用法,在CCS中编程下载到TMS320F28xx DSP开发板上,并通过运行程序验证了其正确性。Flash的这几种用法可以作为系统开发过程中的参考,有助于复杂系统开发。

?


上一页1234下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

DSP? 系统?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈