dsp281x变量地址数组定位方法

[复制链接]
3458|6
 楼主| guoxuekun 发表于 2008-8-29 17:38 | 显示全部楼层 |阅读模式
<br />void&nbsp;FlashObj::ChipErase(void)<br />{<br />&nbsp;&nbsp;Busy&nbsp;=&nbsp;true;<br />&nbsp;&nbsp;FLASH[0x5555]&nbsp;=&nbsp;0xaa;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH[0x2AAA]&nbsp;=&nbsp;0x55;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH[0x5555]&nbsp;=&nbsp;0x80;<br />&nbsp;&nbsp;FLASH[0x5555]&nbsp;=&nbsp;0xaa;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH[0x2AAA]&nbsp;=&nbsp;0x55;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH[0x5555]&nbsp;=&nbsp;0x10;<br />&nbsp;&nbsp;Wait(FLASH[0x5555]);<br />&nbsp;&nbsp;Busy&nbsp;=&nbsp;false;<br />}<br /><br />在函数ChipErase中,Flash变量地址0x85555是用FLASH[0x5555]表达的.<br />这样用数组寻址比较直观~~~<br /><br />实现方法如下:<br /><br />1.在CMD文件中<br /><br />MEMORY<br />{<br />PAGE&nbsp;0:&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Program&nbsp;Memory&nbsp;*/<br /><br />PAGE&nbsp;1:&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Data&nbsp;Memory&nbsp;*/<br />&nbsp;&nbsp;&nbsp;ERAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;origin&nbsp;=&nbsp;0x100000,&nbsp;length&nbsp;=&nbsp;0x04000<br />&nbsp;&nbsp;&nbsp;EFLASH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;origin&nbsp;=&nbsp;0x080000,&nbsp;length&nbsp;=&nbsp;0x10000<br />}<br /><br />SECTIONS<br />{<br />&nbsp;&nbsp;&nbsp;ERamRegsFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&gt&nbsp;ERAM,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;=&nbsp;1<br />&nbsp;&nbsp;&nbsp;EFlashRegsFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&gt&nbsp;EFLASH,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;=&nbsp;1<br />}<br /><br />2.在C/C++文件中<br />#pragma&nbsp;DATA_SECTION(&quot;ERamRegsFile&quot;)&nbsp;<br />volatile&nbsp;unsigned&nbsp;int&nbsp;RAM[0x4000];<br /><br />#pragma&nbsp;DATA_SECTION(&quot;EFlashRegsFile&quot;)&nbsp;<br />volatile&nbsp;unsigned&nbsp;int&nbsp;FLASH[0x10000];<br /><br />3.在应用程序中<br />extern&nbsp;unsigned&nbsp;int&nbsp;RAM[];<br />extern&nbsp;unsigned&nbsp;int&nbsp;FLASH[];<br />转载请注明出自DSP交流网&nbsp;DSP学习第一论坛&nbsp;DSP技术应用与推广平台&nbsp;DSP开发服务平台&nbsp;http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=9372<br /><br /><br /><br />
hotpower 发表于 2008-8-29 20:19 | 显示全部楼层

搞不明白楼主把我的帖子乱发

  
zhk1 发表于 2008-8-29 21:21 | 显示全部楼层

请教下大叔

hotpower大叔,见你之前对DSPbios研究了一番,想请教下要在2812的项目上<br />跑上BIOS,基本的过程给指点一下。配置工具也学了段时间了,例子程序也<br />跑了下,下一步是结合自己的项目,加上BIOS。谢谢先
hotpower 发表于 2008-8-29 21:38 | 显示全部楼层

DSPbios和一般的OS雷同,要注意它和裸奔的不同

DSPbios确实不错,但也有很多不足,但比裸奔优雅的多~~~<br /><br />但是TI的DSPbios例程一般般,好像是个不会OS的在编写DSPbios的应用,<br /><br />真是糟蹋了DSPbios~~~<br /><br />学好DSPbios只需掌握硬件中断,软件中断,任务,消息,邮箱,队列等等。<br /><br />任务是重点,特别是优先级的安排,还有要具有“团队协作精神”,要注意<br /><br />适当的时候把控制权交换OS.<br /><br />DSPbios的设置等很方便,不用真可惜~~~
zhk1 发表于 2008-8-29 22:19 | 显示全部楼层

还是大叔热情

大叔提的那些也都基本了解了,下一步就是针对程序,加到BIOS里了,不知道路还有多远。。。<br />要是有针对项目来做BIOS的例子就好办多了,确实自带的例子就是操作几个模块,没啥。。<br />BIOS和裸机的程序不知道还要改变多少,难道要大变脸,还是就HWI,SWI,TSK……那调几个函数,后在MAIN那来回跑,来回查找优先级高的任务。。
zhk1 发表于 2008-8-30 16:40 | 显示全部楼层

晕CSL

2812的外设CSL没有带,大家的BIOS都是怎样用的那。自己搞时间来不急。我程序里几乎所有的外设都用了。晕!
hotpower 发表于 2008-8-31 09:03 | 显示全部楼层

2812不带CSL,还是自己做吧,裸奔里的方法很多

我在5402里用BIOS也没加CSL一样用,思路清晰些。<br /><br />我喜欢用C++,这样每个硬件模块都可以封装带一个类中,即可代替CSL.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部