嵌入式系统软件开发基础.pptx
《嵌入式系统软件开发基础.pptx》由会员分享,可在线阅读,更多相关《嵌入式系统软件开发基础.pptx(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统软件开发基础嵌入式系统软件开发基础2 2典型典型嵌入式系统组成组成处理器处理器MMUGPIOUSBLCDCANDMA以太网以太网LCD/触摸屏触摸屏/鼠标鼠标FlashSDRAMSRAM看门狗看门狗复位电路复位电路电源管理电源管理驱动层驱动层OS应用应用BSP/driver/HALLinux、u/COS、Wince文件系统文件系统/GUI/API软件软件硬件硬件输入输入输出输出第1页/共77页3 33.1 嵌入式软件组成BSPBootloader操作系统内核文件系统库,应用软件第2页/共77页4 43.2 嵌入式系统软件开发方法 采用宿主机/目标机交叉开发方式嵌入式系统本身不具备自举
2、开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的。嵌入式软件以宿主机/目标机模式开发,所需要的开发环境称为交叉开发环境,分为宿主机部分和目标机部分,两者以统一的通信协议进行通信,宿主机向目标机发送命令,目标机接收、执行命令并将结果返回宿主机,从而实现两机之间的交互控制。第3页/共77页5 53.3 3.3 嵌入式系统软件设计和调试流程嵌入式系统软件设计和调试流程编辑l l创建工程创建工程l l添加文件、编写程序添加文件、编写程序l l汇编语言加汇编语言加C C语言语言编译l l配置编译、汇编和连接配置编译、汇编和连接参数参数l l编写连接脚本文件编写连接脚本文件l l编译编
3、译第4页/共77页6 6调试l l连接调试器连接调试器l l下载程序下载程序l l运行、调试运行、调试固化l l通过仿真器烧写通过仿真器烧写flashflashl l专用或通用的编程器专用或通用的编程器l l通过通过bootloaderbootloader烧写烧写flashflash第5页/共77页7 73.4 嵌入式软件开发主要内容无操作系统的软件开发主要包括两部分无操作系统的软件开发主要包括两部分l l启动代码启动代码l l应用程序应用程序基于操作系统的软件开发包括:基于操作系统的软件开发包括:l lBootloaderBootloader开发开发l l操作系统开发移植操作系统开发移植l
4、lBSPBSP板级支持包开发移植板级支持包开发移植l l应用程发开发移植应用程发开发移植第6页/共77页8 8无操作系统软件开发无操作系统软件开发-启动代码开发启动代码开发启动代码功能和特征启动代码功能和特征功能功能l l硬件初始化硬件初始化l l引导引导C C代码代码特征特征l l通常用汇编语言编写通常用汇编语言编写l l程序复位运行入口点程序复位运行入口点l l代码量非常小代码量非常小第7页/共77页9 9无操作系统软件开发-启动代码启动代码程序流程启动代码程序流程l l设置中断、异常入口设置中断、异常入口l l关中断关中断l l硬件寄存器初始化(硬件寄存器初始化(GPIOGPIO配置、总
5、线配置、配置、总线配置、PLLPLL时钟)时钟)l l初始化栈指针初始化栈指针l l数据区初始化数据区初始化l lC C入口函数调用入口函数调用 BL MainBL Main第8页/共77页1010无操作系统软件开发无操作系统软件开发-应用软件开发应用软件开发应用软件功能和特征功能功能l l硬件驱动硬件驱动l l应用应用特征特征l l通常用通常用C C语言或者嵌入式汇编语言编写语言或者嵌入式汇编语言编写l l程序较复杂,代码量较大程序较复杂,代码量较大第9页/共77页1111基于操作系统的软件开发基于操作系统的软件开发-bootloaderbootloader开发开发Bootloader功能和
6、特征功能功能l l硬件初始化硬件初始化l l引导操作系统引导操作系统l l下载程序(串口、网口、下载程序(串口、网口、USBUSB)l l烧写烧写flashflash特征特征l l程序复位运行入口点程序复位运行入口点l l通常用汇编语言通常用汇编语言+C+C语言编写语言编写l l代码量较小(相对)代码量较小(相对)第10页/共77页1212基于操作系统的软件开发基于操作系统的软件开发-嵌入式操作系统移植嵌入式操作系统移植LinuxWindows CE uC/OS IIuClinuxNucleus第11页/共77页1313基于操作系统的软件开发基于操作系统的软件开发-BSPBSP设计设计BSPB
7、SP功能和特征功能和特征功能功能l l为应用程序提供统一的硬件操作接口为应用程序提供统一的硬件操作接口特征特征l l高度硬件相关高度硬件相关l l高度依赖于具体硬件平台高度依赖于具体硬件平台l l各种操作系统各异各种操作系统各异第12页/共77页1414基于操作系统的软件开发基于操作系统的软件开发-应用程序设计应用程序设计应用程序功能功能功能l lGUIGUI图形、人机交互图形、人机交互l l控制控制l l算法算法特征特征l l硬件依赖程度小硬件依赖程度小l l部分可仿真调试部分可仿真调试l l各种操作系统各异各种操作系统各异第13页/共77页15153.5 嵌入式软件调试技术1 1模拟器方式
8、模拟器方式 2 2在线仿真器方式在线仿真器方式3.3.监控器方式监控器方式4.4.在线调试器方式在线调试器方式第14页/共77页16161模拟器方式调试工具和待调试的嵌入式软件都在主机上运行,调试工具和待调试的嵌入式软件都在主机上运行,通过通过软件手段模拟执行软件手段模拟执行为某种嵌入式处理器编写的为某种嵌入式处理器编写的源程序。简单的模拟器可以通过指令解释方式逐条源程序。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,进行执行源程序,分配虚拟存储空间和外设,进行语法语法和和逻辑逻辑上的调试。上的调试。第15页/共77页17172在线仿真器方式在线仿真器在线仿真器ICE
9、ICE是一种完全仿造调试目标是一种完全仿造调试目标CPUCPU设计的设计的仪仪器,器,目标系统对用户来说是完全透明的、可控的。仿真目标系统对用户来说是完全透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、以器与目标板通过仿真头连接,与主机有串口、并口、以太网口或太网口或USBUSB口等连接方式。该仿真器可以真正地运行口等连接方式。该仿真器可以真正地运行所有的所有的CPUCPU动作,并且可以在其使用的内存中设置非常动作,并且可以在其使用的内存中设置非常多的硬件中断点,可以实时查看所有需要的数据,从而多的硬件中断点,可以实时查看所有需要的数据,从而给调试过程带来很多便利。由于仿真器
10、自成体系,调试给调试过程带来很多便利。由于仿真器自成体系,调试时可以连接目标板,也可以不接目标板。使用时可以连接目标板,也可以不接目标板。使用ICEICE同使同使用一般的目标硬件一样,只是在用一般的目标硬件一样,只是在ICEICE上完成调试后,需上完成调试后,需要把调试好的程序重新下载到目标系统上而已。由于要把调试好的程序重新下载到目标系统上而已。由于ICEICE价格昂贵,而且每种价格昂贵,而且每种CPUCPU都需要一种与之对应的都需要一种与之对应的ICEICE,使得开发成本非常高。,使得开发成本非常高。第16页/共77页1818。主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面
11、,被调试程序下载到目标板上运行监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运行情况,与宿主机端的调试器一起完成对应用程序的调试。监控程序包含基本功能的启动代码,并完成必要的硬件初始化,等待宿主机的命令。被调试程序通过监控程序下载到目标机,就可以开始进行调试。监控器方式操作简单易行,功能强大,不需要专门的调试硬件,适用面广,能提高调试的效率,缩短产品的开发周期,降低开发成本。正因为以上原因,监控器方式才能够广泛应用于嵌入式系统的开发之中。监控器调试主要用于调试运行在目标机操作系统上的应用程序,不适宜用来调试目标操作系统。有的微处理器需要在目标板工作正常的前提下,事先
12、烧制监控程序,而且功能有限,特别是硬件调试能力较差。3.监控器方式第17页/共77页19194.在线调试器方式 使用使用ICDICD和目标板的调试端口连接,发送调试命令和和目标板的调试端口连接,发送调试命令和接收调试信息,可以完成必要的调试功能。一般情况下,在接收调试信息,可以完成必要的调试功能。一般情况下,在ARMARM芯片的开发板上采用芯片的开发板上采用JTAGJTAG边界扫描口进行调试。摩托边界扫描口进行调试。摩托罗拉公司采用专用的罗拉公司采用专用的BDMBDM调试接口。使用合适的开发工具可调试接口。使用合适的开发工具可以利用这些接口。例如,以利用这些接口。例如,ARMARM开发板,可以
13、将开发板,可以将JTAGJTAG调试器调试器接在开发板的接在开发板的JTAGJTAG口上,通过口上,通过JTAGJTAG口与口与ARMARM处理器核进行处理器核进行通信。由于通信。由于JTAGJTAG调试的目标程序是在目标板上执行,仿真更调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此许多接口问题,如高频操作限制、电接近于目标硬件,因此许多接口问题,如高频操作限制、电线长度的限制等被最小化了。线长度的限制等被最小化了。该方式是目前采用最多的一种该方式是目前采用最多的一种调试方式。调试方式。第18页/共77页20203.6 嵌入式系统软件开发工具Windows操作系统l lARM AD
14、S/SDT+ARM ADS/SDT+调试器调试器l lGNU+Cygwin+GNU+Cygwin+调试器调试器l lARM SDT+ARM SDT+简易电缆简易电缆Linux操作系统l lGNU+GDBGNU+GDB第19页/共77页2121开发环境的作用第20页/共77页2222ADS IDE(集成开发环境)ARM应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真器等。目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度
15、,节省开发成本。第21页/共77页2323ADS工具包的组成 ADSADS是是ARMARM公司推出的集成开发工具包,是专门用于公司推出的集成开发工具包,是专门用于ARMARM相关应用开发和调试的综合性软件。目前常用的相关应用开发和调试的综合性软件。目前常用的版本是版本是1.21.2,在功能和易用性上比早期的,在功能和易用性上比早期的SDTSDT都有提都有提高,是一款功能强大又易于使用的开发工具。高,是一款功能强大又易于使用的开发工具。ARM ADSARM ADS包含有编译器、链接器、包含有编译器、链接器、CodeWarrior IDECodeWarrior IDE、调试器、指令集模拟器、调试器
16、、指令集模拟器、ARMARM开发包和应用库等部开发包和应用库等部分,可以用分,可以用ADSADS来开发、编译、调试采用包括来开发、编译、调试采用包括C C、C+C+和和ARMARM汇编语言编写的程序。汇编语言编写的程序。第22页/共77页2424ADS开发工具集 n1.1.命令行开发工具命令行开发工具ANSI C 编译器-armcc and tccISO/Embedded C+编译器 -armcpp and tcppARM/Thumb 汇编器 armsLinker-armlink 第23页/共77页25252.2.2.2.图形开发工具:图形开发工具:图形开发工具:图形开发工具:Windows
17、Windows 集成开发环境集成开发环境 CodeWarrior CodeWarriorDebugger Debugger AXD(ARM eXtended Debugger)AXD(ARM eXtended Debugger)armsd ARM(armsd ARM(符号调试器符号调试器)可向前兼容可向前兼容3.3.3.3.库文件:库文件:库文件:库文件:C and C+C and C+库库4.4.4.4.辅助工具辅助工具辅助工具辅助工具/支持软件:支持软件:支持软件:支持软件:格式转换器格式转换器 -fromelf-fromelf 指令级仿真指令级仿真 ARMulator ARMulator
18、库管理器库管理器 armar armar第24页/共77页2626fromELFfromELFfromELFfromELF:ARMARM映像文件转换工具映像文件转换工具该命令将该命令将ELFELF格式的文件作为输入文件,将该格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括格式转换为各种输出格式的文件,包括plain plain binary(BINbinary(BIN格式映像文件格式映像文件),Motorola 32-),Motorola 32-bit S-record format(Motorola 32bit S-record format(Motorola 32位位S S格
19、式格式映像文件映像文件),Intel Hex 32 format(Intel 32),Intel Hex 32 format(Intel 32位格式映像文件位格式映像文件),和,和 Verilog-like hex Verilog-like hex format(Verilog 16format(Verilog 16进制文件进制文件)第25页/共77页2727ArmarArmarArmarArmar:ARMARM库函数生成器将一系列库函数生成器将一系列ELFELF格式的目标文件以库函数的形式集合在一起,用格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个户可以把
20、一个库传递给一个链接器以代替几个ELFELF文件。文件。Flash downloaderFlash downloaderFlash downloaderFlash downloader:用于把二进制映像文件下载到用于把二进制映像文件下载到ARMARM开发板上的开发板上的FlashFlash存储器的工具存储器的工具ARMulatorARMulatorARMulatorARMulator:ARMARM指令集仿真器,集成在指令集仿真器,集成在ARMARM的调试器的调试器AXDAXD中,它提供对中,它提供对ARMARM处理器的指令集处理器的指令集的仿真,为的仿真,为ARMARM和和ThumbThumb
21、提供精确的模拟,用户可以在硬件尚未做好的情况下,提供精确的模拟,用户可以在硬件尚未做好的情况下,开发程序代码。开发程序代码。第26页/共77页2828名称描述使用方式代码生成工具ARM汇编器ARM C/C+编译器Thumb C/C+编译器ARM 链接器由Code Warrior调用 集成开发环境Code Warrior工程管理,编译链接调试器AXD/ADW/ADU/armsd仿真调试指令模拟器ARMulator由AXD调用ARM开发包一些底层的例程,实用程序(如fromELF)由Code Warrior调用ARM应用库C/C+等函数库用户程序调用工具调用及流程工具调用及流程第27页/共77页2
22、929集成开发环境CodeWarrior使用 CodeWarrior集成开发环境为管理和开发项目提供了简单、多样化的图形用户界面。用户可以使用ADS的CodeWarrior IDE为ARM处理器开发用C,C+,或ARM汇编语言的程序代码。全面的项目管理功能。可以在CodeWarrior IDE为ARM配置以上所介绍的各种命令工具,实现对工程代码的编译,汇编和链接。第28页/共77页3030C/C+Browser C/C+SensitiveEditorProjectManager第29页/共77页3131建立工程建立工程第30页/共77页3232第31页/共77页3333uuARM Execut
23、able Image:用于由ARM指令的代码生成一个 ELF格式的可执行映像文件。uuARM Object Library:用于由ARM指令的代码生成一个 armar 格式的目标文件库。uuEmpty Project:用于创建一个不包含任何库或源文件的工程。第32页/共77页3434uuMakefile Importer Wizard:用于将 Visual C 的 nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件。uuThumb ARM Interworking Image:用于由 ARM指令和 Thumb 指令的混和代码生成一个可执行的ELF格式的映像文件
24、。uuThumb Executable image:用于由 Thumb指令创建一个可执行的ELF格式的映像文件。uuThumb Object Library:用于由Thumb指令的代码生成一个 armar 格式的目标文件库。第33页/共77页3535新建文件新建文件第34页/共77页3636添加文件到工程添加文件到工程第35页/共77页3737生成目标设置生成目标设置第36页/共77页3838每个工程项目都有下面每个工程项目都有下面3 3种种生成目标:生成目标:uuDebugDebug:包含所有调试信息包含所有调试信息uuDebugRelDebugRel:包含部分调试信息包含部分调试信息uuR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统软件 开发 基础
限制150内