微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程

上传人:ni****g 文档编号:570260550 上传时间:2024-08-03 格式:PPT 页数:25 大小:1.51MB
返回 下载 相关 举报
微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程_第1页
第1页 / 共25页
微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程_第2页
第2页 / 共25页
微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程_第3页
第3页 / 共25页
微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程_第4页
第4页 / 共25页
微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程》由会员分享,可在线阅读,更多相关《微处理器系统结构与嵌入式系统设计:第11章 嵌入式系统开发过程(25页珍藏版)》请在金锄头文库上搜索。

1、第十一章2024/8/3嵌入式系统开发过程嵌入式系统开发过程1选择芯片选择芯片2绘制原理图绘制原理图3PCB布线布线4制作制作PCB5调试硬件板调试硬件板6移植系统软件移植系统软件7编写应用软件编写应用软件嵌入式软件系统结构嵌入式软件系统结构1简单简单的嵌入式应用的嵌入式应用若嵌入式系统的功能需求比较简单,嵌入式系统软件只若嵌入式系统的功能需求比较简单,嵌入式系统软件只需完成较简单的监控、驱动和处理功能,则需完成较简单的监控、驱动和处理功能,则不需要嵌不需要嵌入式操作系统入式操作系统的支持。的支持。如基于如基于8051的应用:玩具、家电、汽车等的控制系统的应用:玩具、家电、汽车等的控制系统2复

2、杂复杂的嵌入式应用的嵌入式应用若嵌入式系统的功能需求比较复杂,需要图形用户界面、若嵌入式系统的功能需求比较复杂,需要图形用户界面、网络管理、存储管理、进程网络管理、存储管理、进程/线程管理或需要支持二次线程管理或需要支持二次开发等,则通过开发等,则通过嵌入式操作系统嵌入式操作系统的帮助,可以加快嵌的帮助,可以加快嵌入式系统软件的开发进度和可靠性。入式系统软件的开发进度和可靠性。如基于如基于ARM的应用:手机、的应用:手机、 PDA简单嵌入式系统软件结构简单嵌入式系统软件结构1不需要使用操作系统,基于不需要使用操作系统,基于裸机裸机开发开发2系统上电后转移到系统上电后转移到main函数入口,首先

3、进行系统函数入口,首先进行系统初始初始化化,然后进入,然后进入工作循环工作循环直到系统停电或者出现重大错误。直到系统停电或者出现重大错误。void main(void) /变量、参数等的定义及说明变量、参数等的定义及说明 X_init( ); /系统初始化,一般为汇编代码系统初始化,一般为汇编代码While(1) X( ); /超级循环超级循环复杂嵌入式系统软件的一般复杂嵌入式系统软件的一般结构结构ARM+M+I/OHAL、底层封装、部分由、底层封装、部分由OS提供提供BOOTLOAD复杂嵌入式系统软件工作流程复杂嵌入式系统软件工作流程嵌入式操作系统嵌入式操作系统嵌入式操作系统功能嵌入式操作系

4、统功能1处理器管理处理器管理2存储管理存储管理3中断管理中断管理4时间管理时间管理5任务扩展管理任务扩展管理6文件管理文件管理1嵌入式嵌入式实时实时操作系统操作系统RTlinux及其他嵌入式实时及其他嵌入式实时LinuxuC/OS IIeCOSVxworks (wind river systems公司)公司)QNX (QNX software systems公司)公司)pSOSOS/9VRTXThreadX2嵌入式嵌入式非实时非实时操作系统操作系统 一些嵌入一些嵌入inux系统系统Windows CE、Embedded windows xp(Microsoft)Palm OS (Palm公司)

5、公司)EPOC (Symbian公司公司)LINUX嵌入式操作系统嵌入式操作系统Linux是一个是一个类类Unix(Unix-like)的、)的、免费免费的、的、源代码开放源代码开放的、符合的、符合POSIX(Portable Operating System Interface Standard)标准规范的操作系统;)标准规范的操作系统;严格来说,严格来说,Linux指由指由Linux Torvalds维护的(及通过主要镜像网站维护的(及通过主要镜像网站发布的)发布的)内核,内核,而整个而整个Linux系统的其它大部分都建立在系统的其它大部分都建立在GNU软软件之上;件之上;嵌入式嵌入式Li

6、nux内核内核为特殊的硬件配置、或为了支持特别的应用而经过特别的裁为特殊的硬件配置、或为了支持特别的应用而经过特别的裁剪的修改过的剪的修改过的Linux内核;内核;通常具有不同于工作站与服务器的内核配置;通常具有不同于工作站与服务器的内核配置;嵌入式嵌入式Linux系统系统基于基于Linux内核的嵌入式系统;内核的嵌入式系统;嵌入式嵌入式Linux发行套件发行套件开发嵌入式开发嵌入式Linux系统的平台;系统的平台;各种为了在嵌入式系统中使用而剪裁过的应用软件;各种为了在嵌入式系统中使用而剪裁过的应用软件;LINUX内核的发展历史内核的发展历史11991年11月,芬兰赫尔辛基大学的学生 Lin

7、us Torvalds写了个小程序,取名为Linux,放在互联网上。他表达了一个愿望,希望借此搞出一个操作系统的“内核”来,这完全是一个偶然事件;21993,在一批高水平黑客的参与下,诞生了Linux 1.0 版 ;31994年,Linux 的第一个商业发行版 Slackware 问世;41996年,美国国家标准技术局的计算机系统实验室确认 Linux 版本 1.2.13(由 Open Linux 公司打包)符合 POSIX 标准;52001年,Linux2.4版内核发布 ;62003年,Linux2.6版内核发布;7Linux内核版本号由内核版本号由3位数字组成位数字组成r.x.y第1位数字

8、r为主版本号 第2位数字x为说明版本类型的次版本号,如果x为偶数,则表示为产品化版本,为奇数时表示为实验版本 第3位数字y为修改号,表示错误修补的次数 几种流行的几种流行的Linux OS发行发行版本版本交叉编译交叉编译1在一种机器上编译可在另一种机器上运行的程序在一种机器上编译可在另一种机器上运行的程序2如:如:pc机上编译机上编译ARM可执行程序。可执行程序。3Arm-linux-gcc4www.snapgear.org5http:/6输出支持输出支持ARM体系结构的体系结构的Elf文件文件引导程序引导程序BootLoader1是嵌入式系统在加电启动后执行的第一段代码,功是嵌入式系统在加电

9、启动后执行的第一段代码,功能类似能类似pc机的机的BIOS和和OS Loader,通常需要,通常需要固化固化在目标板中;在目标板中;2主要负责主要负责CPU、存储器及相关硬件的、存储器及相关硬件的初始化初始化,以及,以及将将装载操作系统装载操作系统映像到内存中,然后跳转到规定的映像到内存中,然后跳转到规定的地址地址启动操作系统启动操作系统运行。运行。 Bootloader是严重依赖硬件而实现的,每一种不是严重依赖硬件而实现的,每一种不同体系结构的处理器都有不同的同体系结构的处理器都有不同的Bootloader,甚至,甚至同一种处理器的外围硬件配置不同,其同一种处理器的外围硬件配置不同,其Boo

10、tloader也有差别。因此开发特定的也有差别。因此开发特定的Bootloader是构建嵌入是构建嵌入式式linux系统之前的一项必要的基础工作。系统之前的一项必要的基础工作。Bootloader的开发的开发Stage1(汇编实现)(汇编实现)1.基本硬件设备初始化:基本硬件设备初始化:CPU时钟频率,寄存器,存储器数据时钟频率,寄存器,存储器数据宽度、访问周期、刷新周期,中断系统,宽度、访问周期、刷新周期,中断系统,I/O端口端口等;等;2.为第二阶段准备为第二阶段准备RAM空间;空间;3.复制第二阶段代码到复制第二阶段代码到RAM中;中;4.设置堆栈;设置堆栈;5.并跳转到第二阶段入口点;

11、并跳转到第二阶段入口点;Stage2(C实现)实现)1.初始化本阶段要使用到的硬件设备,初始化本阶段要使用到的硬件设备,实现对板级驱动的支持;实现对板级驱动的支持;2.检测系统内存映射;检测系统内存映射;3.将内核镜像和根文件系统镜像从将内核镜像和根文件系统镜像从flash读到读到RAM中;中;4.为内核设置启动参数;为内核设置启动参数;5.将将PC指针指向内核的入口处,指针指向内核的入口处,调用内核。挂载文件系统;调用内核。挂载文件系统;Linux 环境下环境下BootLoader种类种类BootloaderMonitor描描 述述x86ARMPowerPCLILO否否Linux磁盘引导程序

12、磁盘引导程序是是否否否否GRUB否否GNU的的LILO替代程序替代程序是是否否否否Loadlin否否从从DOS引导引导Linux是是否否否否ROLO否否从从ROM引导引导Linux而不需要而不需要BIOS是是否否否否Etherboot否否通过以太网卡启动通过以太网卡启动Linux系统的系统的固件固件是是否否否否LinuxBIOS否否完全替代完全替代BUIS的的Linux引导程引导程序序是是否否否否BLOB否否LART等硬件平台的引导程序等硬件平台的引导程序否否是是否否U-boot是是通用引导程序通用引导程序是是是是是是RedBoot是是基于基于eCos的引导程序的引导程序是是是是是是u-boo

13、tuboot全称全称 Universal Boot Loader,支持,支持ARM体系等多种处理器,体系等多种处理器,包含常见的外设的驱动,是一个开源的、功能强大的板极支持包;包含常见的外设的驱动,是一个开源的、功能强大的板极支持包;由德国由德国DENX软件工程中心的软件工程中心的Wolfgang Denk维护。维护。u-boot启动时处于正常的启动时处于正常的启动加载启动加载模式,但是它会延时指定时间模式,但是它会延时指定时间(单位秒)等待终端用户按下任意键而切换到(单位秒)等待终端用户按下任意键而切换到下载模式下载模式,如果在指,如果在指定时间内用户没有按键,则继续启动操作系统。定时间内用

14、户没有按键,则继续启动操作系统。u-boot主要包括以下目录:主要包括以下目录:include:U-Boot头文件,其头文件,其configs子目录下是与目标板相关的配置头文件;子目录下是与目标板相关的配置头文件; board:目标板相关文件,包含:目标板相关文件,包含SDRAM、Flash驱动等;驱动等;cpu:与处理器相关文件,如网口、中断初始化等;:与处理器相关文件,如网口、中断初始化等; lib_xxx:处理器体系相关的文件,如:处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与目录分别包含与PowerPC、ARM体系结构相关的文件;体系结构相关的文件;driver

15、: 通用设备驱动,如通用设备驱动,如CFI FLASH驱动;驱动;net:与网络功能相关的文件目录,如:与网络功能相关的文件目录,如bootp,nfs,tftp; post:上电自检文件目录。:上电自检文件目录。 doc:U-Boot的说明文档;的说明文档;examples:可在:可在U-Boot下运行的示例程序;下运行的示例程序;tools 用于创建用于创建U-Boot S-RECORD和和BIN镜像文件的工具镜像文件的工具S3C2440启动方式韩国三星公司的韩国三星公司的S3C2440支持支持Nor Flash和和Nand Flash启动启动, 可以通过硬件跳线可以通过硬件跳线(引脚引脚O

16、M1:0)设设置启动方式。具体含义如下置启动方式。具体含义如下:1.OM1:0=00时,处理器从时,处理器从NAND Flash启动启动2.OM1:0=01时,处理器从时,处理器从16位宽度的位宽度的Nor Flash启动启动3.OM1:0=10时,处理器从时,处理器从32位宽度的位宽度的Nor Flash启动启动4.OM1:0=11时,处理器从时,处理器从Test Mode启动启动S3C2440 Nand Flash启动过程:启动过程:在系统上电后在系统上电后,Nand Flash控制器会自动的把控制器会自动的把Nand Flash上的前上的前4K U-BOOT数据搬移数据搬移到内部到内部S

17、RAM的地址最低端的地址最低端(此此SRAM被称被称为为Steppingstone);CPU从内部从内部RAM的的0x00000000位置开始启动位置开始启动并在并在uboot启动代码的前启动代码的前4K里完成里完成S3C2440的核心配置,然后把的核心配置,然后把U-BOOT剩余部分搬到剩余部分搬到RAM中运行;中运行; S3C2440 Nand Flash嵌入式嵌入式LinuxLinux系统结构图系统结构图 嵌入式嵌入式Linux具有分层的体系结构,一般可分为具有分层的体系结构,一般可分为3小层及内核小层及内核空间和用户空间两大块,每一层模块都屏蔽了其以下各层的具体空间和用户空间两大块,每

18、一层模块都屏蔽了其以下各层的具体细节,只对上层提供功能接口或图形界面。上层模块不需要知道细节,只对上层提供功能接口或图形界面。上层模块不需要知道其以下各层模块的实现方式,只需要利用下层提供的接口完成相其以下各层模块的实现方式,只需要利用下层提供的接口完成相应功能即可。这样的层次模型大大增加了嵌入式应功能即可。这样的层次模型大大增加了嵌入式Linux的安全性、的安全性、稳定性、裁减或增添模块的便利性。稳定性、裁减或增添模块的便利性。LinuxLinux内核的各子系统之间的关系内核的各子系统之间的关系 嵌入式嵌入式Linux内核一般可以分为内核一般可以分为4个部分:进程调度管理、内个部分:进程调度

19、管理、内存管理、文件系统和设备驱动程序,它们之间的关系如存管理、文件系统和设备驱动程序,它们之间的关系如上上图所示。图所示。进程调度处于中心位置,其他所有子系统都依赖于它。在嵌入式进程调度处于中心位置,其他所有子系统都依赖于它。在嵌入式系统中,嵌入式系统中,嵌入式Linux的实时性能改造与进程调度有很大的关系,的实时性能改造与进程调度有很大的关系,调度策略的算法直接关系到系统的实时性能。调度策略的算法直接关系到系统的实时性能。嵌入式嵌入式LinuxLinux中的文件系统结构中的文件系统结构 嵌入式嵌入式Linux的文件系统建立在块设备上,不采用驱动器号或的文件系统建立在块设备上,不采用驱动器号

20、或驱动器名称来标识,而是采用了树形结构,每个独立文件系统为驱动器名称来标识,而是采用了树形结构,每个独立文件系统为一个子树,组成树形的层次化的结构。当引入新的文件系统时,一个子树,组成树形的层次化的结构。当引入新的文件系统时,嵌入式嵌入式Linux通过挂载方式将其连接到某个目录,从而使不同的文通过挂载方式将其连接到某个目录,从而使不同的文件系统组合成一个整体成为可能。件系统组合成一个整体成为可能。嵌入式嵌入式LINUX内核移植内核移植如果一个系统是可以在不同的硬件平台上运行,那么这个系统就如果一个系统是可以在不同的硬件平台上运行,那么这个系统就是可移植的。是可移植的。Linux内核移植指根据自

21、己的硬件平台对内核内核移植指根据自己的硬件平台对内核源代码进行源代码进行修改修改,同时对内核进行,同时对内核进行裁剪裁剪,编译出适合自己硬,编译出适合自己硬件平台的内核镜像文件。件平台的内核镜像文件。Linux内核源代码包括多个目录:内核源代码包括多个目录:(1)arch:包括硬件特定内核代码,如:包括硬件特定内核代码,如arm、mips等;等;(2)drivers:包含硬件驱动代码;:包含硬件驱动代码;(3)include:通用头文件及针对不同平台的特定头文件;:通用头文件及针对不同平台的特定头文件;(4)init:内核初始化代码;:内核初始化代码;(5)ipc:进程间通信代码;:进程间通信

22、代码;(6)kernel:内核核心代码;:内核核心代码;(7)mm:内存管理代码;:内存管理代码;(8)net:与网络协议栈相关的代码;:与网络协议栈相关的代码;(9)fs:文件系统相关代码,如:文件系统相关代码,如nfs、vfat等;等;(10)lib:库文件,与平台无关的:库文件,与平台无关的strlen、strcpy等等嵌入式嵌入式LINUX的配置与编译的配置与编译 对对linux内核的裁剪是通过内核配置来实现内核的裁剪是通过内核配置来实现的,在内核配置过程中可以选择自己需要的功能,的,在内核配置过程中可以选择自己需要的功能,而取消掉自己不需要的功能,这样可以在满足自而取消掉自己不需要的

23、功能,这样可以在满足自己需要的同时尽可能的缩小内核镜像的大小,这己需要的同时尽可能的缩小内核镜像的大小,这在嵌入式开发中是至关重要的。在嵌入式开发中是至关重要的。 对对linux进行配置的方法是:进行配置的方法是:在终端下进入内核源代码目录,输入命令在终端下进入内核源代码目录,输入命令make menuconfig进入内核配置窗口;进入内核配置窗口;配置完毕后,在终端命令行下输入命令配置完毕后,在终端命令行下输入命令make即可即可在在linux内核目录内核目录/arch/*/boot文件夹下生成文件夹下生成内核镜像文件。内核镜像文件。基于嵌入式基于嵌入式LINUX的设备驱动程序的设备驱动程序

24、驱动程序是操作系统内核与硬件设备之间的接口,驱动程序屏驱动程序是操作系统内核与硬件设备之间的接口,驱动程序屏蔽了硬件的细节,完成以下蔽了硬件的细节,完成以下功能功能:对设备初始化和释放;对设备初始化和释放;对设备进行管理;对设备进行管理;读取应用程序传送给设备文件的数据或者回送应用程序请读取应用程序传送给设备文件的数据或者回送应用程序请求的数据;求的数据;检测和处理设备出现的错误。检测和处理设备出现的错误。Linux系统将设备分为三种基本的设备类型,每一种类型的设系统将设备分为三种基本的设备类型,每一种类型的设备对应着不同形式的驱动,这三种设备分别为备对应着不同形式的驱动,这三种设备分别为字符设备,字符设备,块设备和网络设备块设备和网络设备。Linux操作系统将所有的设备全部看成文件,并通过文件的操操作系统将所有的设备全部看成文件,并通过文件的操作界面进行操作。作界面进行操作。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号