欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《微处理器系统结构与嵌入式系统设计》cha.ppt

    • 资源ID:6235442       资源大小:1.26MB        全文页数:36页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《微处理器系统结构与嵌入式系统设计》cha.ppt

    微处理器系统结构与嵌入式系统设计,第十一章 基于ARM微处理器的软件系统设计,2023/10/8,2,第十一章 基于ARM的软件系统设计,1、嵌入式软件系统结构及工作流程2、嵌入式软件系统的引导和加载S3C2440启动过程、BootLoader 基本概念、U-boot的分析与移植3、嵌入式Linux操作系统嵌入式操作系统、嵌入式Linux内核4、Linux下驱动程序设计示例打开串口、设置串口、读写串口、关闭串口,第 十一 章 结 束,2023/10/8,4,嵌入式软件系统结构,简单的嵌入式应用 若嵌入式系统的功能需求比较简单,嵌入式系统软件只需完成较简单的监控、驱动和处理功能,则不需要嵌入式操作系统的支持。如基于8051的应用:玩具、家电、汽车等的控制系统复杂的嵌入式应用 若嵌入式系统的功能需求比较复杂,需要图形用户界面、网络管理、存储管理、进程/线程管理或需要支持二次开发等,则通过嵌入式操作系统的帮助,可以加快嵌入式系统软件的开发进度和可靠性。如基于ARM的应用:手机、PDA,2023/10/8,5,简单嵌入式系统软件结构,不需要使用操作系统,基于裸机开发典型单任务程序架构(1)从CPU复位时的指定地址开始执行;(2)跳转至汇编代码startup处执行;(3)跳转至用户主程序main执行,在main中完成:a.初试化各硬件设备;b.初始化各软件模块;c.进入死循环(无限循环),调用各模块的处理函数,2023/10/8,6,用户主程序和各模块的处理函数都以C语言完成。用户主程序最后都进入了一个死循环,直到系统停电或者出现重大错误。void main(void)/变量、参数等的定义及说明 X_init();/系统初始化,一般为汇编代码While(1)X();/超级循环,2023/10/8,7,复杂嵌入式系统软件的一般结构,ARM+M+I/O,HAL、底层封装、部分由OS提供,BOOTLOAD,2023/10/8,8,复杂嵌入式系统软件工作流程,2023/10/8,9,S3C2440启动方式,三星公司的S3C2440支持Nor Flash和Nand Flash启动,可以通过硬件跳线(引脚OM1:0)设置启动方式。具体含义如下:OM1:0=00时,处理器从NAND Flash启动OM1:0=01时,处理器从16位宽度的Nor Flash启动OM1:0=10时,处理器从32位宽度的Nor Flash启动OM1:0=11时,处理器从Test Mode启动,2023/10/8,10,S3C2440 Nand Flash,S3C2440 Nand Flash启动过程,在系统上电后,Nand Flash控制器会自动的把Nand Flash上的前4K U-BOOT数据搬移到内部SRAM的地址最低端(此SRAM被称为Steppingstone);CPU从内部RAM的0 x00000000位置开始启动并在uboot启动代码的前4K里完成S3C2440的核心配置,然后把U-BOOT剩余部分搬到RAM中运行;,2023/10/8,11,引导程序BootLoader,是嵌入式系统在加电启动后执行的第一段代码,功能类似pc机的BIOS和OS Loader,通常需要固化在目标板中;主要负责CPU、存储器及相关硬件的初始化,以及将装载操作系统映像到内存中,然后跳转到规定的地址启动操作系统运行。Bootloader是严重依赖硬件而实现的,每一种不同体系结构的处理器都有不同的Bootloader,甚至同一种处理器的外围硬件配置不同,其Bootloader也有差别。因此开发特定的Bootloader是构建嵌入式linux系统之前的一项必要的基础工作。,2023/10/8,12,Bootloader的运行步骤,Stage1(汇编实现)基本硬件设备初始化:CPU时钟频率,寄存器,存储器数据宽度、访问周期、刷新周期,中断系统,I/O端口等;为第二阶段准备RAM空间,设置堆栈;复制第二阶段代码到RAM中,并跳转到第二阶段入口点Stage2(C实现)初始化本阶段要使用的硬件设备,实现对板级驱动的支持;检测系统内存映射;将内核镜像和根文件系统镜像从flash读到RAM中;为内核设置启动参数;将PC指针指向内核的入口处,调用内核。挂载文件系统;,2023/10/8,13,Linux 环境下BootLoader种类,2023/10/8,14,U-boot的分析与移植,U-boot全称 Universal Boot Loader,支持ARM体系等多种处理器,包含常见的外设的驱动,是一个开源的、功能强大的板极支持包;由德国DENX软件工程中心的Wolfgang Denk维护。U-boot启动时处于正常的启动加载模式,但是它会延时指定时间(单位秒)等待终端用户按下任意键而切换到下载模式,如果在指定时间内用户没有按键,则继续启动操作系统。,2023/10/8,15,U-boot主要包括以下目录,board:该目录存放了U-Boot支持的一些已有开发板的信息。每一个开发板都以一个子目录出现在当前目录中,如SMDK2410子目录中存放与2410开发板相关的配置文件,但由于自行设计的目标板即使与已有开发板使用相同处理器,但其他硬件配置不一定相同,所以需要参考该目录下的内容来进行修改,例如根据使用的Flash存储器的宽度和容量,可以修改flash.c中对应的参数。common:该目录存放的是U-Boot命令行界面下支持的各条命令的实现源码。每一条命令都对应一个文件,例如bootm命令对应就是cmd_bootm.c。通常主要关心与内核引导有关的cmd_boot.c和cmd_bootm.c等代码。cpu:该目录存放了U-Boot支持的CPU类型。每一款U-Boot下支持的CPU在该目录下对应一个子目录,比如S3C2440A采用的是ARM920T内核,则子目录arm920t下即是对该处理器核的支持源码。CPU相关的文件主要是初始化一个执行环境,包括中断的初始化。其中有一个重要文件start.s,该文件是一个汇编源文件,它是整个U-Boot执行的第一段代码,它的功能是将整个U-Boot目标代码重定位,也就是将U-Boot转移至内存中去运行。,2023/10/8,16,U-boot主要包括以下目录,drivers:U-Boot支持的各种设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、串口和USB等。fs:该目录存放U-Boot支持的文件系统,例如fat、fdos、jffs2、cramfs、ext2和reiserfs等。include:U-Boot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目录下configs目录有与开发板相关的配置头文件。该目录下的asm目录有与CPU体系结构相关的头文件,ARM对应的是asm-arm。lib_xxx:与体系结构相关的库文件。与ARM相关的库放在lib_arm中。net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。tools:生成U-Boot的工具,如:mkimage,crc等等。doc:文档目录。U-Boot有非常完善的文档,推荐参考阅读。,2023/10/8,17,U-boot的运行过程分析,U-Boot的阶段一代码通常放在start.s文件中,用汇编语言写成,其主要功能是设置处理器状态、初始化中断和内存时序、对整个U-Boot目标代码进行重新定位。,阶段一刚开始的代码是处理器的异常处理向量表:.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 x00000010,数据中止异常 ldrpc,_not_used;0 x00000014,未使用 ldrpc,_irq;0 x00000018,中断异常 ldrpc,_fiq;0 x0000001c,快速中断异常当发生各类异常时,CPU将执行interrupts.c中对应定义的中断处理函数。,2023/10/8,18,U-boot的运行过程分析,reset/*set the cpu to SVC32 mode*/mrsr0,cpsrbicr0,r0,#0 x1forrr0,r0,#0 xd3msrcpsr,r0;进入SVC管理模式,关闭中断和快速中断;关闭看门狗、禁止中断、配置处理器内部时钟、配置内存区控制寄;存器、代码搬移ldrpc,_start_armboot;转C代码,stage1结束的_start_armboot:.word start_armboot,阶段二:start_armboot()在board.c中定义,是Bootloader中的C语言开始的函数,也是整个启动代码中C语言的主函数,它类似于Linux内核的start_kernel(),是一种系统初始化的接口函数:调用一系列初始化函数完成CPU的基本设置、开发板初始化、中断向量初始化、环境变量初始化、串口初始化等;配置可用的Flash区;内存初始化;I2C、LCD、video、音频等外围设备初始化;网络设备初始化等等,最后进入U-Boot命令行。,2023/10/8,19,嵌入式操作系统,2023/10/8,20,嵌入式实时操作系统RTlinux及其他嵌入式实时LinuxuC/OS IIeCOSVxworks(wind river systems公司)QNX(QNX software systems公司)pSOSOS/9VRTXThreadX嵌入式非实时操作系统 一些嵌入inux系统Windows CE、Embedded windows xp(Microsoft公司)Palm OS(Palm公司)EPOC(Symbian公司),2023/10/8,21,Linux嵌入式操作系统,Linux是一个类Unix(Unix-like)的、免费的、源代码开放的、符合POSIX(Portable Operating System Interface Standard)标准规范的操作系统;严格来说,Linux指由Linux Torvalds维护的(及通过主要镜像网站发布的)内核,而整个Linux系统的其它大部分都建立在GNU软件之上;嵌入式Linux内核为特殊的硬件配置、或为了支持特别的应用而经过特别的裁剪的修改过的Linux内核;通常具有不同于工作站与服务器的内核配置;嵌入式Linux系统基于Linux内核的嵌入式系统;嵌入式Linux发行套件开发嵌入式Linux系统的平台;各种为了在嵌入式系统中使用而剪裁过的应用软件;,2023/10/8,22,Linux内核的发展历史,1991年11月,芬兰赫尔辛基大学的学生 Linus Torvalds写了个小程序,取名为Linux,放在互联网上。他表达了一个愿望,希望借此搞出一个操作系统的“内核”来,这完全是一个偶然事件;1993,在一批高水平黑客的参与下,诞生了Linux 1.0 版;1994年,Linux 的第一个商业发行版 Slackware 问世;1996年,美国国家标准技术局的计算机系统实验室确认 Linux 版本(由 Open Linux 公司打包)符合 POSIX 标准;2001年,Linux2.4版内核发布;2003年,Linux2.6版内核发布;Linux内核版本号由3位数字组成,第1位数字r为主版本号,第2位数字x为说明版本类型的次版本号,如果x为偶数,则表示为产品化版本,为奇数时表示为实验版本,第3位数字y为修改号,表示错误修补的次数,2023/10/8,23,几种流行的Linux OS发行版本,2023/10/8,24,嵌入式Linux系统结构图,嵌入式Linux具有分层的体系结构,一般可分为3小层及内核空间和用户空间两大块,每一层模块都屏蔽了其以下各层的具体细节,只对上层提供功能接口或图形界面。上层模块不需要知道其以下各层模块的实现方式,只需要利用下层提供的接口完成相应功能即可。这样的层次模型大大增加了嵌入式Linux的安全性、稳定性、裁减或增添模块的便利性。,2023/10/8,25,Linux内核的各子系统之间的关系,嵌入式Linux内核一般可以分为4个部分:进程调度管理、内存管理、文件系统和设备驱动程序,它们之间的关系如上图所示。进程调度处于中心位置,其他所有子系统都依赖于它。在嵌入式系统中,嵌入式Linux的实时性能改造与进程调度有很大的关系,调度策略的算法直接关系到系统的实时性能。,2023/10/8,26,嵌入式Linux中的文件系统结构,嵌入式Linux的文件系统建立在块设备上,不采用驱动器号或驱动器名称来标识,而是采用了树形结构,每个独立文件系统为一个子树,组成树形的层次化的结构。当引入新的文件系统时,嵌入式Linux通过挂载方式将其连接到某个目录,从而使不同的文件系统组合成一个整体成为可能。,2023/10/8,27,嵌入式Linux内核移植,如果一个系统是可以在不同的硬件平台上运行,那么这个系统就是可移植的。Linux内核移植指根据自己的硬件平台对内核源代码进行修改,同时对内核进行裁剪,编译出适合自己硬件平台的内核镜像文件。Linux内核源代码包括多个目录:(1)arch:包括硬件特定内核代码,如arm、mips等;(2)drivers:包含硬件驱动代码;(3)include:通用头文件及针对不同平台的特定头文件;(4)init:内核初始化代码;(5)ipc:进程间通信代码;(6)kernel:内核核心代码;(7)mm:内存管理代码;(8)net:与网络协议栈相关的代码;(9)fs:文件系统相关代码,如nfs、vfat等;(10)lib:库文件,与平台无关的strlen、strcpy等,2023/10/8,28,Linux下驱动程序设计示例,Linux操作系统对串口有着很好的支持,其中的串口驱动程序对用户屏蔽了底层硬件的相关信息,而且为用户提供了一系列的标准调用函数,极大的方便了串口通信的操作。用户编写串口应用程序的时候不需要考虑硬件相关的问题,只需要根据Linux操作系统提供的调用函数来实现自己需要的功能。在Linux操作系统下,串口是被当做文件来对待的,因此对它进行数据收发等效于对文件进行读写操作。对串口的操作一般分为四个步骤:打开串口、设置串口、读写串口和关闭串口。,2023/10/8,29,(1)打开串口,在ARM平台中Linux操作系统下的串口设备文件为/dev/ttySAC0。int fd;fd=open(/dev/ttySAC0,O_RDWR);/*以读写方式打开串口*/if(fd=-1);/*如果打开串口错误则输出提示信息*/perror(Cant Open Serial Port);,2023/10/8,30,(2)设置串口,与无操作系统的情况下对串口进行初始化设置类似,在Linux下最基本的串口设置工作主要包括波特率、校验位和停止位的设置,其设置方式主要是对struct termios结构体各成员值进行设置。在不同应用中通常需要设置的波特率及数据格式等参数都不一样,可以将结构体成员赋值的功能编写成函数,通过对该函数入口参数的修改,即可方便的实现不同的设置。,2023/10/8,31,波特率设置函数,void set_speed(int fd,int speed)int i;int status;struct termiosOpt;tcgetattr(fd,2023/10/8,32,数据格式设置函数,int set_Parity(int fd,int databits,int stopbits,int parity)struct termios options;if(tcgetattr(fd,2023/10/8,33,数据格式设置函数,switch(stopbits)/设置停止位个数 case 1:options.c_cflag,2023/10/8,34,switch(parity)/设置校验位属性 case n:case N:options.c_cflag,2023/10/8,35,(3)读写串口实现数据传输,从串口发送数据:使用文件操作write函数实现数据发送,示例程序如下:charbuffer1024;int Length;int writeByte;writeByte=write(fd,buffer,Length);功能:将发送缓冲区buffer中Length大小的数据从串口发出。从串口接收数据:使用文件操作read函数实现数据接收,示例程序如下:charbuffer1024;int Length;int readByte;readByte=read(fd,buffer,Length);功能:读取串口接收到的Length大小的数据,并放到接收缓冲区buffer中。,2023/10/8,36,(4)关闭串口,关闭串口就是关闭设备文件,使用文件操作close函数实现。close(fd);,

    注意事项

    本文(《微处理器系统结构与嵌入式系统设计》cha.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开