嵌入式系统软件开发基础课件.pptx

上传人:醉**** 文档编号:13340763 上传时间:2022-04-29 格式:PPTX 页数:77 大小:1.90MB
返回 下载 相关 举报
嵌入式系统软件开发基础课件.pptx_第1页
第1页 / 共77页
嵌入式系统软件开发基础课件.pptx_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《嵌入式系统软件开发基础课件.pptx》由会员分享,可在线阅读,更多相关《嵌入式系统软件开发基础课件.pptx(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章 嵌入式系统软件开发基础3.1 嵌入式系统软件组成3.2 嵌入式系统软件开发方法3.3 嵌入式系统软件开发主要内容3.4 嵌入式系统软件调试方法.3.5 嵌入式软件集成开发环境3.6 嵌入式软件开发语言第3章 嵌入式系统的设计方法2典型嵌入式系统组成处理器处理器MMUGPIOUSBLCDCANDMA以太网以太网LCD/触摸屏触摸屏/鼠标鼠标FlashSDRAMSRAM看门狗看门狗复位电路复位电路电源管理电源管理驱动层驱动层OS应用应用BSP/driver/HALLinux、u/COS、Wince文件系统文件系统/GUI/API软件软件硬件硬件输入输入输出输出第3章 嵌入式系统的设计方法3

2、3.1 嵌入式软件组成nBSPnBootloadern操作系统内核n文件系统n库,应用软件第3章 嵌入式系统的设计方法43.2 嵌入式系统软件开发方法 采用宿主机/目标机交叉开发方式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的。嵌入式软件以宿主机/目标机模式开发,所需要的开发环境称为交叉开发环境,分为宿主机部分和目标机部分,两者以统一的通信协议进行通信,宿主机向目标机发送命令,目标机接收、执行命令并将结果返回宿主机,从而实现两机之间的交互控制。第3章 嵌入式系统的设计方法53.3 嵌入式系统软件设计和调试流程n编辑q创建工程q添加文件、编写程序q

3、汇编语言加C语言n编译q配置编译、汇编和连接参数q编写连接脚本文件q编译第3章 嵌入式系统的设计方法6n调试q连接调试器q下载程序q运行、调试n固化q通过仿真器烧写flashq专用或通用的编程器q通过bootloader烧写flash第3章 嵌入式系统的设计方法73.4 嵌入式软件开发主要内容n无操作系统的软件开发主要包括两部分q启动代码q应用程序n基于操作系统的软件开发包括:qBootloader开发q操作系统开发移植qBSP板级支持包开发移植q应用程发开发移植第3章 嵌入式系统的设计方法8无操作系统软件开发-启动代码开发启动代码功能和特征n功能q硬件初始化q引导C代码n特征q通常用汇编语言

4、编写q程序复位运行入口点q代码量非常小第3章 嵌入式系统的设计方法9无操作系统软件开发-启动代码n启动代码程序流程q设置中断、异常入口q关中断q硬件寄存器初始化(GPIO配置、总线配置、PLL时钟)q初始化栈指针q数据区初始化qC入口函数调用 BL Main第3章 嵌入式系统的设计方法10无操作系统软件开发-应用软件开发应用软件功能和特征n功能q硬件驱动q应用n特征q通常用C语言或者嵌入式汇编语言编写q程序较复杂,代码量较大第3章 嵌入式系统的设计方法11基于操作系统的软件开发-bootloader开发Bootloader功能和特征n功能q硬件初始化q引导操作系统q下载程序(串口、网口、USB

5、)q烧写flashn特征q程序复位运行入口点q通常用汇编语言+C语言编写q代码量较小(相对)第3章 嵌入式系统的设计方法12基于操作系统的软件开发-嵌入式操作系统移植nLinuxnWindows CE nuC/OS IInuClinuxnNucleus第3章 嵌入式系统的设计方法13基于操作系统的软件开发-BSP设计nBSP功能和特征n功能q为应用程序提供统一的硬件操作接口n特征q高度硬件相关q高度依赖于具体硬件平台q各种操作系统各异第3章 嵌入式系统的设计方法14基于操作系统的软件开发-应用程序设计应用程序功能n功能qGUI图形、人机交互q控制q算法n特征q硬件依赖程度小q部分可仿真调试q各

6、种操作系统各异第3章 嵌入式系统的设计方法153.5 嵌入式软件调试技术n1模拟器方式 n2在线仿真器方式n3.监控器方式n4.在线调试器方式第3章 嵌入式系统的设计方法161模拟器方式n调试工具和待调试的嵌入式软件都在主机上运行,通过软件手段模拟执行为某种嵌入式处理器编写的源程序。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,进行语法和逻辑上的调试。第3章 嵌入式系统的设计方法172在线仿真器方式n在线仿真器ICE是一种完全仿造调试目标CPU设计的仪器,目标系统对用户来说是完全透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、以太网口或USB口等连接

7、方式。该仿真器可以真正地运行所有的CPU动作,并且可以在其使用的内存中设置非常多的硬件中断点,可以实时查看所有需要的数据,从而给调试过程带来很多便利。由于仿真器自成体系,调试时可以连接目标板,也可以不接目标板。使用ICE同使用一般的目标硬件一样,只是在ICE上完成调试后,需要把调试好的程序重新下载到目标系统上而已。由于ICE价格昂贵,而且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。 第3章 嵌入式系统的设计方法18主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,被调试程序下载到目标板上运行监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运

8、行情况,与宿主机端的调试器一起完成对应用程序的调试。监控程序包含基本功能的启动代码,并完成必要的硬件初始化,等待宿主机的命令。被调试程序通过监控程序下载到目标机,就可以开始进行调试。监控器方式操作简单易行,功能强大,不需要专门的调试硬件,适用面广,能提高调试的效率,缩短产品的开发周期,降低开发成本。正因为以上原因,监控器方式才能够广泛应用于嵌入式系统的开发之中。监控器调试主要用于调试运行在目标机操作系统上的应用程序,不适宜用来调试目标操作系统。有的微处理器需要在目标板工作正常的前提下,事先烧制监控程序,而且功能有限,特别是硬件调试能力较差。3.监控器方式第3章 嵌入式系统的设计方法194.在线

9、调试器方式 使用ICD和目标板的调试端口连接,发送调试命令和接收调试信息,可以完成必要的调试功能。一般情况下,在ARM芯片的开发板上采用JTAG边界扫描口进行调试。摩托罗拉公司采用专用的BDM调试接口。使用合适的开发工具可以利用这些接口。例如,ARM开发板,可以将JTAG调试器接在开发板的JTAG口上,通过JTAG口与ARM处理器核进行通信。由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此许多接口问题,如高频操作限制、电线长度的限制等被最小化了。该方式是目前采用最多的一种调试方式。 第3章 嵌入式系统的设计方法203.6 嵌入式系统软件开发工具nWindows操作系统qA

10、RM ADS/SDT + 调试器qGNU + Cygwin + 调试器qARM SDT + 简易电缆nLinux操作系统qGNU + GDB第3章 嵌入式系统的设计方法21开发环境的作用第3章 嵌入式系统的设计方法22ADS IDE(集成开发环境)n ARM应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真器等。n目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度,节省开发成本。第3章 嵌入式系统的设计方法23ADS工具

11、包的组成 nADS是ARM公司推出的集成开发工具包,是专门用于ARM相关应用开发和调试的综合性软件。目前常用的版本是1.2,在功能和易用性上比早期的SDT都有提高,是一款功能强大又易于使用的开发工具。nARM ADS包含有编译器、链接器、CodeWarrior IDE、调试器、指令集模拟器、ARM开发包和应用库等部分,可以用ADS来开发、编译、调试采用包括C、C+和ARM汇编语言编写的程序。 第3章 嵌入式系统的设计方法24ADS开发工具集 n1.1.命令行开发工具命令行开发工具ANSI C 编译器 - armcc and tccISO / Embedded C+ 编译器 - armcpp a

12、nd tcppARM / Thumb 汇编器 armsLinker - armlink 第3章 嵌入式系统的设计方法25n2.2.图形开发工具:图形开发工具:Windows 集成开发环境 CodeWarriorDebugger AXD (ARM eXtended Debugger)narmsd ARM(符号调试器)可向前兼容n3.3.库文件:库文件:C and C+ 库n4.4.辅助工具辅助工具/ /支持软件:支持软件:格式转换器 - fromelf 指令级仿真 ARMulator库管理器 armar第3章 嵌入式系统的设计方法26nfromELFfromELF:ARM映像文件转换工具该命令将

13、ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式映像文件), Motorola 32-bit S-record format(Motorola 32位S格式映像文件), Intel Hex 32 format(Intel 32位格式映像文件),和 Verilog-like hex format(Verilog 16进制文件) 第3章 嵌入式系统的设计方法27nArmarArmar:ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。nFlash downloader

14、Flash downloader:用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具nARMulatorARMulator: ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟,用户可以在硬件尚未做好的情况下,开发程序代码。第3章 嵌入式系统的设计方法28名称描述使用方式代码生成工具ARM汇编器ARM C/C+编译器Thumb C/C+编译器ARM 链接器由Code Warrior调用 集成开发环境Code Warrior工程管理,编译链接调试器AXD/ADW/ADU/armsd仿真调试指令模拟器ARMulat

15、or由AXD调用ARM开发包一些底层的例程,实用程序(如fromELF)由Code Warrior调用ARM应用库C/C+等函数库用户程序调用工具调用及流程工具调用及流程第3章 嵌入式系统的设计方法29集成开发环境CodeWarrior使用n CodeWarrior集成开发环境为管理和开发项目提供了简单、多样化的图形用户界面。n用户可以使用ADS的CodeWarrior IDE为ARM处理器开发用C,C+,或ARM汇编语言的程序代码 。n全面的项目管理功能。n 可以在CodeWarrior IDE为ARM配置以上所介绍的各种命令工具,实现对工程代码的编译,汇编和链接。第3章 嵌入式系统的设计方

16、法30C/C+Browser C/C+SensitiveEditorProjectManager第3章 嵌入式系统的设计方法31建立工程建立工程第3章 嵌入式系统的设计方法32第3章 嵌入式系统的设计方法33uARM Executable Image:用于由ARM指令的代码生成一个 ELF格式的可执行映像文件。uARM Object Library:用于由ARM指令的代码生成一个 armar 格式的目标文件库。uEmpty Project:用于创建一个不包含任何库或源文件的工程。第3章 嵌入式系统的设计方法34uMakefile Importer Wizard: 用于将 Visual C 的

17、nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件。 uThumb ARM Interworking Image:用于由 ARM指令和 Thumb 指令的混和代码生成一个可执行的ELF格式的映像文件。 uThumb Executable image:用于由 Thumb指令创建一个可执行的ELF格式的映像文件。 uThumb Object Library:用于由Thumb指令的代码生成一个 armar 格式的目标文件库。第3章 嵌入式系统的设计方法35新建文件新建文件第3章 嵌入式系统的设计方法36添加文件到工程添加文件到工程第3章 嵌入式系统的设计方法37生成

18、目标设置生成目标设置第3章 嵌入式系统的设计方法38n每个工程项目都有下面3种生成目标:uDebug:包含所有调试信息uDebugRel:包含部分调试信息uRelease:不包含调试信息n注:若项目编译只是为了调试使用,则选择Debug或者DebugRel;若要生成最后可以运行的文件,则最好选择Release。第3章 嵌入式系统的设计方法39编译链接编译链接n进入编译链接设置:第3章 嵌入式系统的设计方法40n设置窗口:第3章 嵌入式系统的设计方法41n目标设置:第3章 嵌入式系统的设计方法42n在Targets Settings选项组中,Post-Linker用于选择链接器输出文件的处理方式

19、。用户可以选择的值如下:None:不进行连接的处理。ARM fromELF:使用ARM工具fromELF处理链接器输出的ELF格式文件,它可以将ELF格式的文件转换为各种二进制文件格式。Batch File Runner:在连接完成后运行一个DOS格式的批处理文件。第3章 嵌入式系统的设计方法43n若用户在编译完成后只是用AXD来调试程序,建议选择None;若要生成最后的编程文件,建议选择ARM fromELF,该选项与Linker面板中的ARM fromELF选项结合来产生最终的编程文件。第3章 嵌入式系统的设计方法44nCPU设置:第3章 嵌入式系统的设计方法45nLinker设置:第3章

20、 嵌入式系统的设计方法46n在 Output format 下拉框中,为用户提供了多种可以转换的目标格式,这里选择 Plain binary,这是一个二进制格式的可执行文件,可以被烧写在目标板的 Flash中。n在 Output file name 文本域输入期望生成的输出文件存放的路径,或通过点击 Choose.按钮从文件对话框中选择输出文件路径。如果在这个文本域不输入路径名,则生成的二进制文件存放在工程所在的目录下。第3章 嵌入式系统的设计方法47第3章 嵌入式系统的设计方法48n在标签页 Output 中,Linktype 中提供了 3 种链接方式:Partia :表示链接器只进行部分链

21、接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple :默认的链接方式,也是使用最为频繁的链接方式,它链接生成简单的 ELF 格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered :使得链接器要根据 scatter 格式文件中指定的地址映射,生成复杂的 ELF 格式的映像文件。一般情况下这个选项使用不太多。 第3章 嵌入式系统的设计方法49n 在选中 Simple 方式后,就会出现 Simple image。 R0 Base:这个文本框设置包含有 R0 段的加载域和运行域为同一个地址,默认是 0 x8000。这里用户要根据硬件的实际 SDRAM

22、 的地址空间来修改这个地址,保证在这里填写的地址是程序运行时 SDRAM 地址空间所能覆盖的地址。RW Base:这个文本框设置包含 RW 和 ZI 输出段的运行域地址。如果选中 split 选项,链接器生成的映像文件将包含 2 个加载域和 2 个运行域,此时,在 RW Base 中所输入的地址为包含 RW 和 ZI 输出段的域设置了加载域和运行域地址。 第3章 嵌入式系统的设计方法50第3章 嵌入式系统的设计方法51n 在 Options 选项中,需要注意的是 Image entry point 文本框。它指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址处执

23、行。如果需要,用户可以在这个文本框中输入下面格式的入口点。 n入口点地址:这是一个数值,例如-entry 0 x0。 n 符号:该选项指定映像文件的入口点为该符号所代表的地址处。比如:-entry int_handler。 n在此处指定的入口点用于设置 ELF 映像文件的入口地址。 需要注意的是,这 里不可以用符号 main 作为入口点地址符号,否则将会出现“Image dose not have an entry point(Not specified or not set due to multiple choice)”的出错信息。 第3章 嵌入式系统的设计方法52n Layout选项在连

24、接方式为Simple时有效,用来安排一些输入段在映像文件中的位置。在上图中,Place at Beginning of Image选项用于指定某个输入段放置在它所在的运行时域的开头。 第3章 嵌入式系统的设计方法53n编译链接:第3章 嵌入式系统的设计方法54第3章 嵌入式系统的设计方法55文件输出第3章 嵌入式系统的设计方法56AXD调试工具的使用n在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发的软件是否达到了预期的效果,这可以由软件仿真来完成。n当然,也可以搭建一个PCB板,这个板上可以包含一个或多个处理器,在这个板上可以运行和调试应用软件。n只有当通过硬件或者是软件仿真

25、所得到的结果达到了预期的效果,才算是完成了应用程序的编写工作。第3章 嵌入式系统的设计方法57n调试器能够发送以下指令:调试器能够发送以下指令:q装载映像文件到目标内存;q启动或停止程序的执行;q显示内存,寄存器或变量的值;q允许用户改变存储的变量值。第3章 嵌入式系统的设计方法58进入AXD调试工具第3章 嵌入式系统的设计方法59 在菜单File中选择“Load image”选项,打开 Load Image对话框,找到要装载的.axf映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。 第3章 嵌入式系统的设计方法60Docking windowsDocking toolbarsRe

26、gistersSource/Disassembly Memory 第3章 嵌入式系统的设计方法61n选择调试目标:选择调试目标:n 点击ADX窗口菜单【Options】选择【Configure Target】,即弹出Choose Target 窗口,在没有添加其它仿真驱动程序前,Target 项中只有两项,分别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。第3章 嵌入式系统的设计方法62n调试工具条,从左到右依次为:调试工具条,从左到右依次为:全速运行(Go)停止运行(Stop)单步运行(Step In),与Step 命令不同之处在于对函数调用语句,Step In 命令将进入该函数。

27、单步运行(Step),每次执行一条语句,这时函数调用将被作为一条语句执行。单步运行(Step Out),执行完当前被调用的函数,停止在函数调用的下一条语句。运行到光标(Run To Cursor),运行程序直到当前光标所在行时停止。设置断点(Toggle BreakPoint)第3章 嵌入式系统的设计方法63n调试观察窗口工具条,从左到右依次为:打开寄存器窗口(Processor Registers)打开观察窗口(Processor Watch)打开变量观察窗口(Context Variable)打开堆栈观察窗口(Back Trace)打开存储器观察窗口(Memory)打开反汇编窗口(Disa

28、ssembly)第3章 嵌入式系统的设计方法64处理器状态观察:n包括:q寄存器q变量q存储器第3章 嵌入式系统的设计方法65存储器窗口:n包括:q显示格式q修改操作第3章 嵌入式系统的设计方法66单步执行、断点:第3章 嵌入式系统的设计方法67添加变量进行观察:第3章 嵌入式系统的设计方法68Wiggler JTAG Wiggler JTAG 仿真器的安装与应用仿真器的安装与应用n简介nH-JTAG调试代理n使用Wiggler JTAG Wiggler JTAG 仿真器第3章 嵌入式系统的设计方法69简介简介n MagicARM2410 实验箱配套的Wiggler JTAG 仿真器,支持AD

29、S1.2 集成开发环境,支持单步、全速及断点等调试功能。仿真器采用ARM 公司提出的标准20 脚JTAG 仿真调试接口,与计算机连接采用标准25 针并口(即打印机口)。第3章 嵌入式系统的设计方法70u 要使用Wiggler JTAG 仿真器来调试ARM 处理器,除了ADS1.2 集成开发环境外,还需要安装一个ARM 调试代理软件;u 推荐使用H-JTAG 软件,H-JTAG 软件的特点如下:支持ARM7/ARM9,支持自动检测和手动指定内核;使用RDI 接口,支持SDT2.51、ADS1.2、REALVIEW 和IAR 集成开发环境;支持ARM/Thumb 模式;支持Little Endia

30、n & BIG Endian 模式;支持Wiggler、SDT JTAG 和自定义接口;H-JTAGH-JTAG调试代理调试代理第3章 嵌入式系统的设计方法71使用使用Wiggler JTAG Wiggler JTAG 仿真器仿真器n双击桌面“H-JTAG”快捷方式启动nH-JTAG 会自动检测ARM 内核,如果JTAG 连接正确将会在H-JTAG 主窗口中显示S3C2410A 处理器的内核ARM920Tn在进行JTAG 仿真调试时,不要关闭H-JTAG 软件第3章 嵌入式系统的设计方法72n 将计算机并口与Wiggler JTAG 仿真器连接;n 将仿真器JTAG口接头插入MagicARM2

31、410实验箱主板的J29上;n 通过AXD 软件的设置即可进行JTAG仿真调试;第3章 嵌入式系统的设计方法73程序固化程序固化n 在JTAG 仿真调试通过后,要将程序调试生成十六进制文件并下载到外部的NOR Flash(即固化程序),才可脱机运行。生成HEX HEX 文件。使用Flash Programmer Flash Programmer 烧写FlashFlash。第3章 嵌入式系统的设计方法74生成生成HEX HEX 文件文件n 在当前工程窗口中选用Release 生成目标,打开工程的DebugRel Settings 窗口,在TargetSettings 项中设置Post-linke

32、r 选取ARM fromELF。n 在ARM formELF 项中设置输出文件类型,如设置为Intel 32 bit Hex,然后设置输出文件名。生成文件默认存放在当前工程的xxx_DataRelease”目录中。n 重新编译连接工程即可生成 十六进制文件。第3章 嵌入式系统的设计方法75使用使用Flash Programmer Flash Programmer 烧写烧写FlashFlashn 将MagicARM2410 MagicARM2410 实验箱主板上的JP8 JP8 跳线器断开,选用NOR Flash NOR Flash 启动方式,按RST RST 键复位系统n 将Wiggler J

33、TAG 仿真器的25 针接口通过并口延长线与PC 机的并口LPT1 连接,将Wiggler JTAG 仿真器的20 针接口通过20 PIN 连接电缆接到MagicARM2410 实验箱主板的J29 上n 将配置文件DeviceARM2410.ocd 复制D:目录下。启动Flash Programmern 点击Program按钮,下载程序至目标板的Flash 中n 脱机运行第3章 嵌入式系统的设计方法763.8 嵌入式软件开发语言nC语言n汇编语言nJAVA语言,C+第3章 嵌入式系统的设计方法77一个困扰我的问题?nADS ,arm, Linux等相互之间什么关系?nADS集成开发环境能开发什么东西?它与我们后面所学的GNU开发工具有什么关系?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁