ARM初始化程序分析..doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM学习报告001 杜云海 duyunhai@ ARM映象文件及执行机理  ARM学习报告001     2004-5-7     这几天为了弄清楚ARM系统是如何运行相应的可执行程序可谓费尽心机,整个五一假期都没有休息,其中由于烧写flash的软件出了些问题,使得理解ARM映象文件及执行机理更加曲折,不过还好在自己的努力和论坛上兄弟的帮助下,终于还是成功了。作为进入ARM系统设计的重要一步,我觉得这个过程是应该写下来的,既是为了自己的总结,也为了后来进入ARM的人可以少走些弯路。   我的开发板配置如下:  l CPU: S3C4510B芯片(ARM7TDMI核)  l FLASH:1片16×1M位数据宽度的FLASH,共2M 字节Flash(MX29LV160BTC), 速度70/90ns; 16位模式。  l 内存SDRAM:2片4M ×16位数据宽度的SDRAM(HY57V651620B TC-10S)构成, 共16M 字节SDRAM。2片16位拼做32位使用,共用一个片选。  l 简易JTAG调试,两个串口,一个以太网口    从我个人的学习经过认为,初学者最难突破的应该是以下三个方面。所以,本文基本上从这三个方面来阐述。  l ARM映象文件(包括axf文件和bin文件)的生成和组成  l 映象文件下在flash中的状态和运行时的状态(加载域和运行时域)  l 地址重映射remap    本文基本围绕附录给出的那个串口发送程序MySComm4510b002.mcp而展开的。这个程序的初始化和地址重映射部分参考了twentyone的程序(http://bbs.edw.com.cn/dispbbs.asp?boardID=20&ID=27980&page=1),串口发送部分参考了sofa的程序(那我自己写了什么呢?J)。    首先我们应该建立这样一种概念,对于一个裸机(Flash里什么都没有)来说,所有的细节都得自己设置,不要指望芯片或开发工具可以为你做些什么!所以从第一条指令开始,你就必须负责所有的工作。对于S3C4510B,上电或复位后从0始执行指令,而硬件上我们把Flash接在了CPU的ROMCON0处,所以CPU就是从Flash的0开始取指令,那么我们就必须保证CPU一开始可以取到正确的指令。   小插曲:  我前几天就是被我的flash下载程序害死了,由于下载程序的时序问题,开始的40多个字节里不能正常烧写,结果老是为0xff,而我刚刚开始也不懂得ARM映象文件的内涵,结果以为axf文件就是可执行文件,将其烧入flash,所以程序真正的第一条指令在0x34开始,不能正确烧写的部分正好是axf文件的头,没有影响到真正的指令。程序有时也可以执行(因为0xff相当于空指令一样,程序也可以执行到真正的第一条指令),所以串口输出的都是不对的乱码或字母。  一 ARM的映象文件  1.1 初步认识axf和bin文件  - 1 - ARM学习报告001 杜云海 duyunhai@ 这里我先谈谈ARM的映象文件(即可执行文件)的概念。我们生成的ARM的映象文件有axf格式和bin格式两种,有时容易被二者混淆。其实bin文件是真正的可执行文件,而axf文件是ARM特有的调试文件,里面除了包含bin文件的内容之外,还附加了许多其他调试信息。首先让我们来看看axf和bin的区别,图1~图4是用ultraedit打开的axf文件和bin文件的头部和尾部。这两个文件都是MyScomm4510b002.mcp用ADS1.2生成的(选中target setting中的post-linker:fromelf和ARM Fromelf中的output format:plain binary这两个选项,就可以同时生成相应的axf和bin文件)。  在生成这两个映象文件时,请设置ARMlinker 的选项:ro_base设为0x0000,rw_base设为0xa00000,作用将在本文后面解释。  图1是axf文件,其中反显处才是真正的第一条指令,开始的52个字节都是axf文件头,而图2的bin文件就是真正的第一条指令(所以为什么说bin文件才是真正的可执行文件)。关键是从第一条指令开始的二个文件的比较了,哦,竟然是完全相同的,一直到bin文件的尾部,见图3和图4。即bin文件就是axf文件。不过,二者的相应指令或数据的地址就不一样了,先记住这一点伏笔。Bin文件结束(图4反显处),但axf文件还没有结束(图3中反显指示bin文件相应结束部分),其后还有很多相关的调试信息,这些调试信息可以用在ADW或AXF的load image的调试中。  由

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档