《微处理器系统结构与嵌入式系统设计》chap11.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《微处理器系统结构与嵌入式系统设计》chap11.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微处理器系统结构与嵌入式系统设计 微处理器 系统 结构 嵌入式 设计 chap11
- 资源描述:
-
1、微处理器系统结构与嵌入式系统设计chap112022-11-32第十一章第十一章 基于基于ARM的软件系统设计的软件系统设计1、嵌入式软件系统结构及工作流程嵌入式软件系统结构及工作流程2、嵌入式软件系统的引导和加载、嵌入式软件系统的引导和加载S3C2440S3C2440启动过程启动过程、BootLoader BootLoader 基本概念基本概念、U-bootU-boot的分析与移植的分析与移植3、嵌入式、嵌入式Linux操作系统操作系统嵌入式操作系统嵌入式操作系统、嵌入式嵌入式LinuxLinux内核内核4、Linux下驱动程序设计示例下驱动程序设计示例打开串口、设置串口打开串口、设置串口、
2、读写串口读写串口、关闭串口关闭串口第 十一 章 结 束2022-11-34嵌入式软件系统结构嵌入式软件系统结构l简单的嵌入式应用简单的嵌入式应用 若嵌入式系统的功能需求比较简单,嵌入式系统若嵌入式系统的功能需求比较简单,嵌入式系统软件只需完成较简单的监控、驱动和处理功能,则软件只需完成较简单的监控、驱动和处理功能,则不不需要嵌入式操作系统需要嵌入式操作系统的支持。的支持。如基于如基于8051的应用:玩具、家电、汽车等的控制系统的应用:玩具、家电、汽车等的控制系统l复杂的嵌入式应用复杂的嵌入式应用 若嵌入式系统的功能需求比较复杂,需要图形用若嵌入式系统的功能需求比较复杂,需要图形用户界面、网络管
3、理、存储管理、进程户界面、网络管理、存储管理、进程/线程管理或需线程管理或需要支持二次开发等,则通过要支持二次开发等,则通过嵌入式操作系统嵌入式操作系统的帮助,的帮助,可以加快嵌入式系统软件的开发进度和可靠性。可以加快嵌入式系统软件的开发进度和可靠性。如基于如基于ARM的应用:手机、的应用:手机、PDA2022-11-35简单嵌入式系统软件结构简单嵌入式系统软件结构 不需要使用操作系统,基于不需要使用操作系统,基于裸机裸机开发开发 典型单任务程序架构典型单任务程序架构(1 1)从)从CPUCPU复位时的指定地址开始执行;复位时的指定地址开始执行;(2 2)跳转至汇编代码)跳转至汇编代码star
4、tupstartup处执行;处执行;(3 3)跳转至用户主程序)跳转至用户主程序mainmain执行,在执行,在mainmain中中完成:完成:a.a.初试化各硬件设备;初试化各硬件设备;b.b.初始化各软件模块;初始化各软件模块;c.c.进入死循环(无限循环),调用各模块的处理进入死循环(无限循环),调用各模块的处理函数函数2022-11-36 用户主程序和各模块的处理函数都以用户主程序和各模块的处理函数都以C语言完语言完成。用户主程序最后都进入了一个死循环,成。用户主程序最后都进入了一个死循环,直到系统停电或者出现重大错误。直到系统停电或者出现重大错误。void main(void)/变量
5、、参数等的定义及说明变量、参数等的定义及说明 X_init();/系统初始化,一般为汇编代码系统初始化,一般为汇编代码 While(1)X();/超级循环超级循环 2022-11-37复杂嵌入式系统软件的一般结构复杂嵌入式系统软件的一般结构ARM+M+I/OHAL、底层封装、部分由、底层封装、部分由OS提供提供BOOTLOAD2022-11-38复杂嵌入式系统软件工作流程复杂嵌入式系统软件工作流程2022-11-39S3C2440启动方式启动方式 三星公司的三星公司的S3C2440支持支持Nor Flash和和Nand Flash启动启动,可以通过硬件跳线可以通过硬件跳线(引脚引脚OM1:0)
6、设置设置启动方式。具体含义如下启动方式。具体含义如下:OM1:0=00时,处理器从时,处理器从NAND Flash启动启动OM1:0=01时,处理器从时,处理器从16位宽度的位宽度的Nor Flash启动启动OM1:0=10时,处理器从时,处理器从32位宽度的位宽度的Nor Flash启动启动OM1:0=11时,处理器从时,处理器从Test Mode启动启动2022-11-310S3C2440 Nand FlashS3C2440 Nand Flash启动过程启动过程在系统上电后在系统上电后,Nand Flash控制器控制器会自动的把会自动的把Nand Flash上的前上的前4K U-BOOT数
7、据搬移到内部数据搬移到内部SRAM的地址最低端的地址最低端(此此SRAM被称为被称为Steppingstone);CPU从内部从内部RAM的的0 x00000000位置开始启动并在位置开始启动并在uboot启动代码启动代码的前的前4K里完成里完成S3C2440的核心配的核心配置,然后把置,然后把U-BOOT剩余部分搬剩余部分搬到到RAM中运行;中运行;2022-11-311引导程序引导程序BootLoader 是嵌入式系统在加电启动后执行的第一段代码,功是嵌入式系统在加电启动后执行的第一段代码,功能类似能类似pc机的机的BIOS和和OS Loader,通常需要,通常需要固化固化在目标板中;在目
8、标板中;主要负责主要负责CPU、存储器及相关硬件的、存储器及相关硬件的初始化初始化,以及,以及将将装载操作系统装载操作系统映像到内存中,然后跳转到规定的映像到内存中,然后跳转到规定的地址地址启动操作系统启动操作系统运行。运行。Bootloader是严重依赖硬件而实现的,每一种不同是严重依赖硬件而实现的,每一种不同体系结构的处理器都有不同的体系结构的处理器都有不同的Bootloader,甚至同,甚至同一种处理器的外围硬件配置不同,其一种处理器的外围硬件配置不同,其Bootloader也也有差别。因此开发特定的有差别。因此开发特定的Bootloader是构建嵌入式是构建嵌入式linux系统之前的一
9、项必要的基础工作。系统之前的一项必要的基础工作。2022-11-312Bootloader的运行步骤的运行步骤Stage1(汇编实现)(汇编实现)1.基本硬件设备初始化:基本硬件设备初始化:CPU时钟频率,寄存器,存储器数据时钟频率,寄存器,存储器数据宽度、访问周期、刷新周期,中断系统,宽度、访问周期、刷新周期,中断系统,I/O端口端口等;等;2.为第二阶段准备为第二阶段准备RAM空间,设置堆栈;空间,设置堆栈;3.复制第二阶段代码到复制第二阶段代码到RAM中,并跳转到第二阶段入口点中,并跳转到第二阶段入口点Stage2(C实现)实现)1.初始化本阶段要使用的硬件设备,初始化本阶段要使用的硬件
10、设备,实现对板级驱动的支持实现对板级驱动的支持;2.检测系统内存映射;检测系统内存映射;3.将内核镜像和根文件系统镜像从将内核镜像和根文件系统镜像从flash读到读到RAM中;中;4.为内核设置启动参数;为内核设置启动参数;5.将将PC指针指向内核的入口处,指针指向内核的入口处,调用内核。挂载文件系统;调用内核。挂载文件系统;2022-11-313Linux 环境下环境下BootLoader种类种类BootloaderMonitor描描 述述x86ARMPowerPCLILO否否Linux磁盘引导程序磁盘引导程序是是否否否否GRUB否否GNU的的LILO替代程序替代程序是是否否否否Loadli
11、n否否从从DOS引导引导Linux是是否否否否ROLO否否从从ROM引导引导Linux而不需要而不需要BIOS是是否否否否Etherboot否否通过以太网卡启动通过以太网卡启动Linux系系统的固件统的固件是是否否否否LinuxBIOS否否完全替代完全替代BUIS的的Linux引导引导程序程序是是否否否否BLOB否否LART等硬件平台引导程序等硬件平台引导程序否否是是否否U-boot是是通用引导程序通用引导程序是是是是是是RedBoot是是基于基于eCos的引导程序的引导程序是是是是是是2022-11-314U-boot的分析与移植的分析与移植U-boot全称全称 Universal Boot
12、 Loader,支持支持ARM体系等多种处理器,包含常见的外设体系等多种处理器,包含常见的外设的驱动,是一个开源的、功能强大的板极支持的驱动,是一个开源的、功能强大的板极支持包;由德国包;由德国DENX软件工程中心的软件工程中心的Wolfgang Denk维护。维护。U-boot启动时处于正常的启动时处于正常的启动加载启动加载模式,模式,但是它会延时指定时间(单位秒)等待终端用但是它会延时指定时间(单位秒)等待终端用户按下任意键而切换到户按下任意键而切换到下载模式下载模式,如果在指定,如果在指定时间内用户没有按键,则继续启动操作系统。时间内用户没有按键,则继续启动操作系统。2022-11-31
13、5U-boot主要包括以下目录主要包括以下目录l boardboard:该目录该目录存放了存放了U-BootU-Boot支持的一些已有开发板的信息支持的一些已有开发板的信息。每。每一个开发板都以一个子目录出现在当前目录中,如一个开发板都以一个子目录出现在当前目录中,如SMDK2410SMDK2410子子目录中存放与目录中存放与24102410开发板相关的配置文件,但由于自行设计的目开发板相关的配置文件,但由于自行设计的目标板即使与已有开发板使用相同处理器,但其他硬件配置不一定标板即使与已有开发板使用相同处理器,但其他硬件配置不一定相同,所以需要参考该目录下的内容来进行修改,例如根据使用相同,所
14、以需要参考该目录下的内容来进行修改,例如根据使用的的FlashFlash存储器的宽度和容量,可以修改存储器的宽度和容量,可以修改flash.cflash.c中对应的参数。中对应的参数。l commoncommon:该目录该目录存放的是存放的是U-BootU-Boot命令行界面下支持的各条命令命令行界面下支持的各条命令的实现源码的实现源码。每一条命令都对应一个文件,例如。每一条命令都对应一个文件,例如bootmbootm命令对应命令对应就是就是cmd_bootm.ccmd_bootm.c。通常主要关心与内核引导有关的。通常主要关心与内核引导有关的cmd_boot.ccmd_boot.c和和cmd
15、_bootm.ccmd_bootm.c等代码。等代码。l cpucpu:该目录该目录存放了存放了U-BootU-Boot支持的支持的CPUCPU类型类型。每一款。每一款U-BootU-Boot下支下支持的持的CPUCPU在该目录下对应一个子目录,比如在该目录下对应一个子目录,比如S3C2440AS3C2440A采用的是采用的是ARM920TARM920T内核,则子目录内核,则子目录arm920tarm920t下即是对该处理器核的支持源下即是对该处理器核的支持源码。码。CPUCPU相关的文件主要是初始化一个执行环境,包括中断的初相关的文件主要是初始化一个执行环境,包括中断的初始化。其中有一个重要
16、文件始化。其中有一个重要文件start.sstart.s,该文件是一个汇编源文件,该文件是一个汇编源文件,它是整个它是整个U-BootU-Boot执行的第一段代码,它的功能是将整个执行的第一段代码,它的功能是将整个U-BootU-Boot目目标代码重定位,也就是将标代码重定位,也就是将U-BootU-Boot转移至内存中去运行。转移至内存中去运行。2022-11-316U-boot主要包括以下目录主要包括以下目录l driversdrivers:U-BootU-Boot支持的各种设备驱动程序支持的各种设备驱动程序都放在该目录,比如都放在该目录,比如各种网卡、支持各种网卡、支持CFICFI的的F
17、lashFlash、串口和、串口和USBUSB等。等。l fs:fs:该目录存放该目录存放U-BootU-Boot支持的文件系统,例如支持的文件系统,例如fatfat、fdosfdos、jffs2jffs2、cramfscramfs、ext2ext2和和reiserfsreiserfs等。等。l includeinclude:U-BootU-Boot使用的使用的头文件头文件,还有对各种硬件平台支持的,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目录汇编文件,系统的配置文件和对文件系统支持的文件。该目录下下configsconfigs目录有与开发板相关的配置头文件。
18、该目录下的目录有与开发板相关的配置头文件。该目录下的asmasm目录有与目录有与CPUCPU体系结构相关的头文件,体系结构相关的头文件,ARMARM对应的是对应的是asm-armasm-arm。l lib_xxx:lib_xxx:与体系结构相关的与体系结构相关的库文件库文件。与。与ARMARM相关的库放在相关的库放在lib_armlib_arm中。中。l netnet:与与网络协议栈相关的代码网络协议栈相关的代码,BOOTPBOOTP协议、协议、TFTPTFTP协议、协议、RARPRARP协议和协议和NFSNFS文件系统的实现。文件系统的实现。l toolstools:生成生成U-BootU-
19、Boot的工具的工具,如:,如:mkimagemkimage,crccrc等等。等等。l docdoc:文档目录文档目录。U-BootU-Boot有非常完善的文档,推荐参考阅读。有非常完善的文档,推荐参考阅读。2022-11-317U-boot的运行过程分析的运行过程分析U-Boot的的阶段一阶段一代码通常放在代码通常放在start.s文件中,用汇编语文件中,用汇编语言写成,其主要功能是设置处理器状态、初始化中断和内存时言写成,其主要功能是设置处理器状态、初始化中断和内存时序、对整个序、对整个U-Boot目标代码进行重新定位。目标代码进行重新定位。阶段一刚开始的代码是处理器的阶段一刚开始的代码
20、是处理器的异常处理向量表异常处理向量表:.globl_start;系统复位的位置,由;系统复位的位置,由U-Boot.ld决定决定_start:b reset;0 x00000000,各个异常向量对应的跳转代码,各个异常向量对应的跳转代码 ldr pc,_undefined_instruction;0 x00000004,未定义指令异常,未定义指令异常 ldrpc,_software_interrupt ;0 x00000008,软件中断异常软件中断异常 ldr pc,_prefetch_abort ;0 x0000000c,预取中止异常,预取中止异常 ldrpc,_data_abort ;0
21、 x00000010,数据中止异常,数据中止异常 ldrpc,_not_used ;0 x00000014,未使用,未使用 ldrpc,_irq ;0 x00000018,中断异常,中断异常 ldrpc,_fiq ;0 x0000001c,快速中断异常,快速中断异常当发生各类异常时,当发生各类异常时,CPU将执行将执行interrupts.c中对应定义的中断处理函数中对应定义的中断处理函数。2022-11-318U-boot的运行过程分析的运行过程分析reset/*set the cpu to SVC32 mode*/mrsr0,cpsrbicr0,r0,#0 x1forrr0,r0,#0 x
展开阅读全文