人体的电阻是多少:终于搞出来ARM在片内RAM或从片内flash启动了,说说过程体会【恢复】 中国电子开发网...

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 20:39:48
首先说明:俺只是一个ARM菜鸟,所以这点小小的东东也很兴奋,请原谅俺的无知吧,谢谢

板子的硬件调试通过后,用了一周的时间才把一个简单的LED测试程序分别在片内RAM和片外flash调试通过,中间那个叫痛苦啊,首先记住一个教训:以后开发一种新的CPU,一定要在原理设计阶段就开始考虑程序设计,考虑玩玩开发板,熟悉新的开发软件,不至于到硬件调试完后匆忙上阵,前面对CPU的认识又忘记的差不多了。另外软件不一定用最新的,这次用IAR5.20,结果跟4.X有很多不一样的地方,与别人交流都很困难。这次吃了大亏,年前这个程序不知道能不能完成,这可关系俺的饭碗啊。
ARM:AT91SAM9260 开发环境:IAR5.20+H-JTAG(H-Flash)+wiggler
主程序就是一个简单的点亮LED测试程序就不说了,关键是IAR的设置方面:

首先是在片内RAM调试,关键在于IAR5.20的链接配置文件.icf文件(对应IAR4.X的XCL文件),开始时根据ATMEL的库文件Sdram.icf修改了一个icf文件,怎么都不行,IAR5.20的icf格式又与4.X的XCL格式有很大的不同,没办法就死啃IAR的帮助文件,EWARM_DevelopmentGuide.ENU.pdf,这个文档的73页有一个ICF的范例,A Simple Example of A Configuration File,自己照葫芦画瓢写了一个简单的ICF文件,写多了,逐渐发现其中的猫腻了,这个文件无非包括三个内容:定义存储区域;初始化堆栈;放置代码和数据。定义存储区域就是声明你的硬件系统上的ROM和RAM地址范围,初始化堆栈就是定义堆栈大小并将其放到一个特定区域,放置代码和数据一般就是将readonly就是代码放置到ROM或FLASH,将readwrite就是数据变量啥的放置到RAM,并且将中断向量放置到OM或FLASH的起始位置。这个文件很熟了以后,万里长征就走了一大步了,片内RAM调试的话,就直接在ICF文件中将片内ROM的地址和片内RAM的地址都指向片内RAM的地址就可以了。
就是这样子:9260的片内RAM起始地址为0x200000,片内ROM实际地址为0x100000,再此将其指向片内RAM。
define symbol __ICFEDIT_region_ROM_start__ = 0x200000;
define symbol __ICFEDIT_region_ROM_end__   = 0x207FFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x200000;
define symbol __ICFEDIT_region_RAM_end__   = 0x200FFF;

然后就是片外norflash启动,首先直接将BMS引脚接地,H-JTAG和banyan都是找不到芯片的,正确的做法是,将BMS接高,片内启动,将IAR生成的Binary文件烧进flash然后在BMS接地,程序从norflash启动。说到烧flash自然想起H-JTAG的小弟H-FLASH,可是这个H-FLASH不是那么好用的,用过的都知道,里面要用到一个初始化脚本,开始我不懂这个东东是干啥用的,随便下载了一个脚本就用上了,其实这个初始化脚本与前面说到的icf文件一样都是与自己的硬件系统息息相关的,这个初始化脚本重要的有两处:制定合法的RAM和片外flash地址和初始化片外存储器。为什么要合法的RAM地址,因为H-JTAG的下载机制是先将一个程序A下载到RAM,然后这个程序A再将你真正要下载的程序B下载到flash。所以要一个合法的RAM地址,片内RAM足够了,不知道为啥我的片外RAM就不行(后面也初始化了)?flash地址一定是真正的地址,比如说0x10000000。另外就是初始化你的片外flash,不初始化,照样找不到。同样此时,在IAR的icf文件中,你要声明你的片外flash地址。并将中断向量存放到片外flasha起始地址。至于MAC文件,这里只要的作用好像与H-flash的初始化脚本重复了,都是初始化片外存储器的作用,好像不要也可以,具体还没有试。这样就可以在IAR中编译生成Binary文件然后在BMS接高的情况下,下载到片外flash中,然后断电,将BMS接地,程序将从norflash启动运行。

接下来就是试验Remap到RAM,好像有点难,一直没能成功,先不搞了,先把我的应用程序写出来,马上过年了,我可不想年前就失业。

前面的过程,我自己搞了好久,一度很郁闷,但最后还是走出来了,也请教了很多朋友,有公司的同事SYD,ouravr的bozai,小马哈等网友,向他们表示感谢。也希望陷在ARM魅力下的朋友能够越学越好。

由于是初学ARM,以上肯定有错误遗漏之处。还请批评指教,谢谢!

QQ:277565600
MSN:ch2003_23@hotmail.com
什么是片内寻址 如何在QQ空间内贴图片 请教word问题(内附图片) 塘沽区浙小如不是片内怎样进? 一及和二及缓存是从哪个微处理机开始集成片内? 有时从迅雷下载的影视片提示24小时内要求删除是怎么回事 如何做博客?如何在博客里的文章内贴图片? 谁能知道这张照片的效果是怎么搞出来的啊?难! 哪里才是西城育民小学的片内? 片内程序存储器有多少个字节? 片内数据程序存储器有多少个字节 哪个小区被划入塘沽实验小学的片内 请问格调春天划归哪所小学片内 怎么样把片外一个数送到片内(单片机编程) 切开洋葱头,在三片鳞片叶内表面上各撕下一小块表皮,按顺序摆在载玻片上,制成临时装片看到啥现象?解释 如何将ram格式转化成名片 怎样在QQ空间的留言板内附上图片以及如何在个人的签名档上附图片? 手肘脱臼好了却发现了骨片,在三角腔内的话会疼吗?不在的话呢? 求香港警察片或黑社会片 ML后在十二小时内吃了紧急避孕药,在没吃第二片药之前又ML了,还需要吃两次的药吗? 我君子兰叶子在两个月内先后黄了6片,是不是和我家客厅空调有关系?还有什么别的原因,还剩9片叶了,急! 如果两天内吃了四片毓婷,,对身体会有什么影响吗。。 大家好,请问东四十条新中西街那片楼房几年内会不会拆?谢谢! 服用毓婷后12小时内没有服第二片避孕是否有效