guoxuekun 发表于 2008-8-29 17:38

dsp281x变量地址数组定位方法

<br />void&nbsp;FlashObj::ChipErase(void)<br />{<br />&nbsp;&nbsp;Busy&nbsp;=&nbsp;true;<br />&nbsp;&nbsp;FLASH&nbsp;=&nbsp;0xaa;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH&nbsp;=&nbsp;0x55;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH&nbsp;=&nbsp;0x80;<br />&nbsp;&nbsp;FLASH&nbsp;=&nbsp;0xaa;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH&nbsp;=&nbsp;0x55;&nbsp;&nbsp;<br />&nbsp;&nbsp;FLASH&nbsp;=&nbsp;0x10;<br />&nbsp;&nbsp;Wait(FLASH);<br />&nbsp;&nbsp;Busy&nbsp;=&nbsp;false;<br />}<br /><br />在函数ChipErase中,Flash变量地址0x85555是用FLASH表达的.<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;<br /><br />#pragma&nbsp;DATA_SECTION(&quot;EFlashRegsFile&quot;)&nbsp;<br />volatile&nbsp;unsigned&nbsp;int&nbsp;FLASH;<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.
页: [1]
查看完整版本: dsp281x变量地址数组定位方法