发现一篇好**,可惜有点看不懂

[复制链接]
 楼主| cruby 发表于 2007-7-10 16:25 | 显示全部楼层 |阅读模式
今天看到一篇文章,介绍了一种新的2407调试程序的方法,感觉不错,不过有几处地方看得不是很懂,还请各位指教<br />/*******************************************************<br />3&nbsp;&nbsp;&nbsp;一种新的程序调试方法分析&nbsp;<br />3.1&nbsp;<br />程序调试前的准备工作&nbsp;<br />与&nbsp;TI&nbsp;公司的其他系列的&nbsp;DSP&nbsp;芯片不同<br />TMS320LF2407必须从程序存贮器的&nbsp;0000h单元读<br />取复位向量<br />所以在程序调试以前&nbsp;要在&nbsp;0000h&nbsp;单<br />元写入复位向量&nbsp;一般采用&nbsp;TI&nbsp;公司提供的<br />2407FLASH&nbsp;烧写插件将一段中断向量表烧入片内&nbsp;&nbsp;//1.具体怎么实现呢?<br />FLASH&nbsp;的&nbsp;0000h&nbsp;单元&nbsp;其格式如下&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;.vectors&quot;&nbsp;<br />RESET&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_c_int0&nbsp;<br />INT1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHANTOM&nbsp;<br />INT2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHANTOM&nbsp;<br />INT3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHANTOM&nbsp;&nbsp;&nbsp;<br />INT4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHANTOM&nbsp;&nbsp;&nbsp;<br />INT5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHANTOM&nbsp;<br />┊&nbsp;<br />此时在命令文件&nbsp;CMD&nbsp;文件&nbsp;中的程序起始<br />将上边的中断向量表烧入<br />地址应为0000h<br />FLASH&nbsp;在&nbsp;DSP&nbsp;上电后&nbsp;程序指针将指向_c_int0<br />所存放的地址&nbsp;使存放在&nbsp;RAM上的程序得以执行&nbsp;&nbsp;<br /><br />3.2&nbsp;TMS320LF2407&nbsp;程序调试的实现&nbsp;<br />&nbsp;&nbsp;首先&nbsp;在硬件设计时将&nbsp;2407&nbsp;芯片的<br />MP/MC&nbsp;引脚接地&nbsp;使器件被配置为微控制器方式&nbsp;&nbsp;//2.将MP/c#接地跟在SCSR2中设为0有什么区别吗?<br />片内&nbsp;FLASH&nbsp;可以被访问&nbsp;器件从片内存贮器中读<br />取复位向量&nbsp;&nbsp;<br />&nbsp;&nbsp;程序中将&nbsp;SCSR2&nbsp;中的&nbsp;BOOT&nbsp;EN&nbsp;位设置为<br />1&nbsp;禁止引导&nbsp;ROM&nbsp;TMS320LF2407&nbsp;片内&nbsp;FLASH<br />程序存储器映射地址范围为&nbsp;0000h&nbsp;7FFFh&nbsp;将<br />DON&nbsp;和&nbsp;PON&nbsp;位分别配置为&nbsp;0&nbsp;1&nbsp;使&nbsp;SARAM&nbsp;被映<br />射到片内程序空间&nbsp;TMS320LF2407&nbsp;上电复位后<br />BOOT&nbsp;EN&nbsp;位设置为&nbsp;1&nbsp;DON&nbsp;和&nbsp;PON&nbsp;位分别配置<br />为&nbsp;1&nbsp;1&nbsp;如使用系统默认值也能完成本设计&nbsp;&nbsp;<br />&nbsp;&nbsp;命令文件&nbsp;CMD&nbsp;文件&nbsp;中&nbsp;将程序空间分<br />配到从&nbsp;8000h&nbsp;开始的&nbsp;2K&nbsp;空间&nbsp;其格式如下&nbsp;&nbsp;<br />-o&nbsp;example.out&nbsp;<br />-stack&nbsp;100&nbsp;<br />example.obj&nbsp;<br />-l&nbsp;rts2xx.lib&nbsp;<br />MEMORY&nbsp;<br />PAGE&nbsp;0:&nbsp;VECS:&nbsp;origin=0x8000,&nbsp;length=0x0040&nbsp;<br />&nbsp;&nbsp;PVECS:&nbsp;origin=0x8044,&nbsp;length=0x0100&nbsp;<br />&nbsp;&nbsp;PROG:&nbsp;origin=0x8150,&nbsp;length=0x0680&nbsp;<br />程序调试完后&nbsp;将起始地址由&nbsp;8000h&nbsp;改为<br />0000h&nbsp;就能将程序成功烧入&nbsp;DSP&nbsp;芯片内部的<br />FLASH&nbsp;之中&nbsp;&nbsp;<br />3.3&nbsp;&nbsp;此方案要注意的问题及其解决方法&nbsp;<br />方法对&nbsp;TMS320LF2407&nbsp;进行程序调试时&nbsp;若<br />程序超出&nbsp;2K&nbsp;可将程序模块化&nbsp;各模块分开调试<br />全部调试成功后再将其整理为一个文件&nbsp;在编译器<br />中编译并生成&nbsp;OBJ&nbsp;文件&nbsp;然后烧写到&nbsp;FLASH&nbsp;中进<br />如果单个模块超过&nbsp;2K&nbsp;可将模块中的部<br />行联调<br />分程序屏蔽<br />对模块中的各个功能进行调试&nbsp;&nbsp;<br />4&nbsp;&nbsp;&nbsp;结束语&nbsp;<br />上述方案能实现没有片外扩展程序存储器情<br />以减少资源的浪费和电路设计的<br />况下的程序调试<br />难度&nbsp;获得更高的效率&nbsp;&nbsp;<br />***************************************************<br /><br />我看不懂的是:<br />1.如何将中断向量烧到片内呢?是不是建一个asm文件,然后编译通过后就烧进去呢?不需要C语言源程序吗<br /><br />2.文中提到将MP/MC#置0,这跟在软件中将其置0有什么区别呢?
 楼主| cruby 发表于 2007-7-10 17:23 | 显示全部楼层

上传一下整个文件

https://bbs.21ic.com/upfiles/img/20077/200771017212782.pdf
zhaoxinzxzx 发表于 2007-7-10 22:58 | 显示全部楼层

建议楼主多阅读一下手册

1.**中说的很明确了,是用TI提供的烧写插件完成的,CCS2.1以上版本都包含这个插件,在菜单Tools-&gtOn&nbsp;Chip&nbsp;Flash&nbsp;Programer<br /><br />2.系统在复位时要检测MP/MC#这个引脚的状态,来决定从什么位置来执行程序,复位后,程序地址空间0x0000~0x7fff是在片内还是在片外由SCSR2.2这位决定。也就是说程序地址空间0x0000~0x7fff是在片内还是在片外在复位前由MP/MC#这个引脚决定,复位后由由SCSR2.2这位决定。<br /><br />建议楼主多阅读一下手册http://focus.ti.com/lit/ug/spru357c/spru357c.pdf<br />这个问题在2-7页上就能找到说明
li_mu 发表于 2007-7-10 23:12 | 显示全部楼层

这种方式是否对系统利用不充分啊

感觉如果不是对系统电路成本要求高,这么搞似乎没必要吧
 楼主| cruby 发表于 2007-7-11 11:48 | 显示全部楼层

不好意思,怎么烧呢?

/**********************************************************<br />1.**中说的很明确了,是用TI提供的烧写插件完成的,CCS2.1以上版本都包含这个插件,在菜单Tools-&gtOn&nbsp;Chip&nbsp;Flash&nbsp;Programer<br />**********************************************************/<br /><br />利用插件烧我也知道,但是具体怎么实现呢?打开这个烧写插件后,得载入一个.out文件吧,这个文件是怎么生成呢,是自己写个asm文件,然后编译一下生成呢还是要用到一个c语言的源文件件呢?<br /><br />另外,我觉得这样利用系统才充分,省了外扩Ram的麻烦,对于小程序来说非常适合
zhaoxinzxzx 发表于 2007-7-11 22:52 | 显示全部楼层

re:

建立一个生成.out文件的工程,编译后就能得到.out文件了,程序的源文件当然可以是C也可以是汇编了。如果你不知道怎么生成.out文件,可以打开一个CCS自带的例子程序,编译后就能够生成.out文件了。然后你可以看看它的工程是怎么设置的。<br /><br />我也觉得没必要外扩RAM,大多数应用片内的FLASH足够了。
 楼主| cruby 发表于 2007-7-14 17:38 | 显示全部楼层

搞定

终于搞定,不用外扩RAM,不用每次烧程序,呵呵,感觉就是不一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

64

帖子

0

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