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

    嵌入式软件系统设计课件.ppt

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

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

    嵌入式软件系统设计课件.ppt

    嵌入式系统教案,嵌入式软件系统设计,2022/12/10,2,提纲,1,3,2,4,5,嵌入式软件开发过程,ARM软件设计与代码分析,ARM软件开发流程和开发工具,6,7,第六章 嵌入式软件系统设计,3,嵌入式系统软件开发流程,软件需求分析:确定设计任务和目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。,嵌入式软件开发过程,概要设计:描述系统如何实现所述的需求,包括软件模块的划分、系统的软件开发工具选择以及关键问题的论证等。,详细设计:详细描述各个模块的实现方法与过程,模块间接口等问题,以作为编码人员的编码准则。,编码,4,嵌入式系统的开发流程,单元调试:编码完成后,对各个模块进行单元调试,以保证模块正常工作。,嵌入式软件开发过程,集成调试,5,常用调试方法,软件仿真驻留监控程序硬件要求高,一般在硬件稳定之后进行需要占用目标板上的一部分资源不能对程序的全速运行进行完全仿真JTAG仿真器完全非插入式调试,不使用片上资源,无需目标存储器,不占用目标系统的任何端口仿真效果更加接近于目标硬件在线仿真器,ARM软件开发流程和开发工具,6,处理器的选择,处理性能 技术指标 功耗 操作系统和软件支持工具的选择 是否内置调试工具,ARM软件开发流程和开发工具,7,操作系统和软件支持工具的选择,如果用户希望使用Windows CE、Linux等操作系统,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片。ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都带有MMU功能。而ARM7TDMI则没有MMU,不支持Windows CE和Linux,但目前有uCLinux以及uC/OS-II等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。,ARM软件开发流程和开发工具,8,操作系统和软件支持工具的选择,如果决定采用Linux、Windows CE、vxWorks等操作系统时,在选择处理器时应该尽量选择该操作系统已经支持的处理器,这样可以大大加快开发进度,降低难度。选择不同的操作系统,其软件开发过程和调试手段各不相同,你的选择方案是否能够提供各个开发阶段(包括bootloader开发、操作系统移植、驱动开发和应用开发)所需的软件支持工具也是一个必须考虑的因素。,ARM软件开发流程和开发工具,9,硬件驱动程序的调试,如果硬件平台是自行设计的,必须首先对硬件进行调试,硬件调试成功是进行操作系统移植和应用程序开发的一个基本前提。这个过程通常是通过编写一些简单的测试程序直接驱动硬件以验证硬件是否正确,这些程序可以基于操作系统进行编程,也可以不使用操作系统,而且后一种方法来得更加简单,调试也更方便和快捷。,ARM软件开发流程和开发工具,10,操作系统的选择和移植,C/OS-II Linux/uClinux Windows CE vxWorks,ARM软件开发流程和开发工具,11,C/OS-II,免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。它可以基于ROM运行(ROMable)、可裁减,具有高度移植性。C/OS-II实时嵌入式内核在工业控制、数据采集等领域应用广泛。但C/OS-II内核不支持文件系统、网络协议等功能,而且没有提供统一的硬件驱动程序接口和开发工具链,在复杂应用中需要考虑内核以外功能的实现难易程度。,ARM软件开发流程和开发工具,12,C/OS-II,在C/OS-II开发中,内核、驱动程序和应用程序都是集中编译,C/OS-II编译以后的二进制代码中既包含内核代码,也包含驱动程序和应用程序的代码。C/OS-II没有提供统一的开发工具链,C/OS-II程序的编译应该采用支持所选处理器的编译器。对于ARM处理器,可以在Windows环境中使用ADS 1.2、ADT IDE中编译C/OS-II,也可以在Linux环境中使用GNU GCC编译C/OS-II。,ARM软件开发流程和开发工具,13,Linux/uClinux,Linux/uClinux是对于有MMU和没有MMU的处理器的Linux解决方案。Linux/uClinux提供强大的文件系统、网络功能、GUI等软件模组支持,而且这些功能都是可以裁减的,同时它还提供了标准的驱动程序接口和软件开发接口,便于用户编程和程序维护。Linux/uClinux自身具备一整套工具链(GNU GCC),包括编译和调试工具,用户可以自行建立嵌入式系统的开发环境和交叉运行环境。,ARM软件开发流程和开发工具,14,Linux/uClinux,对于ARM处理器,Linux/uClinux内核、驱动程序以及应用程序的编译都在Linux环境中使用GNU GCC完成。对于内核和驱动程序的调试通常借助于运行于Linux/uClinux之前的bootloader来完成,只有在很少的情况下需要借助在线仿真器完成。对于应用程序的调试则可以完全抛弃在线仿真器,使用GDB完成。,ARM软件开发流程和开发工具,15,Windows CE,Windows CE是Windows界面在嵌入式处理器中的实现,它提供了友好的人机交互界面和强大的二次开发功能。Windows CE包括四大基本模块,它们提供了操作系统的关键特性,分别是:内核(Kernel)模块、对象存储(Object Store)模块、GWES(用户、应用程序和操作系统之间的图形用户界面)模块和通信(Communication)模块。,ARM软件开发流程和开发工具,16,Windows CE,Windows CE拥有完善的软件支持开发工具,Windows CE的核心移植和驱动开发使用专门的操作系统定制工具:Windows CE Platform Builder(简称PB)。而应用程序的开发则有嵌入式开发工具包Embedded Visual Tools,包括Embedded Visual C+(简称EVC)和Embedded Visual Basic(简称EVB)等。同时Embedded Visual Tools下还可以进行部分驱动程序的开发。同时在Windows CE中还提供了用于Windows CE开发的bootloader:EBOOT。,ARM软件开发流程和开发工具,17,vxWorks,VxWorks是专门为实时嵌入式系统设计开发的操作系统内核,为程序员提供了高效的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。在各种CPU平台上提供了统一的编程接口和一致的运行特性,尽可能的屏蔽了不同CPU之间的底层差异。应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。基于VxWorks操作系统的应用程序可以在不同CPU平台上轻松移植。,ARM软件开发流程和开发工具,18,vxWorks,VxWorks包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。TornadoII是为开发VxWorks应用系统提供的集成开发环境,TornadoII中包含的工程管理软件,可以将用户自己的代码与VxWorks的核心有效的组合起来,可以按用户的需要裁剪配置VxWorks内核。,ARM软件开发流程和开发工具,19,ARM主流开发工具,Windows操作系统ARM ADS/SDT + 调试器GNU + Cygwin + 调试器ARM SDT + 简易电缆Linux操作系统GNU + GDB,ARM软件开发流程和开发工具,20,ARM嵌入式开发模式( ARM ADS/SDT + 调试器),ARM软件开发流程和开发工具,21,ADS与Multi-ICE,ARM ADS全称为ARM Developer Suite,是ARM公司推出的用于ARM程序设计、开发和调试的集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。ADS由命令行开发工具,ARM运行时库,图形化集成开发环境(Code Warrior和AXD),实用程序和支持软件组成。,ARM软件开发流程和开发工具,22,ADS命令行开发工具,ARM C(C+)编译器 ARM汇编器(armasm) ARM链接器(armlink) 符号调试器(armsd),ARM软件开发流程和开发工具,23,ARM运行时库,ANSI C函数库:(armlib) C+函数库:,ARM软件开发流程和开发工具,24,图形化集成开发环境(Code Warrior和AXD),CodeWarrior for ARM ADS调试器实用程序 fromELF armar Flash downloader 支持的软件 ARMulator,ARM软件开发流程和开发工具,25,ADT for ARM集成开发系统,ARM软件开发工具ADT IDE简介,26,ADT 1000 Emulator for ARM,ARM软件开发工具ADT IDE简介,27,ADT 1000 Emulator for ARM,ARM软件开发工具ADT IDE简介,ADT Emulator for ARM是连接主机核目标机之间的硬件设备,它实现ADT IDE for ARM与目标机之间的连接。,它具有如下特征:,支持ARM核CPU,非插入式调试,无需目标存储器,不占用目标系统的任何端口,2.5V/3.3V/5V兼容电平接口,支持标准的14/20针JTAG接口,运行状态指示,与主机之间通过并口连接,下载速度达到25Kbytes/S,28,ADT IDE for ARM,ARM软件开发工具ADT IDE简介,29,ADT IDE for ARM主要特征 可视化编程环境,ARM软件开发工具ADT IDE简介,支持ARM7、ARM9、SecurCore等。,运行于Windows98 、NT、2000、XP等平台。,中文、英文版本支持,可视化的源码编辑和工程管理功能,界面友好,使用方便:类似MS Visual Studio的用户界面,支持打印功能,支持文件内查找功能和Find in Files功能,30,ADT IDE for ARM主要特征 可视化编程环境,ARM软件开发工具ADT IDE简介,工程管理器:ADT IDE提供图形化的工程管理工具,实现文件级、文件目录级、工程级的多级编译连接选项管理以及工程级的调试参数管理,源码编辑器:支持标准的文本编辑功能,支持C语言、汇编语言语法高亮显示,辅助编辑工具:提供一系列辅助编辑工具,方便开发人员。包括:多剪贴板工具、代码模板工具、头文件和源文件切换工具、注释工具、符号配对书写工具等多种辅助编辑工具。,31,ADT IDE for ARM主要特征 交叉编译功能,ARM软件开发工具ADT IDE简介,支持开发语言:ANSI C;Embedded C+;汇编语言,编译工具:使用著名优秀自由软件GNU的GCC交叉编译工具,并经过优化和严格测试,支持C语言、汇编语言等,编译参数设置:完全图形界面方式的编译参数设置,提供可视化的设置功能。支持工程级、文件目录级、文件级编译参数设置,32,ADT IDE for ARM主要特征 调试功能,ARM软件开发工具ADT IDE简介,同时提供了图形和命令行两种调试方式,程序的单步执行,程序下载,存储区下载和上载功能。,工程级调试参数管理,支持源程序、反汇编程序和混合窗口显示,支持ARM/THUMB方式显示,具有与MS Visual Studio类似的调试菜单功能:Go,Stop,Reset,Restart,Step into,Step over,Step out,Run to Cursor等,丰富的示例程序,33,ADT IDE for ARM主要特征 调试功能,ARM软件开发工具ADT IDE简介,断点功能:支持软件断点和硬件断点,实现断点设置、断点屏蔽、断点取消、断点列表等功能,变量监视功能:随程序运行同步更新变量,即时修改变量值,可设置自动/手动刷新方式、十进制/十六进制显示,ARM各种模式的寄存器即时查看与修改,当前模式指示,寄存器值修改时红色突显,存储器查看与修改,可设置自动/手动刷新方式、字节/双字节/四字节显示、大/小端方式显示,存储器值修改时红色突显,34,ADT IDE for ARM主要特征 调试功能,ARM软件开发工具ADT IDE简介,函数堆栈显示,可设置自动/手动刷新方式、十进制/十六进制显示、参数值显示,参数类型显示,板上寄存器(On Board Register)的查看和修改,可以查看支持CPU的所有板上寄存器的具体意义、当前值、各个位的意义,可设置自动/手动刷新方式、二进制/十进制/十六进制显示、大/小端方式显示,支持十进制/十六进制方式修改寄存器值,寄存器值修改时红色突显。,flash在线编程器,支持对多种flash芯片的空白检查、擦除、编程、校验等操作,支持单一操作和自动操作两种操作方式,支持8/16/32位flash访问宽度,支持多片flash同时编程,编程速度达15Kbytes/s。提供统一的flash编程接口,可以方便地添加flash编程方案。,35,ADT IDE for ARM,ARM软件开发工具ADT IDE简介,ADT IDE(Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple),用户手册、编程指南,丰富例程,36,多版本支持,ARM软件开发工具ADT IDE简介,37,多工程管理,ARM软件开发工具ADT IDE简介,38,可视化编辑器,ARM软件开发工具ADT IDE简介,39,GCC交叉编译,ARM软件开发工具ADT IDE简介,40,编译器设置,ARM软件开发工具ADT IDE简介,41,汇编器设置,ARM软件开发工具ADT IDE简介,42,连接器设置,ARM软件开发工具ADT IDE简介,43,调试功能,ARM软件开发工具ADT IDE简介,44,多种调试模式,ARM软件开发工具ADT IDE简介,45,断点,ARM软件开发工具ADT IDE简介,46,存储器窗口,ARM软件开发工具ADT IDE简介,47,存储区上载下载功能,ARM软件开发工具ADT IDE简介,48,寄存器观察窗口,ARM软件开发工具ADT IDE简介,49,函数调用栈窗口,ARM软件开发工具ADT IDE简介,50,变量观察窗口,ARM软件开发工具ADT IDE简介,51,命令窗口,ARM软件开发工具ADT IDE简介,52,单步调试 STEP INTO,ARM软件开发工具ADT IDE简介,53,单步调试 STEP OVER,ARM软件开发工具ADT IDE简介,54,单步调试 STEP OUT,ARM软件开发工具ADT IDE简介,55,单步调试 RUN TO CURSOR,ARM软件开发工具ADT IDE简介,56,板上寄存器,ARM软件开发工具ADT IDE简介,57,板上寄存器,ARM软件开发工具ADT IDE简介,58,FLASH在线编程器,ARM软件开发工具ADT IDE简介,59,工具菜单,ARM软件开发工具ADT IDE简介,60,在线帮助,ARM软件开发工具ADT IDE简介,61,嵌入式软件开发,无操作系统的软件开发启动代码应用程序基于操作系统的软件开发bootloader操作系统移植BSP板级支持包应用程序开发,ARM软件设计与代码分析,62,启动代码,功能硬件初始化引导C代码特征通常用汇编语言编写程序复位运行入口点代码量非常小,程序流程设置中断、异常入口关中断硬件寄存器初始化(GPIO配置、总线配置、PLL时钟)初始化栈指针数据区初始化C入口函数调用 BL Main,ARM软件设计与代码分析,63,应用程序(无操作系统),功能硬件驱动应用特征通常用C语言或者嵌入式汇编语言编写程序较复杂,代码量较大,ARM软件设计与代码分析,64,bootloader,功能硬件初始化引导操作系统下载程序(串口、网口、USB)烧写flash特征程序复位运行入口点通常用汇编语言+C语言编写代码量较小,ARM软件设计与代码分析,65,嵌入式操作系统移植,LinuxWindows CE uC/OS IIuClinuxNucleus,ARM软件设计与代码分析,66,BSP板级支持包,功能为应用程序提供统一的硬件操作接口特征高度硬件相关高度依赖于具体硬件平台各种操作系统各异,ARM软件设计与代码分析,67,应用程序开发(操作系统),功能GUI图形、人机交互控制算法特征硬件依赖程度小部分可仿真调试各种操作系统各异,ARM软件设计与代码分析,68,嵌入式软件设计和调试流程,编辑创建工程添加文件、编写程序汇编语言加C语言编译配置编译、汇编和连接参数编写连接脚本文件编译,调试连接调试器下载程序运行、调试固化通过仿真器烧写flash专用或通用的编程器通过bootloader烧写flash,ARM软件设计与代码分析,69,交叉编译,GNU交叉编译编译.c arm-elf-gcc汇编.S arm-elf-gas连接.o arm-elf-ld操作文件汇编文件.SC文件.c链接脚本文件ldscript库文件.o .lib .a,生成调试格式文件.elfDWARF-1DWARF-2生成bin文件elf2binarm-elf-objcopy,ARM软件设计与代码分析,70,链接脚本,段Text段rodata段data段bss段符号Image_RO_Limit Image_RW_BaseImage_ZI_BaseImage_ZI_Limit,GCC库专用调试信息,ARM软件设计与代码分析,71,链接脚本示例,程序在SDRAM中运行,程序在FLASH中运行,ARM软件设计与代码分析,72,GCC库,GCC库标准C函数库lib.a -lc标准数学函数库libm.a -lm标准函数库的支持库libg.a -lgGCC的支持库libgcc.a -lgcc链接排列顺序-lm lc lgcc -lg,ARM软件设计与代码分析,73,ARM9-2440启动代码分析,ARM软件设计与代码分析,在基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0 x00000000开始执行,因此在这个地址处安排的通常就是系统的启动代码。它通常也是BootLoader程序的一部分,可以在启动代码基础上编写BootLoader。用汇编语言编写。启动代码是在复位后运行其它程序之前运行的一段小程序。通过它,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用C函数准备好正确的环境。,74,启动代码的移植和修改,ARM软件设计与代码分析,启动代码除了依赖于 CPU 的体系结构外,实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的启动代码也能运行在另一块板子上,也还是需要作一些必要的修改。,75,启动代码流程图,启动代码的功能:RAM初始化,设置各个部件的时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用C函数。注意:在本阶段,特别是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使用堆栈保存数据将产生不可预知的结果;,ARM软件设计与代码分析,76,设置异常跳转表,复位异常直接跳转到ResetHandler处,它是相对跳转,位置无关。,ARM软件设计与代码分析,77,关闭看门狗,设置S3C2440 WTCON寄存器必须设置,ARM软件设计与代码分析,78,设置中断模式并禁止中断,设置S3C2440中断寄存器设置所有一级中断源与二级中断源为不可用状态,ARM软件设计与代码分析,79,配置存储器控制寄存器宽度,ARM软件设计与代码分析,80,堆栈初始化,ARM软件设计与代码分析,81,C代码初始化,ARM软件设计与代码分析,拷贝RW数据段,ZI段清零,跳转到Main函数处执行,82,ARM9-2440 BOOTLOADER分析,ARM软件设计与代码分析,BootLoader是在启动代码的基础之上,通常启动代码包含于BootLoader之中BootLoader常用于引导操作系统或者应用程序BootLoader可以包含一些简单的调试手段ARM9-2440使用通用的u-boot,83,u-boot简介,ARM软件设计与代码分析,u-boot是由德国DENX小组开发的交叉平台BootLoader,其全称为“universal Boot Loader”。u-boot的开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。它提供数百种嵌入式开发板和各种CPU,包括PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等,同时它除了支持Linux系统的引导外,还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等多种嵌入式操作系统的引导。,84,u-boot简介,ARM软件设计与代码分析,u-boot的用户接口类似于Linux的shell界面,通过串口连接以后,用户可以交互式的输入命令和看到结果,u-boot的启动界面如下所示:U-Boot 1.1.1 (Sep 6 2004 - 12:12:06) U-Boot code: 33F80000 - 33F9CED0 BSS: - 33FA116CRAM Configuration:Bank #0: 30000000 64 MBFlash: 32 MBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0JX2410 #,85,BootLoader的基本概念,BootLoader是系统加电后运行的第一段软件代码。嵌入式系统中,整个系统的加载启动任务完全由 BootLoader来完成。比如在一个基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0 x00000000开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。简单地说,BootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。通常,BootLoader 是依赖于硬件而实现的,特别是在嵌入式领域,为嵌入式系统建立一个通用的 BootLoader 是很困难的。,ARM软件设计与代码分析,86,BootLoader 的移植和修改,BootLoader除了依赖于 CPU 的体系结构外,BootLoader 实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,也还是需要作一些必要的修改。,ARM软件设计与代码分析,87,BootLoader 的安装,系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。比如,S3C2440在复位时都从地址 0 x00000000 取它的第一条指令。嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被安排这个起始地址上,因此在系统加电后,CPU将首先执行BootLoader程序。也就是说对于基于S3C2440的这套系统,我们的BootLoader是从0地址开始存放的,而这块起始地址需要采用可引导的固态存储设备如FLASH。,ARM软件设计与代码分析,88,用来控制 BootLoader 的设备或机制,串口通讯是最简单也是最廉价的一种双机通讯设备,所以往往在BootLoader中主机和目标机之间都通过串口建立连接,BootLoader 程序在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。当然如果认为串口通讯速度不够,也可以采用网络或者USB通讯,那么相应的在BootLoader中就需要编写各自的驱动。,ARM软件设计与代码分析,89,Boot Loader 的操作模式,启动加载模式:这种模式也称为自主(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式。 下载模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,比如:下载应用程序、数据文件、内核映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被 BootLoader写到目标机上的固态存储设备中。BootLoader 的这种模式通常在系统更新时使用。工作于这种模式下的 BootLoader 通常都会向它的终端用户提供一个简单的命令行接口。 在uboot中可以通过修改环境变量实现自主模式。,ARM软件设计与代码分析,90,BootLoader与主机间文件传输的通信设备及协议,最常见的情况就是,目标机上的 BootLoader 通过串口与主机之间进行文件传输,传输可以简单的采用直接数据收发,当然在串口上也可以采用xmodemymodemzmodem 协议以及在以太网上采用TFTP协议。,ARM软件设计与代码分析,91,BootLoader的主要任务与典型结构框架,从操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行。 大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的,也就是前面说的启动代码。而stage2 则通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。,ARM软件设计与代码分析,92,BootLoader的主要任务与典型结构框架,BootLoader的stage1通常包括以下步骤为加载 BootLoader 的 stage2 准备 RAM 空间拷贝 BootLoader 的 stage2 到 RAM 空间中设置好堆栈跳转到 stage2 的 C 入口点BootLoader的stage2通常包括以下步骤初始化本阶段要使用到的硬件设备调用应用程序或启动内核,ARM软件设计与代码分析,93,Stage 1初始化流程图,stage 1的功能: RAM初始化,设置各个部件的时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用Stage 2。注意:在本阶段,特别是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使用堆栈保存数据将产生不可预知的结果;,ARM软件设计与代码分析,94,Stage 2流程图,stage 2的功能:初始化串口,显示菜单,通过控制台获取用户输入,并执行相应的命令操作。,ARM软件设计与代码分析,95,板级支持包,ARM软件设计与代码分析,BSP(板级支持包)是介于底层硬件和操作系统之间的软件层次,它完成系统上电后最初的硬件和软件初始化,并对底层硬件进行封装,使得操作系统不再面对具体的操作。,96,板级支持包的特点,ARM软件设计与代码分析,硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作和控制具体硬件的方法。操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。,97,板级支持包的功能,ARM软件设计与代码分析,98,板级支持包的功能,ARM软件设计与代码分析,嵌入式系统初始化片级初始化板级初始化系统级初始化硬件相关的设备驱动程序,99,系统级初始化,ARM软件设计与代码分析,这是一个以软件初始化为主的过程,主要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,比如网络系统、文件系统等;最后,操作系统创建应用程序环境并将控制转交给应用程序的入口。,100,硬件相关的驱动程序,ARM软件设计与代码分析,与初始化过程相反,硬件相关的设备驱动程序的初始化和使用通常是一个从高层到底层的过程。尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。,101,ARM9-2440应用代码设计及中断处理,ARM软件设计与代码分析,连接脚本,102,ARM9-2440应用代码中断向量,ARM软件设计与代码分析,起始地址0 x30000000,除复位异常外,其余异常入口地址由FLASH跳转得到,103,ARM9-2440中断处理流程,执行0 x18处指令:LDR pc, = 0 x03000018,由u-boot控制,执行0 x03000018处指令:HandlerIRQ,2410init.s,执行HandlerIRQ, 2410init.s,执行HandleIRQ处保存的中断分发例程, 2410init.s中初始化为IsrIRQ,ARM软件设计与代码分析,根据INTOFFSET的值从中断向量表中取出中断服务函数地址,R8中为产生了中断的中断源的中断服务函数地址,跳转到中断服务函数地址处运行,104,中断向量表,ARM软件设计与代码分析,从_ISR_STARTADDRESS + 0 x20开始每四个字节表示一个中断源的中断服务函数地址,105,注册中断服务函数并使能中断,函数实现/* 请求中断 */Irq_Request(IRQ_EINT2, eint2_isr);Irq_Request(IRQ_EINT3, eint3_isr); /* 使能中断 */ Irq_Enable(IRQ_EINT2); Irq_Enable(IRQ_EINT3);,ARM软件设计与代码分析,注册中断服务函数,即将eint2_isr中断服务函数的地址赋值到中断向量表中。,开启中断源,必须在注册中断服务函数完成后进行。,106,用C代码编写的中断服务函数,函数实现,ARM软件设计与代码分析,必须声明为中断服务函数,清除中断标记,处理中断,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开