⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bbscon.htm

📁 5509的确有关资料
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0059)http://bbs.sjtu.edu.cn/bbscon?board=DSP&file=M.1188456357.A -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="bbscon.files/bbs.css" type=text/css rel=stylesheet>
<SCRIPT src="bbscon.files/check.js" type=text/javascript></SCRIPT>
<LINK href="bbscon.files/blue.css" type=text/css rel=stylesheet>
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY>
<CENTER><FONT class=title>饮水思源 - 文章阅读  </FONT>[讨论区: DSP]
<HR>
[<A 
href="http://bbs.sjtu.edu.cn/bbsfwd?board=DSP&amp;file=M.1188456357.A">转寄/推荐</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsccc?board=DSP&amp;file=M.1188456357.A">转贴</A>][<A 
onclick='return confirm("你真的要删除本文吗?")' 
href="http://bbs.sjtu.edu.cn/bbsdel?board=DSP&amp;file=M.1188456357.A">删除</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsedit?board=DSP&amp;file=M.1188456357.A">修改</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsdocnore?board=DSP&amp;file=M.1188456357.A&amp;num=7895">设置可RE属性</A>][<A 
href="http://bbs.sjtu.edu.cn/bbscon,board,DSP,file,M.1188453316.A.html">上一篇</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsdoc,board,DSP,page,394.html">返回讨论区</A>][<A 
href="http://bbs.sjtu.edu.cn/bbscon,board,DSP,file,M.1188485986.A.html">下一篇</A>][<A 
href="http://bbs.sjtu.edu.cn/bbspst?board=DSP&amp;file=M.1188456357.A&amp;reid=1188456357">回文章</A>][<A 
href="http://bbs.sjtu.edu.cn/bbstfind0?board=DSP&amp;reid=1188456357">同主题列表</A>][<A 
href="http://bbs.sjtu.edu.cn/bbstcon,board,DSP,reid,1188456357.html">同主题阅读</A>][<A 
href="http://bbs.sjtu.edu.cn/bbstcon,board,DSP,reid,1188456357,file,M.1188456357.A.html">从这里展开</A>]
<TABLE class=show_border width=610>
  <TBODY>
  <TR>
    <TD><PRE>发信人: <A href="http://bbs.sjtu.edu.cn/bbsqry?userid=damo">damo</A>(algo), 信区: DSP
标  题: 有感而发:TMS320C5509通过外部FLASH实现自引导启动
发信站: 饮水思源 (2007年08月30日14:45:57 星期四)

tmd 5509 qfp封装只有14个地址线  接并行flash的话 容量太小 只有用GPIO扩展地址空间

但是这样扩展以后 bootloader 怎么读flash来实现boot呢?  其实这种方式已经不能用b
ootloader了  它已经被gpio废掉了 

呜呜  只有自己写个boot的程序 使用直接从flash运行的模式了!
(转载)

引言所谓自引导启动(Bootload)就是指由DSP系统上电之后,系统可以在脱离仿真环境之
下,通过外部设备,将程序装在入内部存储器之中,实现程序的引导启动。TMS320C5509(
以下简称5509)提供了丰富的引导方式,包括直接外部存储器方式引导、主机接口(EHPI
)方式引导、标准串行方式引导和USB方式引导等多种方法。这样的好处是:可以将程序存
储于非易失的外部存储器之中,而在运行时加载到相对高速的内部存储器之中;同时可以
为用户提供多种引导方式,使得DSP的应用更为灵活。这里主要讨论的是采用FLASH存储器
方式对程序实现引导。基于5509采用FLASH的字引导方式主要有两种:一种是将程序写入F
ALSH之后在FLASH之中直接运行,这种方法速度较慢;另一种方法是在上电之后,将FLASH
中的程序写入内部的RAM然后运行,这种方法可以提供更高的速度,因而得到广泛的采用。
传统的自引导启动方法需要用户更具不同的引导方式建立相应的引导表,进而配置相应的
.cmd文件,最后通过HEX55工具烧写入FLASH之中。这种方法不仅不利于用户掌握,而且也
有一定的局限性,因此这里介绍的方法是通过仿真环境下对FALSH的烧写实现自引导启动。
 1. 启动方式的选择介绍自启动方法之前写说明一下5509提供的FLASH直接引导启动机制。第一步要求确定启动模式为外部存储器模式,5509采用上电之后对
通用IO口GPIO0~3的辨认来实现对引导方式的选择。具体的引导可以见表1。 表1 引导方
式选择 IO.0 IO.2 IO.2 IO.1 C5509A C5509 引导方式 0 0 0 0 - - 保留 0 0 0 1 有 有
 McBSP0 24位串行EEPROM 0 0 1 0 有 有 USB 0 0 1 1 有 - I2C EEPROM 0 1 0 0 - - 保
留 0 1 0 1 有 有 EHPI(多种模式) 0 1 1 0 有 有 EHPI(非多种模式) 0 1 1 1 - -
 保留 1 0 0 0 有 有 外部16位异步存储器 1 0 0 1 有 有 McBSP0 16位串行EEPROM 1 0
 1 0 有 - 8位并行EMIF 1 0 1 1 有 有 16位并行EMIF 1 1 0 0 - - 保留 1 1 0 1 - - 
保留 1 1 1 0 有 有 McBSP0 16位标准串行 1 1 1 1 有 有 McBSP0 8位标准串行 因此,
如果采用FLASH引导,应当将GPIO0~3设置为1000,这样在上电之后,程序从0x400000的地
址开始运行。因此只要在0x400000的位置写入相应的程序就可以实现自启动。这样的启动
在硬件上需要通过5509的CE1来选通外部映射到0x400000~0x800000的FLASH来实现,具体
连接见图1。 图1 DSP和FLASH硬件连接 2. FLASH直接运行先介绍直接将程序在FLASH之中
运行。首先由用户编制主程序工程,由于需要在0x400000的位置运行程序,因此需要将主程序的内存配置(.cmd)文件的程序地址设置在0x400000~0x80000
0之内。可惜的是,在emulator模式下这样的配置将会导致链接出现问题,因此主程序必须
在simulator模式下完成。例如将主程序装入0x400010,编译并链接之后,主程序装入虚拟
的内存之中,然后使用CCS(Code Composer Studio)环境中自带的data save工具将内存
中的数据保留下来。第二个需要用户编制的工程是烧写FLASH的工程,即建立一个emulato
r工程,先load上述保存的数据进入内存,然后烧写入FLASH之中,必须注意的是此时的烧
写地址应当和上面的simulator所配置的地址一致,这里就是0x400010。值得关注的问题是
这样并没有实现自启动,因为上电之后,初始运行地址0x400000的位置并没有有效数据,
因此必须在此FLASH烧写工程中,在0x400000的位置写入跳转指令,将程序计数器指针(p
c)指向FLASH中主程序的入口地址。跳转指令的汇编代码是B 40xxxx,相应的机器码是6A
40xxxx,具体地讲,就是在0x400000和0x400001的地址中烧写入6A40xxxx的数据,具体的
40xxxx为主程序的入口地址。完成了上述工作之后,自启动的工作就完成了。上电之后的
运行情况是首先检测启动顺序,确定为外部FLASH引导,然后程序从0x400000执行跳转程序,跳转到已经烧写入FLASH的主程序的入口地址,从而开始执行主程
序本身。参见图2。 图2 从FLASH直接运行示意图 3. 高速片内RAM运行然后介绍上电之后
将程序从FLASH中装入高速片内RAM运行,这样可以提高程序的执行速度。首先由用户编制
主程序工程,与上面不同的是此程序为emulator模式,装入内存之后,不断电,执行第二
个FLASH烧写程序,将内存中的程序烧写进入FLASH之中。第三个程序在simulator模式下完
成,模拟上电运行后将FLASH中的程序读回片内高速RAM,并且在程序的最后需要加上程序
计数器指针(pc)跳转指令,跳转到主程序的入口地址。最后需要再次编制一个烧写程序
,将此程序写入FLASH相应的位置中。第三个和第四个程序之间通过data save/load来实现
数据保存。两次烧写程序的FLASH地址不能混叠。同样要注意的是需要在0x400000的位置烧
写入跳转指令的机器码,跳转到程序三的入口地址。具体的方法在上面已经详细描述,这
里不再赘述。上电之后的运行情况是首先检测启动顺序,确定为外部FLASH引导,然后程序
从0x400000执行跳转,跳转到保存在低速FLASH里的程序入口地址,接着在FLASH中执行读
出程序,写回高速片内RAM中,写完之后执行跳转指令,将程序计数器指针(pc)指向已进入内存中的主程序的入口地址,从而最后开始执行主程序本身。此
入口地址即为第一个工程的入口地址。参见图3。 结语 实现系统自启动并非DSP的关键技
术,但是却是脱离仿真环境,实现上电系统自动运行所必需的步骤,也是DSP初学者的难点
之一,本文所提供的方法以FLASH读写为核心,可以较为简单地实现系统自启动,希望可以
对读者有抛砖引玉的作用。 图3 从片内RAM运行示意图 
--
世界仍是模拟的
<FONT class=c33>※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.39.132]<FONT class=c37>
</PRE></FONT></FONT></TR></TBODY></TABLE>
<HR>
[<A 
href="http://bbs.sjtu.edu.cn/bbsfwd?board=DSP&amp;file=M.1188456357.A">转寄/推荐</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsccc?board=DSP&amp;file=M.1188456357.A">转贴</A>][<A 
onclick='return confirm("你真的要删除本文吗?")' 
href="http://bbs.sjtu.edu.cn/bbsdel?board=DSP&amp;file=M.1188456357.A">删除</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsedit?board=DSP&amp;file=M.1188456357.A">修改</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsdocnore?board=DSP&amp;file=M.1188456357.A&amp;num=7895">设置可RE属性</A>][<A 
href="http://bbs.sjtu.edu.cn/bbscon,board,DSP,file,M.1188453316.A.html">上一篇</A>][<A 
href="http://bbs.sjtu.edu.cn/bbsdoc,board,DSP,page,394.html">返回讨论区</A>][<A 
href="http://bbs.sjtu.edu.cn/bbscon,board,DSP,file,M.1188485986.A.html">下一篇</A>][<A 
href="http://bbs.sjtu.edu.cn/bbspst?board=DSP&amp;file=M.1188456357.A&amp;reid=1188456357">回文章</A>][<A 
href="http://bbs.sjtu.edu.cn/bbstfind0?board=DSP&amp;reid=1188456357">同主题列表</A>][<A 
href="http://bbs.sjtu.edu.cn/bbstcon,board,DSP,reid,1188456357.html">同主题阅读</A>][<A 
href="http://bbs.sjtu.edu.cn/bbstcon,board,DSP,reid,1188456357,file,M.1188456357.A.html">从这里展开</A>]</CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -