版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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章 嵌入式系统的设计方法33.1 嵌入式软件组成BSPBootloader操作系统内核文件系统库,应用软
2、件第3章 嵌入式系统的设计方法43.2 嵌入式系统软件开发方法 采用宿主机/目标机交叉开发方式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的。嵌入式软件以宿主机/目标机模式开发,所需要的开发环境称为交叉开发环境,分为宿主机部分和目标机部分,两者以统一的通信协议进行通信,宿主机向目标机发送命令,目标机接收、执行命令并将结果返回宿主机,从而实现两机之间的交互控制。第3章 嵌入式系统的设计方法53.3 嵌入式系统软件设计和调试流程编辑创建工程添加文件、编写程序汇编语言加C语言编译配置编译、汇编和连接参数编写连接脚本文件编译第3章 嵌入式系统的设计方法6调
3、试连接调试器下载程序运行、调试固化通过仿真器烧写flash专用或通用的编程器通过bootloader烧写flash第3章 嵌入式系统的设计方法73.4 嵌入式软件开发主要内容无操作系统的软件开发主要包括两部分启动代码应用程序基于操作系统的软件开发包括:Bootloader开发操作系统开发移植BSP板级支持包开发移植应用程发开发移植第3章 嵌入式系统的设计方法8无操作系统软件开发-启动代码开发启动代码功能和特征功能硬件初始化引导C代码特征通常用汇编语言编写程序复位运行入口点代码量非常小第3章 嵌入式系统的设计方法9无操作系统软件开发-启动代码启动代码程序流程设置中断、异常入口关中断硬件寄存器初始
4、化(GPIO配置、总线配置、PLL时钟)初始化栈指针数据区初始化C入口函数调用 BL Main第3章 嵌入式系统的设计方法10无操作系统软件开发-应用软件开发应用软件功能和特征功能硬件驱动应用特征通常用C语言或者嵌入式汇编语言编写程序较复杂,代码量较大第3章 嵌入式系统的设计方法11基于操作系统的软件开发-bootloader开发Bootloader功能和特征功能硬件初始化引导操作系统下载程序(串口、网口、USB)烧写flash特征程序复位运行入口点通常用汇编语言+C语言编写代码量较小(相对)第3章 嵌入式系统的设计方法12基于操作系统的软件开发-嵌入式操作系统移植LinuxWindows C
5、E uC/OS IIuClinuxNucleus第3章 嵌入式系统的设计方法13基于操作系统的软件开发-BSP设计BSP功能和特征功能为应用程序提供统一的硬件操作接口特征高度硬件相关高度依赖于具体硬件平台各种操作系统各异第3章 嵌入式系统的设计方法14基于操作系统的软件开发-应用程序设计应用程序功能功能GUI图形、人机交互控制算法特征硬件依赖程度小部分可仿真调试各种操作系统各异第3章 嵌入式系统的设计方法153.5 嵌入式软件调试技术1模拟器方式 2在线仿真器方式3.监控器方式4.在线调试器方式第3章 嵌入式系统的设计方法161模拟器方式调试工具和待调试的嵌入式软件都在主机上运行,通过软件手段
6、模拟执行为某种嵌入式处理器编写的源程序。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,进行语法和逻辑上的调试。第3章 嵌入式系统的设计方法172在线仿真器方式在线仿真器ICE是一种完全仿造调试目标CPU设计的仪器,目标系统对用户来说是完全透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、以太网口或USB口等连接方式。该仿真器可以真正地运行所有的CPU动作,并且可以在其使用的内存中设置非常多的硬件中断点,可以实时查看所有需要的数据,从而给调试过程带来很多便利。由于仿真器自成体系,调试时可以连接目标板,也可以不接目标板。使用ICE同使用一般的目标硬件一样,
7、只是在ICE上完成调试后,需要把调试好的程序重新下载到目标系统上而已。由于ICE价格昂贵,而且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。 第3章 嵌入式系统的设计方法18。主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,被调试程序下载到目标板上运行监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运行情况,与宿主机端的调试器一起完成对应用程序的调试。监控程序包含基本功能的启动代码,并完成必要的硬件初始化,等待宿主机的命令。被调试程序通过监控程序下载到目标机,就可以开始进行调试。监控器方式操作简单易行,功能强大,不需要专门的调试硬件,适用面
8、广,能提高调试的效率,缩短产品的开发周期,降低开发成本。正因为以上原因,监控器方式才能够广泛应用于嵌入式系统的开发之中。监控器调试主要用于调试运行在目标机操作系统上的应用程序,不适宜用来调试目标操作系统。有的微处理器需要在目标板工作正常的前提下,事先烧制监控程序,而且功能有限,特别是硬件调试能力较差。3.监控器方式第3章 嵌入式系统的设计方法194.在线调试器方式 使用ICD和目标板的调试端口连接,发送调试命令和接收调试信息,可以完成必要的调试功能。一般情况下,在ARM芯片的开发板上采用JTAG边界扫描口进行调试。摩托罗拉公司采用专用的BDM调试接口。使用合适的开发工具可以利用这些接口。例如,
9、ARM开发板,可以将JTAG调试器接在开发板的JTAG口上,通过JTAG口与ARM处理器核进行通信。由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此许多接口问题,如高频操作限制、电线长度的限制等被最小化了。该方式是目前采用最多的一种调试方式。 第3章 嵌入式系统的设计方法203.6 嵌入式系统软件开发工具Windows操作系统ARM ADS/SDT + 调试器GNU + Cygwin + 调试器ARM SDT + 简易电缆Linux操作系统GNU + GDB第3章 嵌入式系统的设计方法21开发环境的作用第3章 嵌入式系统的设计方法22ADS IDE(集成开发环境) ARM
10、应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真器等。目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度,节省开发成本。第3章 嵌入式系统的设计方法23ADS工具包的组成 ADS是ARM公司推出的集成开发工具包,是专门用于ARM相关应用开发和调试的综合性软件。目前常用的版本是1.2,在功能和易用性上比早期的SDT都有提高,是一款功能强大又易于使用的开发工具。ARM ADS包含有编译器、链接器、CodeWarrior I
11、DE、调试器、指令集模拟器、ARM开发包和应用库等部分,可以用ADS来开发、编译、调试采用包括C、C+和ARM汇编语言编写的程序。 第3章 嵌入式系统的设计方法24ADS开发工具集 1.命令行开发工具ANSI C 编译器 - armcc and tccISO / Embedded C+ 编译器 - armcpp and tcppARM / Thumb 汇编器 armsLinker - armlink 第3章 嵌入式系统的设计方法252.图形开发工具:Windows 集成开发环境 CodeWarriorDebugger AXD (ARM eXtended Debugger)armsd ARM(符
12、号调试器)可向前兼容3.库文件:C and C+ 库4.辅助工具/支持软件:格式转换器 - fromelf 指令级仿真 ARMulator库管理器 armar第3章 嵌入式系统的设计方法26fromELF:ARM映像文件转换工具该命令将ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式映像文件), Motorola 32-bit S-record format(Motorola 32位S格式映像文件), Intel Hex 32 format(Intel 32位格式映像文件),和 Verilog-like hex format(Verilo
13、g 16进制文件) 第3章 嵌入式系统的设计方法27Armar:ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。Flash downloader:用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具ARMulator: ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟,用户可以在硬件尚未做好的情况下,开发程序代码。第3章 嵌入式系统的设计方法28名称描述使用方式代码生成工具ARM汇编器ARM C/C+编译器Thumb C/C+编译器A
14、RM 链接器由Code Warrior调用 集成开发环境Code Warrior工程管理,编译链接调试器AXD/ADW/ADU/armsd仿真调试指令模拟器ARMulator由AXD调用ARM开发包一些底层的例程,实用程序(如fromELF)由Code Warrior调用ARM应用库C/C+等函数库用户程序调用工具调用及流程第3章 嵌入式系统的设计方法29集成开发环境CodeWarrior使用 CodeWarrior集成开发环境为管理和开发项目提供了简单、多样化的图形用户界面。用户可以使用ADS的CodeWarrior IDE为ARM处理器开发用C,C+,或ARM汇编语言的程序代码 。全面的项
15、目管理功能。 可以在CodeWarrior IDE为ARM配置以上所介绍的各种命令工具,实现对工程代码的编译,汇编和链接。第3章 嵌入式系统的设计方法30C/C+Browser C/C+SensitiveEditorProjectManager第3章 嵌入式系统的设计方法31建立工程第3章 嵌入式系统的设计方法32第3章 嵌入式系统的设计方法33ARM Executable Image:用于由ARM指令的代码生成一个 ELF格式的可执行映像文件。ARM Object Library:用于由ARM指令的代码生成一个 armar 格式的目标文件库。Empty Project:用于创建一个不包含任何
16、库或源文件的工程。第3章 嵌入式系统的设计方法34Makefile Importer Wizard: 用于将 Visual C 的 nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件。 Thumb ARM Interworking Image:用于由 ARM指令和 Thumb 指令的混和代码生成一个可执行的ELF格式的映像文件。 Thumb Executable image:用于由 Thumb指令创建一个可执行的ELF格式的映像文件。 Thumb Object Library:用于由Thumb指令的代码生成一个 armar 格式的目标文件库。第3章 嵌入式系统
17、的设计方法35新建文件第3章 嵌入式系统的设计方法36添加文件到工程第3章 嵌入式系统的设计方法37生成目标设置第3章 嵌入式系统的设计方法38每个工程项目都有下面3种生成目标:Debug:包含所有调试信息DebugRel:包含部分调试信息Release:不包含调试信息注:若项目编译只是为了调试使用,则选择Debug或者DebugRel;若要生成最后可以运行的文件,则最好选择Release。第3章 嵌入式系统的设计方法39编译链接进入编译链接设置:第3章 嵌入式系统的设计方法40设置窗口:第3章 嵌入式系统的设计方法41目标设置:第3章 嵌入式系统的设计方法42在Targets Setting
18、s选项组中,Post-Linker用于选择链接器输出文件的处理方式。用户可以选择的值如下:None:不进行连接的处理。ARM fromELF:使用ARM工具fromELF处理链接器输出的ELF格式文件,它可以将ELF格式的文件转换为各种二进制文件格式。Batch File Runner:在连接完成后运行一个DOS格式的批处理文件。第3章 嵌入式系统的设计方法43若用户在编译完成后只是用AXD来调试程序,建议选择None;若要生成最后的编程文件,建议选择ARM fromELF,该选项与Linker面板中的ARM fromELF选项结合来产生最终的编程文件。第3章 嵌入式系统的设计方法44CPU设
19、置:第3章 嵌入式系统的设计方法45Linker设置:第3章 嵌入式系统的设计方法46在 Output format 下拉框中,为用户提供了多种可以转换的目标格式,这里选择 Plain binary,这是一个二进制格式的可执行文件,可以被烧写在目标板的 Flash中。在 Output file name 文本域输入期望生成的输出文件存放的路径,或通过点击 Choose.按钮从文件对话框中选择输出文件路径。如果在这个文本域不输入路径名,则生成的二进制文件存放在工程所在的目录下。第3章 嵌入式系统的设计方法47第3章 嵌入式系统的设计方法48在标签页 Output 中,Linktype 中提供了
20、3 种链接方式:Partia :表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple :默认的链接方式,也是使用最为频繁的链接方式,它链接生成简单的 ELF 格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered :使得链接器要根据 scatter 格式文件中指定的地址映射,生成复杂的 ELF 格式的映像文件。一般情况下这个选项使用不太多。 第3章 嵌入式系统的设计方法49 在选中 Simple 方式后,就会出现 Simple image。 R0 Base:这个文本框设置包含有 R0 段的加载域和运行域为同一个地址,默认是
21、0 x8000。这里用户要根据硬件的实际 SDRAM 的地址空间来修改这个地址,保证在这里填写的地址是程序运行时 SDRAM 地址空间所能覆盖的地址。RW Base:这个文本框设置包含 RW 和 ZI 输出段的运行域地址。如果选中 split 选项,链接器生成的映像文件将包含 2 个加载域和 2 个运行域,此时,在 RW Base 中所输入的地址为包含 RW 和 ZI 输出段的域设置了加载域和运行域地址。 第3章 嵌入式系统的设计方法50第3章 嵌入式系统的设计方法51 在 Options 选项中,需要注意的是 Image entry point 文本框。它指定映像文件的初始入口点地址值,当映
22、像文件被加载程序加载时,加载程序会跳转到该地址处执行。如果需要,用户可以在这个文本框中输入下面格式的入口点。 入口点地址:这是一个数值,例如-entry 0 x0。 符号:该选项指定映像文件的入口点为该符号所代表的地址处。比如:-entry int_handler。 在此处指定的入口点用于设置 ELF 映像文件的入口地址。 需要注意的是,这 里不可以用符号 main 作为入口点地址符号,否则将会出现“Image dose not have an entry point(Not specified or not set due to multiple choice)”的出错信息。 第3章 嵌入式
23、系统的设计方法52 Layout选项在连接方式为Simple时有效,用来安排一些输入段在映像文件中的位置。在上图中,Place at Beginning of Image选项用于指定某个输入段放置在它所在的运行时域的开头。 第3章 嵌入式系统的设计方法53编译链接:第3章 嵌入式系统的设计方法54第3章 嵌入式系统的设计方法55文件输出第3章 嵌入式系统的设计方法56AXD调试工具的使用在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发的软件是否达到了预期的效果,这可以由软件仿真来完成。当然,也可以搭建一个PCB板,这个板上可以包含一个或多个处理器,在这个板上可以运行和调试应用软
24、件。只有当通过硬件或者是软件仿真所得到的结果达到了预期的效果,才算是完成了应用程序的编写工作。第3章 嵌入式系统的设计方法57调试器能够发送以下指令:装载映像文件到目标内存;启动或停止程序的执行;显示内存,寄存器或变量的值;允许用户改变存储的变量值。第3章 嵌入式系统的设计方法58进入AXD调试工具第3章 嵌入式系统的设计方法59 在菜单File中选择“Load image”选项,打开 Load Image对话框,找到要装载的.axf映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。 第3章 嵌入式系统的设计方法60Docking windowsDocking toolbarsReg
25、istersSource/Disassembly Memory 第3章 嵌入式系统的设计方法61选择调试目标: 点击ADX窗口菜单【Options】选择【Configure Target】,即弹出Choose Target 窗口,在没有添加其它仿真驱动程序前,Target 项中只有两项,分别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。第3章 嵌入式系统的设计方法62调试工具条,从左到右依次为:全速运行(Go)停止运行(Stop)单步运行(Step In),与Step 命令不同之处在于对函数调用语句,Step In 命令将进入该函数。单步运行(Step),每次执行一条语句,这时函数调
26、用将被作为一条语句执行。单步运行(Step Out),执行完当前被调用的函数,停止在函数调用的下一条语句。运行到光标(Run To Cursor),运行程序直到当前光标所在行时停止。设置断点(Toggle BreakPoint)第3章 嵌入式系统的设计方法63调试观察窗口工具条,从左到右依次为:打开寄存器窗口(Processor Registers)打开观察窗口(Processor Watch)打开变量观察窗口(Context Variable)打开堆栈观察窗口(Back Trace)打开存储器观察窗口(Memory)打开反汇编窗口(Disassembly)第3章 嵌入式系统的设计方法64处理
27、器状态观察:包括:寄存器变量存储器第3章 嵌入式系统的设计方法65存储器窗口:包括:显示格式修改操作第3章 嵌入式系统的设计方法66单步执行、断点:第3章 嵌入式系统的设计方法67添加变量进行观察:第3章 嵌入式系统的设计方法68Wiggler JTAG 仿真器的安装与应用简介H-JTAG调试代理使用Wiggler JTAG 仿真器第3章 嵌入式系统的设计方法69简介 MagicARM2410 实验箱配套的Wiggler JTAG 仿真器,支持ADS1.2 集成开发环境,支持单步、全速及断点等调试功能。仿真器采用ARM 公司提出的标准20 脚JTAG 仿真调试接口,与计算机连接采用标准25 针
28、并口(即打印机口)。第3章 嵌入式系统的设计方法70 要使用Wiggler JTAG 仿真器来调试ARM 处理器,除了ADS1.2 集成开发环境外,还需要安装一个ARM 调试代理软件; 推荐使用H-JTAG 软件,H-JTAG 软件的特点如下:支持ARM7/ARM9,支持自动检测和手动指定内核;使用RDI 接口,支持SDT2.51、ADS1.2、REALVIEW 和IAR 集成开发环境;支持ARM/Thumb 模式;支持Little Endian & BIG Endian 模式;支持Wiggler、SDT JTAG 和自定义接口;H-JTAG调试代理第3章 嵌入式系统的设计方法71使用Wiggler JTAG 仿真器双击桌面“H-JTAG”快捷方式启动H-JTAG 会自动检测ARM 内核,如果JTAG 连接正确将会在H-JT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春金融高等专科学校《含油气盆地沉积学》2023-2024学年第一学期期末试卷
- 食品检验取样技术规程
- 保险风险应对策略模板
- IT部门年度工作报告模板
- 声音科学详解模板
- 生物技术基础培训模板
- 问卷调查报告格式
- 二零二五版商用锅炉运行安全保障合同范本3篇
- 统编版五年级语文上册寒假作业(十)(有答案)
- 2024-2025学年天津市和平区高一上学期期末质量调查数学试卷(含答案)
- 统编版六年级语文上册专项 专题11文言文阅读-原卷版+解析
- 高中数学笔记总结高一至高三很全
- 《物理因子治疗技术》期末考试复习题库(含答案)
- 011(1)-《社会保险人员减员申报表》
- 电厂C级检修工艺流程
- 函授本科《小学教育》毕业论文范文
- 高考高中英语单词词根词缀大全
- 药用辅料聚乙二醇400特性、用法用量
- 《中小学机器人教育研究(论文)11000字》
- GB/T 22085.1-2008电子束及激光焊接接头缺欠质量分级指南第1部分:钢
- 全过程人民民主学习心得体会
评论
0/150
提交评论