书签 分享 收藏 举报 版权申诉 / 106
上传文档赚钱

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

  • 上传人(卖家):三亚风情
  • 文档编号:3003342
  • 上传时间:2022-06-21
  • 格式:PPT
  • 页数:106
  • 大小:2.91MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《嵌入式软件系统设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    嵌入式 软件 系统 设计 课件
    资源描述:

    1、嵌入式系统教案嵌入式系统教案嵌入式软件系统设计嵌入式软件系统设计2022-5-312提纲嵌入式软件开发过程ARM软件设计与代码分析ARM软件开发流程和开发工具第六章 嵌入式软件系统设计3嵌入式系统软件开发流程q软件需求分析:确定设计任务和目标,软件需求分析:确定设计任务和目标,并提炼出设计规格说明书,作为正式设计指并提炼出设计规格说明书,作为正式设计指导和验收的标准。导和验收的标准。嵌入式软件开发过程q概要设计:描述系统如何实现所述的需概要设计:描述系统如何实现所述的需求,包括软件模块的划分、系统的软件开发求,包括软件模块的划分、系统的软件开发工具选择以及关键问题的论证等。工具选择以及关键问题

    2、的论证等。概要设计模块划分软件需求分析:编码单元调试集成调试详细设计BSP、应用程序测试产品q详细设计:详细描述各个模块的实现方详细设计:详细描述各个模块的实现方法与过程,模块间接口等问题,以作为编码法与过程,模块间接口等问题,以作为编码人员的编码准则。人员的编码准则。q编码编码4嵌入式系统的开发流程q单元调试:编码完成后,对各个模块进行单元调试,单元调试:编码完成后,对各个模块进行单元调试,以保证模块正常工作。以保证模块正常工作。嵌入式软件开发过程q集成调试集成调试5常用调试方法q 软件仿真q 驻留监控程序 硬件要求高,一般在硬件稳定之后进行 需要占用目标板上的一部分资源 不能对程序的全速运

    3、行进行完全仿真q JTAG仿真器 完全非插入式调试,不使用片上资源,无需目标存储器,不占用目标系统的任何端口 仿真效果更加接近于目标硬件q 在线仿真器ARM软件开发流程和开发工具6处理器的选择处理性能 技术指标 功耗 操作系统和软件支持工具的选择 是否内置调试工具 ARM软件开发流程和开发工具7操作系统和软件支持工具的选择 如果用户希望使用Windows CE、Linux等操作系统,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片。ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都带有MMU功能。而ARM

    4、7TDMI则没有MMU,不支持Windows CE和Linux,但目前有uCLinux以及uC/OS-II等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。ARM软件开发流程和开发工具8操作系统和软件支持工具的选择 如果决定采用Linux、Windows CE、vxWorks等操作系统时,在选择处理器时应该尽量选择该操作系统已经支持的处理器,这样可以大大加快开发进度,降低难度。选择不同的操作系统,其软件开发过程和调试手段各不相同,你的选择方案是否能够提供各个开发阶段(包括bootloader开发、操作系统移植、驱动开发和应用开发)所需的软件支持工具也是一个必须考虑的因素。 AR

    5、M软件开发流程和开发工具9硬件驱动程序的调试如果硬件平台是自行设计的,必须首先对硬件进行调试,硬件调试成功是进行操作系统移植和应用程序开发的一个基本前提。这个过程通常是通过编写一些简单的测试程序直接驱动硬件以验证硬件是否正确,这些程序可以基于操作系统进行编程,也可以不使用操作系统,而且后一种方法来得更加简单,调试也更方便和快捷。ARM软件开发流程和开发工具10操作系统的选择和移植C/OS-II Linux/uClinux Windows CE vxWorks ARM软件开发流程和开发工具11C/OS-II 免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时

    6、间管理、任务间同步与通信、内存管理和中断服务等功能。它可以基于ROM运行(ROMable)、可裁减,具有高度移植性。C/OS-II实时嵌入式内核在工业控制、数据采集等领域应用广泛。但C/OS-II内核不支持文件系统、网络协议等功能,而且没有提供统一的硬件驱动程序接口和开发工具链,在复杂应用中需要考虑内核以外功能的实现难易程度。ARM软件开发流程和开发工具12C/OS-II 在C/OS-II开发中,内核、驱动程序和应用程序都是集中编译,C/OS-II编译以后的二进制代码中既包含内核代码,也包含驱动程序和应用程序的代码。C/OS-II没有提供统一的开发工具链,C/OS-II程序的编译应该采用支持所

    7、选处理器的编译器。对于ARM处理器,可以在Windows环境中使用ADS 1.2、ADT IDE中编译C/OS-II,也可以在Linux环境中使用GNU GCC编译C/OS-II。ARM软件开发流程和开发工具13Linux/uClinux Linux/uClinux是对于有MMU和没有MMU的处理器的Linux解决方案。Linux/uClinux提供强大的文件系统、网络功能、GUI等软件模组支持,而且这些功能都是可以裁减的,同时它还提供了标准的驱动程序接口和软件开发接口,便于用户编程和程序维护。Linux/uClinux自身具备一整套工具链(GNU GCC),包括编译和调试工具,用户可以自行建

    8、立嵌入式系统的开发环境和交叉运行环境。ARM软件开发流程和开发工具14Linux/uClinux 对于ARM处理器,Linux/uClinux内核、驱动程序以及应用程序的编译都在Linux环境中使用GNU GCC完成。对 于 内 核 和 驱 动 程 序 的 调 试 通 常 借 助 于 运 行 于Linux/uClinux之前的bootloader来完成,只有在很少的情况下需要借助在线仿真器完成。对于应用程序的调试则可以完全抛弃在线仿真器,使用GDB完成。ARM软件开发流程和开发工具15Windows CEWindows CE是Windows界面在嵌入式处理器中的实现,它提供了友好的人机交互界面

    9、和强大的二次开发功能。Windows CE包括四大基本模块,它们提供了操作系统的关键特性,分别是:内核(Kernel)模块、对象存储(Object Store)模块、GWES(用户、应用程序和操作系 统 之 间 的 图 形 用 户 界 面 ) 模 块 和 通 信(Communication)模块。ARM软件开发流程和开发工具16Windows CEWindows CE拥有完善的软件支持开发工具,Windows CE的核心移植和驱动开发使用专门的操作系统定制工具:Windows CE Platform Builder(简称PB)。而应用程序的开发则有嵌入式开发工具包Embedded Visual

    10、 Tools,包括Embedded Visual C+(简称EVC)和Embedded Visual Basic(简称EVB)等。同时Embedded Visual Tools下还可以进行部分驱动程序的开发。同时在Windows CE中还提供了用于Windows CE开发的bootloader:EBOOT。 ARM软件开发流程和开发工具17vxWorks VxWorks是专门为实时嵌入式系统设计开发的操作系统内核,为程序员提供了高效的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。在各种CPU平台上提供了统一的编程接口和一致的运行特性,尽可能的屏蔽了不同CPU之间的底层差异。应用

    11、程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。基于VxWorks操作系统的应用程序可以在不同CPU平台上轻松移植。ARM软件开发流程和开发工具18vxWorks VxWorks包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。TornadoII是为开发VxWorks应用系统提供的集成开发环境,TornadoII中包含的工程管理软件,可以将用户自己的代码与VxWorks的核心有效的组合起来,可以按用户的需要裁剪配置VxWorks内核。 ARM软件开发流程和开

    12、发工具19ARM主流开发工具qWindows操作系统ARM ADS/SDT + 调试器GNU + Cygwin + 调试器ARM SDT + 简易电缆qLinux操作系统GNU + GDBARM软件开发流程和开发工具20ARM嵌入式开发模式( ARM ADS/SDT + 调试器)ARM软件开发流程和开发工具21ADS与Multi-ICE qARM ADS全称为ARM Developer Suite,是ARM公司推出的用于ARM程序设计、开发和调试的集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。qADS由命令行开发工具,ARM运行时库,图形化集成开发环境(

    13、Code Warrior和AXD),实用程序和支持软件组成。ARM软件开发流程和开发工具22ADS命令行开发工具 qARM C(C+)编译器 qARM汇编器(armasm) qARM链接器(armlink) q符号调试器(armsd) ARM软件开发流程和开发工具23ARM运行时库qANSI C函数库:(armlib) qC+函数库: ARM软件开发流程和开发工具24图形化集成开发环境(Code Warrior和AXD) qCodeWarrior for ARM qADS调试器q实用程序 fromELF armar Flash downloader q支持的软件 ARMulatorARM软件开

    14、发流程和开发工具25ADT for ARM集成开发系统ARM软件开发工具ADT IDE简介26ADT 1000 Emulator for ARMARM软件开发工具ADT IDE简介 27ADT 1000 Emulator for ARMARM软件开发工具ADT IDE简介 qADT Emulator for ARMADT Emulator for ARM是连接主机核目标机之间的是连接主机核目标机之间的硬件设备,它实现硬件设备,它实现ADT IDE for ARMADT IDE for ARM与目标机之间的连接。与目标机之间的连接。q它具有如下特征:它具有如下特征:支持支持ARMARM核核CPU

    15、CPU非插入式调试,无需目标存储器,不占用目标系统的任何非插入式调试,无需目标存储器,不占用目标系统的任何端口端口2.5V/3.3V/5V2.5V/3.3V/5V兼容电平接口兼容电平接口支持标准的支持标准的14/2014/20针针JTAGJTAG接口接口运行状态指示运行状态指示与主机之间通过并口连接与主机之间通过并口连接下载速度达到下载速度达到25Kbytes/S25Kbytes/S28ADT IDE for ARMARM软件开发工具ADT IDE简介 29ADT IDE for ARM主要特征 可视化编程环境ARM软件开发工具ADT IDE简介 q支持支持ARM7ARM7、ARM9ARM9、

    16、SecurCoreSecurCore等。等。q运行于运行于Windows98 Windows98 、NTNT、20002000、XPXP等平台。等平台。q中文、英文版本支持中文、英文版本支持q可视化的源码编辑和工程管理功能可视化的源码编辑和工程管理功能q界面友好,使用方便:类似界面友好,使用方便:类似MS Visual StudioMS Visual Studio的用的用户界面,支持打印功能,支持文件内查找功能和户界面,支持打印功能,支持文件内查找功能和Find in Find in FilesFiles功能功能30ADT IDE for ARM主要特征 可视化编程环境ARM软件开发工具ADT

    17、 IDE简介 q工程管理器:工程管理器:ADT IDEADT IDE提供图形化的工程管理工具,提供图形化的工程管理工具,实现文件级、文件目录级、工程级的多级编译连接选项实现文件级、文件目录级、工程级的多级编译连接选项管理以及工程级的调试参数管理管理以及工程级的调试参数管理q源码编辑器:支持标准的文本编辑功能,支持源码编辑器:支持标准的文本编辑功能,支持C C语言、语言、汇编语言语法高亮显示汇编语言语法高亮显示q辅助编辑工具:提供一系列辅助编辑工具,方便开辅助编辑工具:提供一系列辅助编辑工具,方便开发人员。包括:多剪贴板工具、代码模板工具、头文件发人员。包括:多剪贴板工具、代码模板工具、头文件和

    18、源文件切换工具、注释工具、符号配对书写工具等多和源文件切换工具、注释工具、符号配对书写工具等多种辅助编辑工具。种辅助编辑工具。31ADT IDE for ARM主要特征 交叉编译功能ARM软件开发工具ADT IDE简介 q支持开发语言:支持开发语言:ANSI CANSI C;Embedded C+Embedded C+;汇编语言;汇编语言q编译工具:使用著名优秀自由软件编译工具:使用著名优秀自由软件GNUGNU的的GCCGCC交叉编交叉编译工具,并经过优化和严格测试,支持译工具,并经过优化和严格测试,支持C C语言、汇编语言语言、汇编语言等等q编译参数设置:完全图形界面方式的编译参数设置,编译

    19、参数设置:完全图形界面方式的编译参数设置,提供可视化的设置功能。支持工程级、文件目录级、文提供可视化的设置功能。支持工程级、文件目录级、文件级编译参数设置件级编译参数设置32ADT IDE for ARM主要特征 调试功能ARM软件开发工具ADT IDE简介 q同时提供了图形和命令行两种调试方式同时提供了图形和命令行两种调试方式q程序的单步执行程序的单步执行q程序下载程序下载q存储区下载和上载功能。存储区下载和上载功能。q工程级调试参数管理工程级调试参数管理q支持源程序、反汇编程序和混合窗口显示,支持支持源程序、反汇编程序和混合窗口显示,支持ARM/THUMBARM/THUMB方式显示方式显示

    20、q具有与具有与MS Visual StudioMS Visual Studio类似的调试菜单功能:类似的调试菜单功能:GoGo,StopStop,ResetReset,RestartRestart,Step intoStep into,Step overStep over,Step Step outout,Run to CursorRun to Cursor等等q丰富的示例程序丰富的示例程序33ADT IDE for ARM主要特征 调试功能ARM软件开发工具ADT IDE简介 q断点功能:支持软件断点和硬件断点,实现断点设断点功能:支持软件断点和硬件断点,实现断点设置、断点屏蔽、断点取消、断

    21、点列表等功能置、断点屏蔽、断点取消、断点列表等功能q变量监视功能:随程序运行同步更新变量,即时修变量监视功能:随程序运行同步更新变量,即时修改变量值,可设置自动改变量值,可设置自动/ /手动刷新方式、十进制手动刷新方式、十进制/ /十六进十六进制显示制显示qARMARM各种模式的寄存器即时查看与修改,当前模式指各种模式的寄存器即时查看与修改,当前模式指示,寄存器值修改时红色突显示,寄存器值修改时红色突显q存储器查看与修改,可设置自动存储器查看与修改,可设置自动/ /手动刷新方式、字手动刷新方式、字节节/ /双字节双字节/ /四字节显示、大四字节显示、大/ /小端方式显示,存储器值修小端方式显示

    22、,存储器值修改时红色突显改时红色突显34ADT IDE for ARM主要特征 调试功能ARM软件开发工具ADT IDE简介 q函数堆栈显示,可设置自动函数堆栈显示,可设置自动/ /手动刷新方式、十进制手动刷新方式、十进制/ /十六进制显示、参数值显示,参数类型显示十六进制显示、参数值显示,参数类型显示q板上寄存器板上寄存器(On Board Register)(On Board Register)的查看和修改,可的查看和修改,可以查看支持以查看支持CPUCPU的所有板上寄存器的具体意义、当前值、的所有板上寄存器的具体意义、当前值、各个位的意义,可设置自动各个位的意义,可设置自动/ /手动刷新

    23、方式、二进制手动刷新方式、二进制/ /十十进制进制/ /十六进制显示、大十六进制显示、大/ /小端方式显示,支持十进制小端方式显示,支持十进制/ /十十六进制方式修改寄存器值,寄存器值修改时红色突显。六进制方式修改寄存器值,寄存器值修改时红色突显。qflashflash在线编程器,支持对多种在线编程器,支持对多种flashflash芯片的空白检芯片的空白检查、擦除、编程、校验等操作,支持单一操作和自动操查、擦除、编程、校验等操作,支持单一操作和自动操作两种操作方式,支持作两种操作方式,支持8/16/328/16/32位位flashflash访问宽度,支持访问宽度,支持多片多片flashflas

    24、h同时编程,编程速度达同时编程,编程速度达15Kbytes/s15Kbytes/s。提供统一。提供统一的的flashflash编程接口,可以方便地添加编程接口,可以方便地添加flashflash编程方案。编程方案。35ADT IDE for ARMARM软件开发工具ADT IDE简介 ADT IDE(Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple)用户手册、编程指南丰富例程36多版本支持ARM软件开发工具ADT IDE简介 软件仿真版本软件仿真版本ARM7ARM7版本版本ARM9ARM9版本版本简易仿真版本简易仿真版本37多工程管理ARM软件开发工具ADT IDE简介 工

    25、程工程当前活动工程当前活动工程38可视化编辑器ARM软件开发工具ADT IDE简介 编辑菜单编辑菜单语法高亮编辑器语法高亮编辑器辅助编辑工具条辅助编辑工具条书签39GCC交叉编译ARM软件开发工具ADT IDE简介编译菜单编译工具条编译结果输出错误定位40编译器设置ARM软件开发工具ADT IDE简介多配置管理多工程设管理多参数配置41汇编器设置ARM软件开发工具ADT IDE简介多配置管理多工程设管理多参数配置42连接器设置ARM软件开发工具ADT IDE简介多配置管理多工程设管理多参数配置43调试功能ARM软件开发工具ADT IDE简介 调试菜单调试工具条命令行调试窗口44多种调试模式AR

    26、M软件开发工具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 INTOARM

    27、软件开发工具ADT IDE简介53单步调试 STEP OVERARM软件开发工具ADT IDE简介 54单步调试 STEP OUTARM软件开发工具ADT IDE简介 55单步调试 RUN TO CURSORARM软件开发工具ADT IDE简介 56板上寄存器ARM软件开发工具ADT IDE简介寄存器组寄存器寄存器位域热点描述信息修改凸显标记57板上寄存器ARM软件开发工具ADT IDE简介58FLASH在线编程器ARM软件开发工具ADT IDE简介 59工具菜单ARM软件开发工具ADT IDE简介 可自定制60在线帮助ARM软件开发工具ADT IDE简介 61嵌入式软件开发q 无操作系统的软

    28、件开发 启动代码 应用程序q 基于操作系统的软件开发 bootloader 操作系统移植 BSP板级支持包 应用程序开发ARM软件设计与代码分析62启动代码q 功能 硬件初始化 引导C代码q 特征 通常用汇编语言编写 程序复位运行入口点 代码量非常小q 程序流程 设置中断、异常入口 关中断 硬件寄存器初始化(GPIO配置、总线配置、PLL时钟) 初始化栈指针 数据区初始化 C入口函数调用 BL MainARM软件设计与代码分析63应用程序(无操作系统)q 功能 硬件驱动 应用q 特征 通常用C语言或者嵌入式汇编语言编写 程序较复杂,代码量较大ARM软件设计与代码分析64bootloaderq

    29、功能 硬件初始化 引导操作系统 下载程序(串口、网口、USB) 烧写flashq 特征 程序复位运行入口点 通常用汇编语言+C语言编写 代码量较小ARM软件设计与代码分析65嵌入式操作系统移植q Linuxq Windows CE q uC/OS IIq uClinuxq NucleusARM软件设计与代码分析66BSP板级支持包q 功能 为应用程序提供统一的硬件操作接口q 特征 高度硬件相关 高度依赖于具体硬件平台 各种操作系统各异ARM软件设计与代码分析67应用程序开发(操作系统)q 功能 GUI图形、人机交互 控制 算法q 特征 硬件依赖程度小 部分可仿真调试 各种操作系统各异ARM软件

    30、设计与代码分析68嵌入式软件设计和调试流程q 编辑 创建工程 添加文件、编写程序 汇编语言加C语言q 编译 配置编译、汇编和连接参数 编写连接脚本文件 编译q 调试 连接调试器 下载程序 运行、调试q 固化 通过仿真器烧写flash 专用或通用的编程器 通过bootloader烧写flashARM软件设计与代码分析69交叉编译q GNU交叉编译 编译.c arm-elf-gcc 汇编.S arm-elf-gas 连接.o arm-elf-ldq 操作文件 汇编文件.S C文件.c 链接脚本文件ldscript 库文件.o .lib .aq 生成调试格式文件.elf DWARF-1 DWARF-

    31、2q 生成bin文件 elf2bin arm-elf-objcopyARM软件设计与代码分析70链接脚本q 段 Text段 rodata段 data段 bss段q 符号 Image_RO_Limit Image_RW_Base Image_ZI_Base Image_ZI_Limitq GCC库专用q 调试信息ARM软件设计与代码分析71链接脚本示例q 程序在SDRAM中运行q 程序在FLASH中运行ARM软件设计与代码分析72GCC库q GCC库 标准C函数库lib.a -lc 标准数学函数库libm.a -lm 标准函数库的支持库libg.a -lg GCC的支持库libgcc.a -lg

    32、ccq 链接排列顺序 -lm lc lgcc -lgARM软件设计与代码分析73ARM9-2440启动代码分析ARM软件设计与代码分析q 在基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0 x00000000开始执行,因此在这个地址处安排的通常就是系统的启动代码。q 它通常也是BootLoader程序的一部分,可以在启动代码基础上编写BootLoader。q 用汇编语言编写。q 启动代码是在复位后运行其它程序之前运行的一段小程序。通过它,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用C函数准备好正确的环境。74启动代码的移

    33、植和修改ARM软件设计与代码分析q启动代码除了依赖于 CPU 的体系结构外,实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。q对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的启动代码也能运行在另一块板子上,也还是需要作一些必要的修改。 75启动代码流程图q 启动代码的功能:RAM初始化,设置各个部件的时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用C函数。q 注意:在本阶段,特别是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使

    34、用堆栈保存数据将产生不可预知的结果;Boot Loader 入口设置中断向量表切换到超级模式,并禁止中断ResetHandler:复位入口设置中断模式,关闭所有中断初始化硬件关闭看门狗使能回写Buffer和Cache设置非Cache区域设置端口关闭数据线015上拉设置外部中断的触发方式设置时钟设置CPU的运行频率,系统各部件的总线矿宽度以及各部件的时钟将Boot Loader拷贝到RAM拷贝代码到RAM跳至C代码程序ARM软件设计与代码分析76设置异常跳转表q复位异常直接跳转到ResetHandler处,它是相对跳转,位置无关。 ARM软件设计与代码分析77关闭看门狗q设置S3C2440 WT

    35、CON寄存器q必须设置0 x01e000000 x01d30000ARM软件设计与代码分析78设置中断模式并禁止中断q设置S3C2440中断寄存器q设置所有一级中断源与二级中断源为不可用状态ARM软件设计与代码分析79配置存储器控制寄存器宽度ARM软件设计与代码分析0 x01e00000配置值80堆栈初始化ARM软件设计与代码分析81C代码初始化ARM软件设计与代码分析拷贝RW数据段ZI段清零跳转到Main函数处执行82ARM9-2440 BOOTLOADER分析ARM软件设计与代码分析qBootLoader是在启动代码的基础之上,通常启动代码包含于BootLoader之中qBootLoade

    36、r常用于引导操作系统或者应用程序qBootLoader可以包含一些简单的调试手段qARM9-2440使用通用的u-boot83u-boot简介ARM软件设计与代码分析qu-boot是由德国DENX小组开发的交叉平台BootLoader,其全称为“universal Boot Loader”。qu-boot的开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。它提供数百种嵌入式开发板和各种CPU,包括PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等,同时它除了支持Linux系统的引导外,还支持NetBSD、VxWorks、QNX、RTE

    37、MS、ARTOS、LynxOS等多种嵌入式操作系统的引导。84u-boot简介ARM软件设计与代码分析qu-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

    38、 key to stop autoboot: 0JX2410 #85BootLoader的基本概念q BootLoader是系统加电后运行的第一段软件代码。q 嵌入式系统中,整个系统的加载启动任务完全由 BootLoader来完成。比如在一个基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0 x00000000开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。q 简单地说,BootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,

    39、以便为最终调用操作系统内核或用户应用程序准备好正确的环境。q 通常,BootLoader 是依赖于硬件而实现的,特别是在嵌入式领域,为嵌入式系统建立一个通用的 BootLoader 是很困难的。ARM软件设计与代码分析86BootLoader 的移植和修改q BootLoader除了依赖于 CPU 的体系结构外,BootLoader 实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。q 对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的BootLoader程序也能运行

    40、在另一块板子上,也还是需要作一些必要的修改。 ARM软件设计与代码分析87BootLoader 的安装q 系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。比如,S3C2440在复位时都从地址 0 x00000000 取它的第一条指令。q 嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被安排这个起始地址上,因此在系统加电后,CPU将首先执行BootLoader程序。q 也就是说对于基于S3C2440的这套系统,我们的BootLoader是从0地址开始存放的,而这块起始地址需要采用可引导的固态存储设备如FLASH。ARM软件设计与代码

    41、分析88用来控制 BootLoader 的设备或机制q 串口通讯是最简单也是最廉价的一种双机通讯设备,所以往往在BootLoader中主机和目标机之间都通过串口建立连接,BootLoader 程序在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。当然如果认为串口通讯速度不够,也可以采用网络或者USB通讯,那么相应的在BootLoader中就需要编写各自的驱动。ARM软件设计与代码分析89Boot Loader 的操作模式q 启动加载模式:这种模式也称为自主(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到

    42、RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式。 q 下载模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,比如:下载应用程序、数据文件、内核映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被 BootLoader写到目标机上的固态存储设备中。BootLoader 的这种模式通常在系统更新时使用。工作于这种模式下的 BootLoader 通常都会向它的终端用户提供一个简单的命令行接口。 q 在uboot中可以通过修改环境变量实现自主模式。ARM软件设计与代码分析90Boo

    43、tLoader与主机间文件传输的通信设备及协议q 最常见的情况就是,目标机上的 BootLoader 通过串口与主机之间进行文件传输,传输可以简单的采用直接数据收发,当然在串口上也可以采用xmodemymodemzmodem 协议以及q 在以太网上采用TFTP协议。ARM软件设计与代码分析91BootLoader的主要任务与典型结构框架q 从操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行。 q 大多数BootLoader都分为stage1和stage2两大部分。q 依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以

    44、达到短小精悍的目的,也就是前面说的启动代码。q 而stage2 则通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。 ARM软件设计与代码分析92BootLoader的主要任务与典型结构框架q BootLoader的stage1通常包括以下步骤 为加载 BootLoader 的 stage2 准备 RAM 空间 拷贝 BootLoader 的 stage2 到 RAM 空间中 设置好堆栈 跳转到 stage2 的 C 入口点q BootLoader的stage2通常包括以下步骤 初始化本阶段要使用到的硬件设备 调用应用程序或启动内核ARM软件设计与代码分析93S

    45、tage 1初始化流程图q stage 1的功能: RAM初始化,设置各个部件的时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用Stage 2。q 注意:在本阶段,特别是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使用堆栈保存数据将产生不可预知的结果;Boot Loader 入口设置中断向量表切换到超级模式,并禁止中断ResetHandler:复位入口设置中断模式,关闭所有中断初始化硬件关闭看门狗使能回写Buffer和Cache设置非Cache区域设置端口关闭数据线015上拉设置外部中断的触发方式设置时钟设置CPU的运行频率,系统各部件的总线矿宽度以及各部

    46、件的时钟将Boot Loader拷贝到RAM拷贝代码到RAM跳至C代码程序ARM软件设计与代码分析94Stage 2流程图q stage 2的功能:初始化串口,显示菜单,通过控制台获取用户输入,并执行相应的命令操作。ARM软件设计与代码分析95板级支持包ARM软件设计与代码分析qBSP(板级支持包)是介于底层硬件和操作系统之间的软件层次,它完成系统上电后最初的硬件和软件初始化,并对底层硬件进行封装,使得操作系统不再面对具体的操作。96板级支持包的特点ARM软件设计与代码分析q硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作

    47、和控制具体硬件的方法。q操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。97板级支持包的功能ARM软件设计与代码分析98板级支持包的功能ARM软件设计与代码分析q嵌入式系统初始化v片级初始化v板级初始化v系统级初始化q硬件相关的设备驱动程序 和BootLoader存在一定的重叠99系统级初始化ARM软件设计与代码分析q这是一个以软件初始化为主的过程,主要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,比如网络系统、文件系统等;

    48、最后,操作系统创建应用程序环境并将控制转交给应用程序的入口。100硬件相关的驱动程序ARM软件设计与代码分析q与初始化过程相反,硬件相关的设备驱动程序的初始化和使用通常是一个从高层到底层的过程。q尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。101ARM9-2440应用代码设计及中断处理ARM软件设计与代码分析q连接脚本连接脚本102ARM9-2440应用代码中断向量ARM软件设计与代码分析q 起始地址起始地址0 x3

    49、00000000 x30000000q 除复位异常外,其余异常入口地址由除复位异常外,其余异常入口地址由FLASHFLASH跳跳转得到转得到103ARM9-2440中断处理流程 执行0 x18处指令:LDR pc, = 0 x03000018,由u-boot控制 执行0 x03000018处指令:HandlerIRQ,2410init.s 执行HandlerIRQ, 2410init.s 执行HandleIRQ处保存的中断分发例程, 2410init.s中初始化为IsrIRQARM软件设计与代码分析根据INTOFFSET的值从中断向量表中取出中断服务函数地址R8中为产生了中断的中断源的中断服务

    50、函数地址跳转到中断服务函数地址处运行104中断向量表ARM软件设计与代码分析从_ISR_STARTADDRESS + 0 x20开始每四个字节表示一个中断源的中断服务函数地址105注册中断服务函数并使能中断 q 函数实现/* 请求中断 */Irq_Request(IRQ_EINT2, eint2_isr);Irq_Request(IRQ_EINT3, eint3_isr); /* 使能中断 */ Irq_Enable(IRQ_EINT2); Irq_Enable(IRQ_EINT3);ARM软件设计与代码分析注册中断服务函数,即将eint2_isr中断服务函数的地址赋值到中断向量表中。开启中断

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:嵌入式软件系统设计课件.ppt
    链接地址:https://www.163wenku.com/p-3003342.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库