嵌入式开发环境的建立.ppt
《嵌入式开发环境的建立.ppt》由会员分享,可在线阅读,更多相关《嵌入式开发环境的建立.ppt(90页珍藏版)》请在三一办公上搜索。
1、第5讲 嵌入式开发环境建立与开发,嵌入式系统设计方法,嵌入式系统的开发步骤,嵌入式系统设计步骤,系统需求分析:确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。,硬件需求分析处理性能技术指标和成本功耗操作系统和软件支持工具的选择,软件需求分析实时性系统的功能开发的难度成本,嵌入式系统设计步骤,体系结构设计:描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。一
2、个好的体系结构是设计成功与否的关键。硬件/软件协同设计:基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。应该说,嵌入式系统设计的工作大部分都集中在软件设计上,采用面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。系统集成:把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。系统测试:对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。,嵌入式系统的开发流程,需求分析及规格说明,选择主要芯片,确定编程语言,选择开发环境,RTOS的使用,选择开发方案,测试工具与其他辅助设备,嵌入式系统的开发设计与调试
3、,设计,生产,IDE,软件开发与测试,评估板,仿真器,逻辑分析仪,边界扫描测试仪,示波器,开发环境,什么是嵌入式开发环境:,源程序,目标文件,可重定位程序,可执行文件,编译器/汇编器/链接定位器调试器/仿真器主机(Host)及其工作平台实时操作系统(可选)目标评估系统(可选)测试工具(软件/硬件/协议等,可选)其他辅助设备(可选),典型的开发环境,嵌入式系统的调试(1),嵌入式系统的调试有四种基本方法模拟调试(Simulator)软件调试(Debugger)BDM/JTAG调试(BDM/JTAG Debugger)全仿真调试(Emulator),嵌入式系统的调试(2),模拟调试(Simulat
4、or)调试工具和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。优点:简单方便,不需要目标板,成本低缺点:功能非常有限,无法实时调试大多数调试工具都提供Simulator功能,嵌入式系统的调试(3),软件调试(Debugger)主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,待调试软件下载到目标板上运行。这种方式的先决条件是要在Host和Target之间建立起通信联系(目标板上称为监控程序Monitor)优点:纯软件,价格较低,简单,软件调试能力较强缺点:需要事先烧制Monitor(往往需多次试验才能成功)且目标板工作正常,功能有
5、限,特别是硬件调试能力较差。,PC,Target,Monitor,串口,嵌入式系统的调试(4),BDM/JTAG调试 这种方式有一个硬件调试体。该硬件调试体与目标板通过BDM、JTAG等调试接口相连,与主机通过串口、并口、网口或USB口相连。待调试软件通过BDM/JTAG调试器下载到目标板上运行。优点:方便、简单,无须制作Monitor,软硬件均可调试缺点:需要目标板,且目标板工作基本正常(至少MCU工作正常),仅适用于有调试接口的芯片,Target,PC,接口,BDM/JTAG Debugger,嵌入式系统的调试(5),全仿真调试(Emulator)这种方式用仿真器完全取代目标板上的MCU,
6、因而目标系统对开发者来说完全是透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、网口或USB口等连接方式。由于仿真器自成体系,调试时既可以连接目标板,也可以不连接目标板(Stand alone)。优点:功能非常强大,软硬件均可做到完全实时在线调试缺点:价格昂贵。,ARM的调试软件,模拟调试SDT2.52:ARMulatorADS1.2:ARMulatorTrace32:SimulatorEW-ARM:C-spy软件调试ADS1.2:Angel(串口)SDT2.52 Angel(串口)JTAG调试ARM:Multi-ICE,简易型仿真器Trace32-ICD for ARMHit
7、ex:Tanto for ARM全仿真调试Trace32-FIRE/ICE,ADS1.2ARM公司出品,IDE环境,包括ARM/Thumb汇编器:armasmANSI C 编译器-armcc 和 tccISO/Embedded C+编译器-armcpp and tcpp链接器 armlinkWindows 集成开发环境 CodeWarrior格式转换器 fromelf库管理器-armar调试器模拟调试器:ARMulatorJTAG调试:AXD(与Multi-ICE配合)支持所有ARM内核,最新版本:RealView2.0,ARM的调试软件,EW-ARM瑞典IRA公司出品著名的嵌入式工具提供商,
8、以提供编译器/协议栈/统一建模工具著称主要产品:Embeded Workbench(EW)、Make APP、Visual State等EW-ARM:针对ARM的集成开发环境:C/C+编译器C-SPY 模拟调试器ROM-Monitor多种级别代码优化方法,满足用户在速度、文件大小方面的要求内建ARM特性优化器支持多种断点模式支持Nucleus,VxWorks等RTOSGreenhillsGNU,ARM的调试软件,ARM调试工具,Multi-ICEARM公司出品与ADS配套使用支持不同的ARM内核另有Multi-trace模块可选,ARM嵌入式开发模式,目标机/宿主机开发模式宿主机需要运行一些软
9、件进行程序编辑、编译和调试等功能,这些软件通常称为集成开发环境(IDE)。,宿主机(Host):是用于开发嵌入式系统的计算机。一般为PC机(或者工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。目标机(Target):即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的。,驻留监控模式,驻留监控程序是一个特殊应用的程序,开发者先将驻留监控程序调试好并在目标机上运行,驻留监控程序通过特定的通信方式(如以太网、USB等)和运行于宿主机的集成开发环境进行通信实现程序下载、调试等功能。这种模式下载速度快,和集成开发环境连接紧密,但该程序运行需要占用一些目标板资源。
10、调试驻留监控程序通常采用在线仿真模式进行。驻留监控程序有:VxWorks操作系统的bootrom、Linux操作系统的u-boot、Windows CE的Eboot等。,嵌入式软件开发流程,嵌入式开发流程,系统移植,这个阶段根据不同的软件设计方案可能不同。无操作系统的软件开发启动代码应用程序基于操作系统的软件开发bootloader操作系统移植BSP板级支持包应用程序开发,启动代码,功能硬件初始化引导C代码特征通常用汇编语言编写程序复位运行入口点代码量非常小,程序流程设置中断、异常入口关中断硬件寄存器初始化(GPIO配置、总线配置、PLL时钟)初始化栈指针数据区初始化C入口函数调用 BL Ma
11、in,应用程序(无操作系统),功能硬件驱动应用特征通常用C语言或者嵌入式汇编语言编写程序较复杂,代码量较大,bootloader,功能硬件初始化引导操作系统下载程序(串口、网口、USB)烧写flash特征程序复位运行入口点通常用汇编语言+C语言编写代码量较小,BSP板级支持包,功能为应用程序提供统一的硬件操作接口特征高度硬件相关高度依赖于具体硬件平台各种操作系统各异,操作系统的选择,商用型Vxworks,Nucleux,PlamOS,Symbian,WinCE,QNX,pSOS,VRTX,Lynx OS,Hopen,Delta OS免费型Linux,CLinux,C/OS-,eCos,uITR
12、ON对实时要求高的,可以采用Vxworks、WinCE,RTLinux无实时要求的,可以采用Embedded Linux对于复杂的嵌入式系统应考虑使用RTOS本实验教学平台支持以下操作系统:uC/OS、Linux、Vxworks、Wince,操作系统的移植,必须根据硬件平台和应用场合将某种操作系统进行定制和代码修改使其能够运行在该硬件平台上,这个过程就是操作系统的移植。操作系统提供商将针对某一个处理器的公板移植代码进行发布,用户进行移植时只需要选择和你使用相同处理器的公板移植代码,并根据你的硬件进行适当修改,这种移植称为板级移植。如果你所使用的处理器在操作系统的发布中还没有一个公板代码,则针对
13、处理器部分的代码都需要由用户重写,这种移植成为片级移植。由于硬件资源的限制,嵌入式操作系统通常需要进行裁减以减少代码大小和提高运行效率。需要的功能加上,不需要的功能去掉。,嵌入式系统编程语言的选择,Data from Japan ITRON survey for new embedded systems,应用程序设计调试,1、图形用户界面:VxWorks下的WindMLLinux下的QT Embedded、MicroWindows等Windows CE的用户界面则保持传统的Windows风格界面2、实时性:在应用程序设计中同样也要考虑。3、功耗:在应用程序设计时须充分考虑系统功耗,在不影响系统
14、功能的同时将功耗降到最低。4、程序大小,应用程序开发(操作系统),功能GUI图形、人机交互控制算法特征硬件依赖程度小部分可仿真调试各种操作系统各异,嵌入式软件设计和调试流程,编辑创建工程添加文件、编写程序汇编语言加C语言编译配置编译、汇编和连接参数编写连接脚本文件编译,调试连接调试器下载程序运行、调试固化通过仿真器烧写flash专用或通用的编程器通过bootloader烧写flash,交叉编译,GNU交叉编译编译.c arm-elf-gcc汇编.S arm-elf-gas连接.o arm-elf-ld操作文件汇编文件.SC文件.c链接脚本文件ldscript库文件.o.lib.a,生成调试格式
15、文件.elfDWARF-1DWARF-2生成bin文件elf2binarm-elf-objcopy,ARM嵌入式系统控制界面,要操作PC通常必须使用键盘和显示器或者鼠标。ARM也是一台计算机,在开发过程甚至是产品设计中也需要有一定的交互方式。由于硬件的局限,通常不会使用标准的键盘、显示器作为输入输出设备,而是使用串口连接的方式和宿主机进行通信。宿主机运行一个名为超级终端的软件,它能够接收从ARM通过串口发送过来的字符信息,并显示出来(相当于ARM的输出设备,如显示器),该软件也能获取用户输入并通过串口发送到ARM,由ARM接收并处理(相当于ARM的输入设备,如键盘)。,超级终端软件,1、Win
16、dows超级终端,2、DNW,嵌入式开发流程,ARM代码结构,ARM程序编译后得到的二进制代码通常包含:代码段(text段或code段):编译后的代码,只读读写数据段(data段):可读写的全局变量,读写只读数据段(rodata段):只读数据,如const类型的全局变量BSS段:需要清0的数据这些段在链接(link)过程中产生,并且在链接过程中都应该设置各段的起始地址。程序必须从代码段指定的起始位置处运行。根据代码段运行所在地址的硬件介质不同可以将程序分为在RAM运行的程序和在ROM运行的程序。,链接脚本,段Text段rodata段data段bss段符号Image_RO_Limit Image
17、_RW_BaseImage_ZI_BaseImage_ZI_Limit,GCC库专用调试信息,链接脚本示例,程序在SDRAM中运行,程序在FLASH中运行,在RAM运行程序结构图,在ROM运行程序结构图,启动代码,由于ARM软件编程一般采用高级语言,如C语言,因此在系统启动后必须有一段程序能够将CPU带入到能够运行C语言的状态,这段程序就是启动代码。启动代码通常用汇编语言完成,并在系统复位入口点(ARM系统中为0地址)运行。在嵌入式系统中系统复位入口点所在的硬件通常是Flash等芯片,存储在这些芯片中的数据即使掉电也能够保存,而且这个地方的硬件的访问宽度是由硬件设计决定,软件不能更改,这样就能
18、保证上电后该地址的数据有效。,启动代码主要功能(1),1、建立异常向量表2、初始化硬件:初始化RAM、关闭中断、关闭看门狗等3、初始化堆栈4、初始化读写数据段、BSS段:在ROM中运行的程序必须将数据段从ROM中拷贝到RAM中,并将BSS段清零;在RAM中运行的程序则需要将BSS段清零,然后将整个代码段、只读数据段、读写数据段和BSS段从ROM拷贝到RAM。,启动代码主要功能(2),5、重定向位置无关的代码是指该代码不用在编译指定的地址 运行也能保证程序的执行流程和执行逻辑不会改变。位置相关代码运行的地址必须和编译时的地址一致,否则将导致程序运行流程改变。在初始化程序区、数据区之后需要一条跳转
19、指令将PC跳转到编译时指定的运行地址接着运行。LDR指令及之前的指令都在ROM中运行,而startram标号之后的代码则跳转到编译时指定的地址(RAM或者ROM中)中运行了,因为startram标号表示的地址是由编译时就确定的。这个过程就是重定向。LDRPC,=startramstartram:重定向之前运行的代码必须是位置无关的代码。,启动代码主要功能(3),6、跳转到C代码LDRPC,=Main,启动代码分析,在基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0 x00000000开始执行,因此在这个地址处安排的通常就是系统的启动代码。它通常也是BootLoader程
20、序的一部分,可以在启动代码基础上编写BootLoader。用汇编语言编写。启动代码是在复位后运行其它程序之前运行的一段小程序。通过它,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用C函数准备好正确的环境。,启动代码的移植和修改,启动代码除了依赖于 CPU 的体系结构外,实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的启动代码也能运行在另一块板子上,也还是需要作一些必要的
21、修改。,启动代码流程图,启动代码的功能:RAM初始化,设置各个部件的时钟和片选,将BootLoader拷贝到RAM中,设置堆栈,调用C函数。注意:在本阶段,特别是在堆栈设置之前,进行函数调用(也有些汇编子程序不需要使用堆栈)或者使用堆栈保存数据将产生不可预知的结果;,设置异常跳转表,复位异常直接跳转到ResetHandler处,它是相对跳转,位置无关。,关闭看门狗,设置S3C2410 WTCON寄存器必须设置,设置中断模式并禁止中断,设置S3C2410中断寄存器设置所有一级中断源与二级中断源为不可用状态,配置存储器控制寄存器宽度,堆栈初始化,C代码初始化,拷贝RW数据段,ZI段清零,跳转到Ma
22、in函数处执行,BootLoader的基本概念,BootLoader是系统加电后运行的第一段软件代码。嵌入式系统中,整个系统的加载启动任务完全由 BootLoader来完成。比如在一个基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0 x00000000开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。简单地说,BootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。,B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 开发 环境 建立

链接地址:https://www.31ppt.com/p-6158775.html