嵌入式系统原理与应用教学课件作者魏权利第12章嵌入式应用程序设计举例课件.pptVIP

嵌入式系统原理与应用教学课件作者魏权利第12章嵌入式应用程序设计举例课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统原理与应用教学课件作者魏权利第12章嵌入式应用程序设计举例课件.ppt

第12章 嵌入式应用程序设计举例 * 第12章 嵌入式应用程序设计举例? 嵌入式处理器的应用主要有两种方式: 一是进行裸机开发,要求开发者既要设计微处理器硬件系统的启动引导程序、又要编写低层接口硬件的初始化程序,还要编写高层的应用程序。因此开发人员需要花费大量的时间熟悉微处理器的硬件系统,编写启动程序和低层接口硬件程序,难度大,开发周期长,但是系统的运行效率极高。 二是基于嵌入式操作系统之上的开发,一般是在成功地移植了系统的Bootloader启动引导程序、嵌入式操作系统之后的平台上进行开发,涉及的低层硬件少,开发周期短,系统的运行效率相对较低。 本设计实例是在FL2440开发板上进行的裸机开发,完成的主要功能就是实时监测环境温度。 * 12.1 系统启动引导程序的功能 嵌入式的启动引导程序是和处理器的体系结构紧密联系在一起的,是嵌入式系统开发的难点之一,它既要求开发者对微处理器的硬件体系结构熟悉,又要求熟练掌握微处理器的汇编语言与编程,还有C语言编程等。它是微处理器运行时必要的基本条件,没有这段与硬件紧密联系的程序代码,多么精悍的微处理器也发挥不了它极其强大的作用。 * 12.1.1 启动引导程序的作用 启动引导代码是系统上电运行的首段代码。 1、在x86的PC机体系结构中,引导程序由主板上的基本输入输出系统BIOS(Basic Input/Output System)和位于磁盘主引导记录MBR(Master Booting Record)区的启动代码组成。MBR位于磁盘介质的0柱面0扇区0磁道。系统上电后,首先执行主板上BIOS,完成系统基本硬件设置、检测和资源分配后,转入系统硬盘MBR中读取引导程序到系统的内存RAM,然后将控制权交给引导程序。引导程序的功能就是将内核映像从硬盘读到内存RAM中,然后跳到内核的入口点运行,即开始启动操作系统。 2、在嵌入式系统中,由于微处理器的种类繁多,它们各自有自己的汇编语言,通常没有像PC机那样的固件程序,因此整个系统的加载启动引导程序需要开发人员来设计。对于一个应用的嵌入式系统来讲,有的需要在操作系统之上开发,有的需要进行裸机开发,但是系统启动时都需要引导程序为它们建立一个良好的系统环境。 * 12.1.2 启动引导程序任务 启动程序是依赖于硬件而实现的,特别是嵌入式系统,为它们设计一个通用的启动引导程序几乎是不可能的,因为这段代码需要使用各自的汇编语言来编写。但是可以归纳一些通用的程序任务还是可以的。嵌入式系统的启动引导程序主要有以下任务: ●设置异常向量入口程序。当CPU发生异常时,进入到其程序的入口地址处,执行完具体任务后返回。 ●关闭看门狗定时器和屏蔽中断。防止在初始化过程中,中断和看门狗定时中断对其初始化过程的影响。 ●设置CPU的工作频率、USB的工作频率、HCLK和PCLK的工作频率。 ●RAM芯片的配置。由于ARM可以外接不同数据长度、不同访问速度的RAM存储器,为了能使CPU正确的访问RAM,必须根据RAM的数据线宽度、访问时的时延配置RAM芯片。 ●设置各种异常的堆栈指针。用于进入异常时的现场数据保护,包括以后使用的C语言程序。 ●设置中断(有普通中断IRQ和快速中断FIQ)指针的传递。由于ARM没有为它的32个中断源配置固定的中断向量地址,而且中断服务函数的入口地址是在内存RAM中,所以中断函数的入口地址要通过指针传递到固定的异常(中断)向量地址处0普通中断IRQ)或0x0000001C(快速中断FIQ)。 ●将烧写在BANK0区中的Nand Flash或Nor Flash存储器的代码段搬移到内存RAM中。 还有等等。 ●跳到C语言入口处,开始执行由C语言编写的硬件初始化程序、应用程序等或进入操作系统中。 * 12.1.3 引导程序的启动流程 启动流程分为stage1和stage2两个阶段: 一般依赖于 CPU 体系结构的代码,比如设备初始化代码等,都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍且启动快的目的; 而 stage2 则通常用C语言来实现,这样可以实现各种复杂的功能(比如串口、以太网接口的支持等)。 * 1. stage1的主要工作 ① 硬件设备初始化。包括屏蔽所有中断;关闭看门狗;设置CPU的速度与时钟;RAM初始化;关闭CPU内部指令/数据cache等。 ②为加载stage2的代码准备RAM空间 。 ③拷贝stage2的代码到RAM空间中。 ④设置好堆栈。 这一步也可以放在stage2阶段去做。 ⑤跳转到 stage2 的 C 入口点Main()函数处。 * 2. stage2的主要工作 ①使用C语言编程初始化本阶段要使用到的硬件设备。

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档