TQ2440下keil测试程序

4星(超过85%的资源)
所需积分/C币:9 2012-08-30 07:54:36 2.82MB ZIP
15
收藏 收藏
举报

主要内容: 一楼: 一. 简单原理介绍 二楼: 一. 复制代码, 建立并配置工程 二. 修改部分代码 三. 测试结果 (看不到图片的可以下载4楼的word文档, 移植成功的程序代码在6楼) 前段时间发了这个教程: http://www.armbbs.net/forum.php?mod=viewthread&tid=10423 把标题定为教程实在是我自夸了点, 其实应该算是我学习的总结吧, 写份文档, 自己以后忘了也有个参考, 又可以帮助和我卡在同一个问题的新手, 其实我也是新手, 新手教新手, 不知道会不会误导大家了... 一. 简单原理介绍 那个教程里面主要讲了一些简单的配置, 原理没有仔细介绍, 其实当时我也不太懂, 当时看重的是实际效果, 原理嘛, 在我们从SB到NB的过程会慢慢理解的, 现在稍微理解了一点, 在写这篇教程之前简单介绍一下之前的存储器的地址配置的问题吧, 也和等会移植的内容有关啦, 耐心看吧: TQ2440开发板算起来应该是有3个片外存储器吧, 一个是 nand flash, 一个是 nor flash, (这两个应该算是ROM了), 还有一个SDRAM (就是RAM啦, SDRAM是个什么东西, 还没学数电...不知道...) 首先,2440的程序代码是可以存放在SDRAM里面运行的.从汇编上讲, 就是程序指针(PC指针, 程序计数器, 各种称呼, 指向一下条要执行的程序代码 的一个寄存器)可以指到SDRAM的内存单元. 然后再说nor flash, 2440的程序也可以在nor flash里执行, 原因我不清楚. 从nor flash启动的时候, PC指向的0地址就是nor flash的首地址, 就是说nor flash 的首地址映射到内存的0地址, 对比一下SDRAM, SDRAM在2440是映射到0x3000 0000 地址 然后是nand flash, nand flash 也是映射到了 0地址, 为样就和nor flash有冲突了, 所以就有了从nor 启动和从nand启动的区别了, 然后我又想说, 其实nand本身是不能运行程序的(这里的意思是说, 因为nor flash本身为了容量大和本身的接口, 是不能向CPU不断的快速的输送指令的, 我的理解就是这样, 大家可以去参考nor 和 nand 的区别的资料), 既然我说nand不能运行程序, 那个地址映射有什么意义? 是这样的, 2440从nand启动的时候, 它内部的nand flash控制器会把前4k的代码复制到内部的缓存去执行, 而这些缓存就是对应地址的0单元开始. (其实这个直接去参考2440 datasheet 上的地址映射会比看我在这里瞎说的强...) 刚才说了从nand启动的时候是把前4k的代码复制到内部的缓存去执行的, nand flash的容量远远远远大于4K呀, 不充分利用就太浪费了...如果你的程序超过4K了怎么办? 很简单, 你在前4K的程序里, 利用什么for啊while之类的把剩下的代码复制到SDRAM里面去, 复制完了以后后再用一条汇编指令 ldr (用来跳转到绝对地址的, 类似C语言的goto, 但有点区别) 跳到SDRAM里面继续执行, (因为前4K的代码在内部缓存运行的时候对应的地址是从0-4K的, SDRAM是的地址是从0x30000000开始的, 你不跳, 就等着系统崩溃吧). 刚才说的这些工作你可以自己写代码, 也可以移植个boot loader来帮你做, 操作系统就是从boot loader开始的...这部分我没学, 不说了... 那么ldr指令是怎么跳转的? 在2440init.s里有这两句, ldr pc, =copy_proc_beg copy_proc_beg 类似C语言的 goto copy_proc_beg copy_proc_beg: 注意, 我说的是类似, 从汇编层面是讲, 是有很大的不同的, 我比较懒, 就不详细解释了 上面的ldr 的作用就是: 你的工程最后生成可执行的代码里面, copy_proc_beg 对应的地址(绝对地址, 就是说应该放在存储器的哪个位置), 会被复制到PC指针, 所以我们在nand启动的工程配置里, rom应该是这样的: srart(开始): 0x30000000 size(大小, 我这里是随便设置的): 0x800000 抱歉, 我之前的教程里的生成下载到nand的bin文件的那部分配置讲错了, 当时并不理解, 不过, 小于4K的程序还是可以用的了^_^ //////////////////////////////////////////////////////////////// 补充

...展开详情
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
Vinx911 Dabort exception!!! 自己找找问题吧
2015-11-14
回复
撒哈拉的鲨鱼 楼主的分享不错,主要是指明了Keil下的思路,多谢!
2014-01-12
回复
bianmaozhan 中断部分有问题,请改下,依旧感谢
2014-01-09
回复
PeOS 中断确实不能用,得改进。
2013-11-17
回复
tesstemple 确实不能中断处理,也不能设置断点,学学自己怎么改进吧
2013-04-16
回复
linansan 是一个比较好的程序,但是在RAM里面模拟的时候出现了问题,不能中断处理,需要改善。
2012-09-19
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享达人

关注 私信
上传资源赚钱or赚积分
最新推荐
TQ2440下keil测试程序 9积分/C币 立即下载
1/0