《微机原理及接口技术课件-CH.ppt》由会员分享,可在线阅读,更多相关《微机原理及接口技术课件-CH.ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第11章章基于基于ARM的的嵌入式系统嵌入式系统软件软件设计技术设计技术1嵌入式系统软件结构嵌入式系统软件结构2基于嵌入式操作系统的软件开发技术基于嵌入式操作系统的软件开发技术1.常见的嵌入式操作系统常见的嵌入式操作系统2.引导程序的开发引导程序的开发:bootloader3.驱动程序的开发驱动程序的开发4.应用程序的开发应用程序的开发1/52n简单简单的嵌入式的嵌入式应应用用若嵌入式系统的功能需求比较简单,嵌入式系统软件只若嵌入式系统的功能需求比较简单,嵌入式系统软件只需完成较简单的监控、驱动和处理功能,则需完成较简单的监控、驱动和处理功能,则不需要嵌入式不需要嵌入式操作系统操作系统的支持
2、。的支持。如基于如基于8051的应用:玩具、家电、汽车等的控制系统的应用:玩具、家电、汽车等的控制系统n复复杂杂的嵌入式的嵌入式应应用用若嵌入式系统的功能需求比较复杂,需要图形用户界若嵌入式系统的功能需求比较复杂,需要图形用户界面、网络管理、存储管理、进程面、网络管理、存储管理、进程/线程管理或需要支持二线程管理或需要支持二次开发等,则通过次开发等,则通过嵌入式操作系统嵌入式操作系统的帮助,可以加快嵌入的帮助,可以加快嵌入式系统软件的开发进度和可靠性。式系统软件的开发进度和可靠性。如基于如基于ARM的应用:手机、的应用:手机、PDA复杂嵌入式系统软件的一般结构复杂嵌入式系统软件的一般结构ARM
3、+M+I/O硬件抽象层、底层封装、部分由硬件抽象层、底层封装、部分由OS提供提供 BOOTLOADER上电复位复杂嵌入式系统软件工作流程复杂嵌入式系统软件工作流程完成完成基本硬件模块基本硬件模块的初始化(如的初始化(如CPU寄存器初始寄存器初始化、化、RAM初始化、中断控制寄存器初始化初始化、中断控制寄存器初始化等),等),这由汇编代码完成。这由汇编代码完成。将将OS内核和用户文件映射(装入)至运行空间,内核和用户文件映射(装入)至运行空间,从从NANDFlash或或NORFlash装载至装载至RAM,或直接,或直接在在NORFlash上运行,一般用上运行,一般用C代码完成代码完成为为OS内核
4、设置启动参数,初始化必要的数据空间内核设置启动参数,初始化必要的数据空间等,之后调用内核(即跳转至内核的入口点),等,之后调用内核(即跳转至内核的入口点),系统完成启动过程,一般用系统完成启动过程,一般用C代码完成。代码完成。板级初始化引导系统引导系统 系统初始化应用初始化应用程序中多任务及其资源(如信号量、队列)应用程序中多任务及其资源(如信号量、队列)的创建,以及与应用相关的一些初始化工作。的创建,以及与应用相关的一些初始化工作。多任务运行OS执行用户应用程序(即跳转至应用程序的入口执行用户应用程序(即跳转至应用程序的入口点),一般为一个无限循环过程。这样,用户程点),一般为一个无限循环过
5、程。这样,用户程序在序在OS的管理和调度下运行。的管理和调度下运行。BootLoader完成完成n嵌入式嵌入式实时实时操作系统操作系统uRTlinuxuuC/OS IIuVxworks(wind river systems公司)公司)un嵌入式嵌入式非实时非实时操作系统操作系统 u嵌入嵌入Linux系统系统uWindows CE、Embedded windows xp(Microsoft公司)公司)uAndroid(基于(基于Linux内核,谷歌公司推出)内核,谷歌公司推出)u嵌入式操作系统嵌入式操作系统LINUX嵌入式操作系嵌入式操作系统统Linux是一个是一个免费免费的、的、源代码开放源代
6、码开放的操作系统;的操作系统;n1991年年11月,芬兰赫尔辛基大学的学生月,芬兰赫尔辛基大学的学生LinusTorvalds写了个小程序,写了个小程序,取名为取名为Linux,放在互联网上。他表达了一个愿望,希望借此搞出一个,放在互联网上。他表达了一个愿望,希望借此搞出一个操作系统的操作系统的“内核内核”来,这完全是一个偶然事件;来,这完全是一个偶然事件;n1993,在一批高水平黑客的参与下,诞生了,在一批高水平黑客的参与下,诞生了Linux1.0版版;n1994年,年,Linux的第一个商业发行版的第一个商业发行版Slackware问世;问世;n1996年,年,Linux版本版本获得美国国
7、家标准技术局的计算机系统实验室确认;获得美国国家标准技术局的计算机系统实验室确认;n2001年,年,Linux2.4版内核发布版内核发布;n2003年,年,Linux2.6版内核发布;版内核发布;n2010年,年,版内核发布;版内核发布;n几种流行的几种流行的LinuxOS发发行版本行版本引导程引导程序序BootLoadern是嵌入式系统在加电启动后执行的第一段代码,功能类似是嵌入式系统在加电启动后执行的第一段代码,功能类似pc机的机的BIOS,通常需要,通常需要固化固化在目标板中在目标板中(启动后,启动后,BootLoader必须映射到地址必须映射到地址0 x00000000处,这里存放的实
8、际为一条跳转处,这里存放的实际为一条跳转指令,指令,课本课本P232);n主要负责主要负责CPU、存储器及相关硬件的、存储器及相关硬件的初始化初始化,以及将,以及将装载操装载操作系统作系统映像到内存中,然后跳转到规定的地址映像到内存中,然后跳转到规定的地址启动操作系统启动操作系统运行。运行。Bootloader是是严严重重依依赖赖硬硬件件而而实实现现的的,每每一一种种不不同同体体系系结结构构的的处处理理器器都都有有不不同同的的Bootloader,甚甚至至同同一一种种处处理理器器的的外外围围硬硬件件配配置置不不同同,其其Bootloader也也有有差差别别。因因此此开开发发特特定定的的Boot
9、loader是是构构建建嵌嵌入入式式linux系系统统之前的一项必要的基础工作。之前的一项必要的基础工作。Bootloader的开的开发发Stage1(汇编实现)(汇编实现)1.基本硬件设备初始化:基本硬件设备初始化:CPU时钟频率,寄存器,存储器数据宽度、访问周期、刷新周期,中断系统,I/O端口等;2.为第二阶段准备为第二阶段准备RAM空间,设置堆栈;空间,设置堆栈;3.复制第二阶段代码到复制第二阶段代码到RAM中,并跳转到第二阶段入口点中,并跳转到第二阶段入口点Stage2(C实现)实现)1.初始化本初始化本阶阶段要使用到的硬件段要使用到的硬件设备设备,实现对实现对板板级驱动级驱动的支持;
10、的支持;2.检测检测系系统统内存映射;内存映射;3.将内核映像和根文件系将内核映像和根文件系统统从从flash读读到到RAM中;中;4.为为内核内核设设置启置启动动参数;参数;5.将将PC指指针针指向内核的入口指向内核的入口处处,调调用内核。用内核。Linux环环境下境下BootLoader种种类类Bootloader描描述述x86ARMPowerPCLILOLinux磁盘引导程序磁盘引导程序是是否否否否GRUBGNU的的LILO替代程序替代程序是是否否否否Loadlin从从DOS引导引导Linux是是否否否否ROLO从从ROM引导引导Linux而不需要而不需要BIOS是是否否否否Etherb
11、oot通过以太网卡启动通过以太网卡启动Linux系统的固件系统的固件是是否否否否LinuxBIOS完全替代完全替代BUIS的的Linux引导程序引导程序是是否否否否BLOBLART等硬件平台的引导程序等硬件平台的引导程序否否是是否否U-boot通用引导程序通用引导程序是是是是是是u-bootuboot全称全称UniversalBootLoader,支持,支持ARM体系等多种体系等多种处处理理器,包含常器,包含常见见的外的外设设的的驱动驱动,是一个开源的、功能,是一个开源的、功能强强大的板极支大的板极支持包;由德国持包;由德国DENX软软件工程中心件工程中心创创建并建并维护维护。u-boot主要
12、包括以下目主要包括以下目录录:ninclude:U-Boot头文件,其configs子目录下是与目标板相关的配置头文件;nboard:目标板相关文件,包含SDRAM、Flash驱动等;ncpu:与处理器相关文件,如网口、中断初始化等;nlib_xxx:处理器体系相关的文件,如lib_ppc,lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件;ndriver:通用设备驱动,如CFI FLASH驱动;nnet:与网络功能相关的文件目录,如bootp,nfs,tftp;npost:上电自检文件目录。ndoc:U-Boot的说明文档;nexamples:可在U-Boot下运行的示例程
13、序;ntools 用于创建U-Boot S-RECORD和BIN镜像文件的工具S3C2440启动方式(采用BootLoader启动)韩国三星公司的韩国三星公司的S3C2440支持支持NorFlash和和NandFlash启动启动,可以通过硬件跳线可以通过硬件跳线(引脚引脚OM1:0)设置启动方式。具体含义如下设置启动方式。具体含义如下:1.OM1:0=00时,处理器从时,处理器从NANDFlash启动启动2.OM1:0=01时,处理器从时,处理器从16位宽度的位宽度的NorFlash启动启动3.OM1:0=10时,处理器从时,处理器从32位宽度的位宽度的NorFlash启动启动4.OM1:0=
14、11时,处理器从时,处理器从TestMode启动启动S3C2440NandFlash启启动过动过程程:在系统上电后,NandFlash控控制制器器会自动的把Nand Flash上的前4K U-BOOT数据(stage1)搬移到内部SRAM的地址最低端(此 SRAM被 称 为Steppingstone);CPU从 内 部 RAM的0 x00000000位置开始启动并在uboot前4K启动代码里完成S3C2440的核心配置,然后把U-BOOT剩余部分(stage2)搬到RAM中运行;基于嵌入式基于嵌入式LINUX的的设备驱动设备驱动程序程序驱动程序是操作系统内核与硬件设备之间的接口,驱动驱动程序是
15、操作系统内核与硬件设备之间的接口,驱动程序屏蔽了硬件的细节,完成以下程序屏蔽了硬件的细节,完成以下功能功能:u对设备初始化和释放;u对设备进行管理;u读取应用程序传送给设备文件的数据或者回送应用程序请求的数据;u检测和处理设备出现的错误。Linux系统将设备分为三种基本的设备类型,每一种类型系统将设备分为三种基本的设备类型,每一种类型的设备对应着不同形式的驱动,这三种设备分别为的设备对应着不同形式的驱动,这三种设备分别为字符设备,字符设备,块设备和网络设备,块设备和网络设备,。Linux的内核就是由各种驱动组成的,内核源码中大约有的内核就是由各种驱动组成的,内核源码中大约有85%是各种驱动程序
16、的代码,可在同类驱动的基础上进行修是各种驱动程序的代码,可在同类驱动的基础上进行修改以符合具体的单板。改以符合具体的单板。LINUX的设备驱动程序开发流程的设备驱动程序开发流程编写一个编写一个Linux设备驱动程序流程大致如下:设备驱动程序流程大致如下:u查看原理图、数据手册,了解设备操作方法;查看原理图、数据手册,了解设备操作方法;u在在Linux内核中找到相近的驱动程序,以它为模板进行开内核中找到相近的驱动程序,以它为模板进行开发,有时候需要从零开始;发,有时候需要从零开始;u实现驱动程序的初始化:如向内核注册驱动程序,这样应实现驱动程序的初始化:如向内核注册驱动程序,这样应用程序传入文件
17、名时,内核才能找到相应驱动程序;用程序传入文件名时,内核才能找到相应驱动程序;u设计所要实现的操作,如设计所要实现的操作,如open(),close(),read(),wirte()等函数;等函数;u实现中断服务(如果有中断操作);实现中断服务(如果有中断操作);u编译或用命令加载该驱动程序到内核;编译或用命令加载该驱动程序到内核;u驱动程序的测试。驱动程序的测试。本章要求本章要求理解理解嵌入式软件系统的结构及功能;嵌入式软件系统的结构及功能;理解理解系统引导加载(系统引导加载(bootloader)技术;)技术;了解了解嵌入式操作系统(嵌入式操作系统(Linux)的任务、性能)的任务、性能指标及移植技术;指标及移植技术;了解了解嵌入式操作系统下的驱动开发流程;嵌入式操作系统下的驱动开发流程;本章内容对应实验4,有关linux安装、使用及交叉编译环境建立参见“实验平台基础讲解PPT”和“实验手册”(已上传至课件空间)第第1111章章 练习练习*17/52思考:思考:1、2、3、6登登录录下下载载1、本课程所有课件、本课程所有课件2、本课程所有习题答案、本课程所有习题答案3、实验平台、实验平台Linux+RVDS2.2使用讲解使用讲解4、实验指导书、实验指导书5、教材勘误及其它内容、教材勘误及其它内容