嵌入式系统设计与开发 马文华 主编 邓耀华 汤秀春 胡伟 副主编 7嵌入式系统设计与开发新.ppt

嵌入式系统设计与开发 马文华 主编 邓耀华 汤秀春 胡伟 副主编 7嵌入式系统设计与开发新.ppt

  1. 1、本文档共227页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统设计与开发 第7章 部件工作原理与开发实例 本章提要 7.1 Flash存储器 7.2 SDRAM存储器 7.3 通用I/O接口 7.4 串行通信接口 7.5 中断控制器与键盘 7.6 定时器 7.7 LCD控制器 7.8 I2C总线接口 7.1 Flash 存储器 S3C44B0X自身不具有ROM,因此必须外接ROM器件来存储掉电后仍需要保存的代码和数据。闪速存储器(flash memory)具有非易失性,并且可轻易擦写。 Flash ROM采用标准总线接口与处理器交互,读取不需要任何特殊的代码,但需要首先在硬件上设定OMl~0和大/小端,以便使处理器知道Flash ROM的数据长度和位序。 作为代码存储器,Flash ROM映射在处理器的Bank0地址空间(从系统地址0始)。系统上电复位时,处理器就自动从0址处开始取得指令运行,因此Flash ROM中要存放系统启动代码,这些代码必须在系统上电时完成一系列初始化的工作。经过这些初始化,系统才可以正确启动并开始工作。 7.1.2 存储器初始化 初始化存储器系统的编程对象是系统的存储器控制器。存储器 控制器并不是ARM内核的一部分,不同的系统其设计不尽相 同,所以应该针对具体要求来完成这部分的程序设计。 1.存储器类型和时序配置 通常Flash和SRAM同属于静态存储器类型,可以合用同一 个存储器端口,而DRAM因为动态刷新和地址线复用等特性, 通常配有专用的存储器端口。 因为一般系统运行的速度瓶颈都在于存储器访问,所以存 储器访问时序应尽可能地快,但同时又要考虑由此带来的稳定 性问题,所以只有根据具体选定的芯片,进行多次的测试之 后,才能确定最佳的时序配置。 2. 存储器地址分布 一种典型的情况是启动ROM的地址重映射(remap)。 当一个系统上电后程序将自动从0地址处开始执行,因此在系统的初始状态,必须保证在0地址处存在正确的代码,即要求0地址开始处的存储器是非易失性的ROM或Flash等。但是因为ROM或Flash的访问速度相对较慢,每次中断发生后都要从读取ROM或Flash上面的向量表开始,影响了中断响应速度。因此有的系统便提供一种灵活的地址重映射方法,可以把0地址重新映射到RAM中去。在这种地址映射的变化过程当中,程序员需要仔细考虑的是程序的执行流程而不能被这种变化所打断。 系统上电后从Flash内的0地址开始执行,启动代码位于地址0x100开始的空间,当执行到地址0x200时,完成了一次地址的重映射,把原来0开始的地址空间由Flash转给了RAM。接下去执行的指令(这里为简化起见,忽略流水线指令预取的模型)将来自从0x204开始的RAM空间。如果预先没有对RAM内容进行正确地设置,则里面的数据都是随机的,这样处理器在执行完0x200地址处的指令后,再往下取指执行就会出错。解决的方法就是要使RAM在使用之前准备好正确的内容,包括开头的向量表部分。 启动ROM地址重映射对程序执行流程的影响 7.1.3 Flash 的调试和程序固化 1.Flash调试 当由于硬件资源限制,或者需要观察应用程序在实际硬件环境中运行的情况时,可以把在RAM调试通过的应用程序Bin代码文件烧写到Flash 芯片中进行调试。烧写到Flash芯片的程序运行不能得到正确结果或看要观察程序在Flash中的运行情况,这些都需要进行Flash调试工作。 程序在Flash中调试与在RAM中调试工程配置不同: 1)调试选项中不需要执行脚本文件,该工作在启动 文件中完成,需要将连接后行为选项改为无。 2)调试过程也有所不同,连接仿真器后,无需再执 行下载程序操作,如果要从启动程序的入口开始 调试程序,必须先执行复位命令,此时程序将停 在零地址处。 2. 程序固化 在RAM中调试通过的程序与最终固化到Flash中的程序有所区别,用户需要在汇编器的预定义选项中设置编译定义符号,或者直接在初始化文件中增加定义编译项,由启动文件自己完成存储区的重映射而不是由命令脚本完成。 在链接器的链接文件中选择flash.ld,该链接文件和启动文件配合完成最初下载到Flash中的数据段的工作。 完成改动后,重新编译程序。然后使用Elf to Bin工具将.elf文件转换成二进制指令格式文件.bin。再利用Flash Programmer工具将.bin下载到Flash中。 7.1.4 Flash

文档评论(0)

时间加速器 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档