打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
终于搞出来ARM在片内RAM或从片内flash启动了,说说过程体会【恢复】 中国电子开发网...
首先说明:俺只是一个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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
stm32存储器结构、 IAR 开发环境下的.icf 文件、.map文件 解析
IAR EWARM软件软件配置
手把手教你制作基于IAR、STM32H7的下载算法
利用IAR调试Mini2440
在IAR环境下,lpc2478 用户程序的地址及中断向量设置
S3C44B0使用J
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服