![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| TMS320C672x开发笔记之FlashBurn | |||||
作者:FreeNet 文章来源:FreeNet 点击数: 更新时间:2008-2-29 ![]() |
|||||
|
当所有的程序都调试完毕,所要做的最后一步工作就是烧写Flash芯片了,这个可是大功告成的关键哦。我所选用的Flash芯片为SST39W 由于dsp只有12根地址线,再加上BA[1]也就是13根地址线,dsp能够管理的地址范围是16kB,所以在烧写时候,超过了16kB要进行手动翻页才能实现烧写全部代码,这一点偶折腾了很久,当时为了印制板走线方便,没有按照寄存器排列的顺序设置地址线,所以几次译码都出错了,也查了好几次。 每次烧写的代码长度为0x4000(16kB),第一次烧写是对0x90000000~0x90003fff,当烧写完这第一个0x4000长度的代码时候,需要手动操作GPIO,也就是给FLASH高位地址置位,然后再从0x90000000这个地址进行烧写,如此反复,直到全部代码烧写结束。对DSP而言,所有的Flash操作都是在这一个地址范围内执行。 又因为这个Flash是16位的,所以它的操作命令字地址也是按照16位的总线宽度命名的,也就是说0x5555这个地址要乘以2才是实际的物理地址(按字节排序),0x2AAA也是如此,这个时候的关键算法就是要把地址乘以2才能真正的把命令字写进去,不然始终操作不成功,又兼这里地址需要扩展,还要手动翻页,真是够烦的了,任意一个环节出了错误都不能完成任务,偶为了烧写真是挠破了头皮,所以一定要把好好总结一下,让后来的开发者少走弯路,尽快完成任务。 我定义的2个命令字地址如下,因为移位要比做乘法快,所以我选择左移一位,其实就是乘以2,定义如下: #define FlashCMDaddress5555 0x5555<<1 #define FlashCMDaddress2aaa 0x2aaa<<1 这里共享几个命令的操作代码: void FlashChipiErase(void) { FlashReset(); WriteFlash(FlashCMDaddress5555,0xaa); WriteFlash(FlashCMDaddress2aaa,0x55); WriteFlash(FlashCMDaddress5555,0x80); WriteFlash(FlashCMDaddress5555,0xaa); WriteFlash(FlashCMDaddress2aaa,0x55); WriteFlash(FlashCMDaddress5555,0x10); WaitTime(ms100); FlashReset(); SetFlashAddressH(0); } void FlashProgram(unsigned int address,unsigned short data) { WriteFlash(FlashCMDaddress5555,0xaa); WriteFlash(FlashCMDaddress2aaa,0x55); WriteFlash(FlashCMDaddress5555,0xa0); WriteFlash(address,data); while(ReadFlash(address) !=data) { ; } FlashReset(); } unsigned short FlashID(void) { unsigned short var1,var2; FlashReset(); WriteFlash(FlashCMDaddress5555,0xaa); WriteFlash(FlashCMDaddress2aaa,0x55); WriteFlash(FlashCMDaddress5555,0x98); var1=*(unsigned int *)0x90000000; var2=*(unsigned int *)0x90000002; FlashReset(); if((var1==0xbf)&&(var2==0x2780))//读出厂商及芯片代码 return (unsigned short)0; else return (unsigned short)-1; } 因为目标代码的烧写就是一个文件的数据读取和存储的过程,偶没有用这个芯片存储程序运行过程中的数据,仅仅用来放目标程序,所以仅仅使用片擦除和片写入这两步,至于厂商代码是为了验证芯片是否选错而已。 至于如何读取目标代码文件,如何对数据流进行格式转换都是小菜啦,这里不再赘述。 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| TMS320C672x开发笔记之HPI TMS320C672x开发笔记之EMIF DSP281x无需仿真器,串口烧写… TMS320C672x开发笔记之外部中… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|