1 / 56

嵌入式系统教案

嵌入式系统教案. 北京建筑工程学院 . 计算机系. 2014/8/20. 第五章 -2 嵌入式软件设计. 提纲. 嵌入式软件开发的特点. 1. 2. 嵌入式软件的开发流程. 3. 嵌入式软件的调试. 4. ARM 集成开发环境. 嵌入式软件设计. 嵌入式软件开发的特点. 需要交叉开发环境 。交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。

gita
Download Presentation

嵌入式系统教案

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式系统教案 北京建筑工程学院.计算机系 2014/8/20

  2. 第五章-2 嵌入式软件设计 提纲 嵌入式软件开发的特点 1 2 嵌入式软件的开发流程 3 嵌入式软件的调试 4 ARM集成开发环境

  3. 嵌入式软件设计 嵌入式软件开发的特点 • 需要交叉开发环境。交叉开发环境是指实现编译、链接和调试应用程序代码的环境。与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。 • 宿主机(Host):是一台通用计算机,一般是PC机。它通过串口与目标机通信。宿主机的软硬件资源比较丰富,包括功能强大的操作系统及相应的集成开发工具。 • 目标机(Target):在嵌入式软件开发期间使用,目标机可以是嵌入式应用软件的实际运行环境,也可以是能替代实际环境的仿真系统。目标机体积小,集成度高。目标机硬件资源有限,软件可以裁减,也可以配置。

  4. 嵌入式软件设计 嵌入式软件开发的特点 • 引入任务设计方法。嵌入式应用系统以任务为基本的执行单元。嵌入式系统的设计通常采用DARTS(Design and Analysis of Real-Time Systems)设计方法进行任务的设计。DARTS给出了任务划分的方法和定义任务间接口的机制。 • 需要固化程序。通用软件的开发在测试完成以后就可以直接投入运行。其目标环境一般是PC机,在总体结构上与开发环境差别不大。而嵌入式应用程序开发环境是PC机,但运行的目标环境却千差万别,可以是PDA,也可以是仪器设备。而且应用程序在目标环境下必需存储在非易失性存储器中,保证在关机后下次的使用。 • 软件开发难度大。嵌入式应用软件对稳定性、可靠性、抗干扰、实时性等性能要求比通用软件的要求更为严格。

  5. 嵌入式软件设计 嵌入式软件的开发流程 1.需求分析阶段 包括:对问题的识别和分析,制定规格说明文档和需求评审。 2.设计阶段 包括:系统设计、任务设计和任务的详细设计。 3.生成代码阶段 包括:代码编程、交叉编译和链接、交叉调试和测试等。 注:嵌入式集成开发环境都支持交叉编译、链接,如WindRiver公司的Tornado及GNU套件,微软公司的EVC++嵌入式开发环境,RAM公司提供的ADS、SDT等。

  6. 嵌入式软件设计 嵌入式软件的开发流程 4.固化阶段 嵌入式应用软件调试完成以后,编译器要对源代码重新编译一次,以产生固化到目标环境的可执行代码,再烧写到目标环境的Flash中。可执行代码烧写到目标环境以后,还要进行运行测试,以保证程序正确无误。固化测试完成后,整个嵌入式应用软件的开发就基本完成了。

  7. 宿主机 目标机 ARM硬件平台 嵌入式软件设计 嵌入式软件的开发流程

  8. 嵌入式软件的调试 常用调试方法 • 软件仿真(源程序模拟器方式) • 在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序。 • 驻留监控程序(监控器方式) 监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运行情况。它与宿主机端的调试器一起完成对应用程序的调试。被调试程序下载到目标机,就可以进行调试。监控程序一般可完成设置断点、单步执行、查看寄存器或内存空间的值等各项功能。 • 不需要专门的调试硬件 • 需要占用目标板上的一部分资源 • 不能对程序进行完全仿真,主要用于调试在目标机操作系统上运行的应用程序,不适于调试目标操作系统。

  9. 嵌入式软件的调试 常用调试方法 • JTAG仿真器(ICD,In-Circuit Debugger,在线调试器) 通过JTAG口与 目标机的CPU进行通信。 • 完全非插入式调试,不使用片上资源,无需目标存储器,不占用目标系统的任何端口 • 仿真效果更加接近于目标硬件 在线仿真器(ICE,In-Circuit Emulator) ICE是一种完全仿造调试目标CPU设计的仪器。该仿真器可以真正运行所有的CPU动作。使用ICE同使用一般的目标硬件一样,只是在ICE上完成调试之后,需要把调试好的程序重新下载到目标系统上而已。

  10. ARM软件开发工具 ARM主流开发工具 • Windows操作系统 • ARM ADS/SDT + 调试器 • GNU + Cygwin + 调试器 • ARM SDT + 简易电缆 • Linux操作系统 • GNU + GDB

  11. ARM软件开发工具-ADT IDE ADT for ARM集成开发系统

  12. 作业 • 嵌入式软件开发的特点是什么? • 写出嵌入式系统软件开发的流程。 • 嵌入式系统有哪几种调试方式?现在最流行的是哪种?使用什么接口?

  13. 主要内容 ARM集成开发环境 • ARM开发工具概述 • ARM开发系统的安装 • ARM JTAG 仿真器配置 • 新建工程项目 • 编译工程项目 • AXD调试器的使用方法

  14. ARM集成开发环境 ARM开发工具概述(一) 基于ARM的开发,需要借助硬件工具和软件工具。硬件工具主要是ARM在线仿真器、评估板等,软件工具包括编辑汇编、编译链接、调试软件、嵌入式操作系统和函数库。目前世界上有诸多公司提供以上不同类别的软硬件产品。 开发者选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快进度,节省开发成本。因此一套运行于PC机上,含有编辑软件、汇编软件、连接软件、调试软件、项目管理以及函数库的集成开发环境(IDE,Integrate Develop Enviorment)是必不可少的。集成开发环境用于开发ARM的应用和驱动程序,而调试工作需要借助于ARM实时仿真器和评估板方可完成。

  15. ARM集成开发环境 ARM开发工具概述(一) 实际上,多数嵌入式开发者都借助Windows平台的IDE环境和ARM实时仿真器来开发驱动和应用程序,再将其移植到其它嵌入式操作系统上。 常用的集成开发环境(IDE)有ARM SDT,ARM ADS,MULTI2000,Hitool for ARM等,较为流行的仿真器如Multi-ICE,ARM JTAG等。这里主要介绍ARM ADS集成开发环境和ARM Multi-ICE JTAG仿真器。

  16. ARM集成开发环境 ARM开发工具概述(二) • 软件工具 • ARM ADS(ARM Developer Suite)是ARM公司推出的新一代ARM集成开发软件环境,用以取代ARM公司以前推出的ARM SDT开发软件,目前用户使用的ARM ADS新版本为ADS1.2。 • ARM ADS对ARM SDT的模块进行了增强,替换了部分SDT的部件。ADS由命令行开发工具,ARM时实库,GUI环境(Code Warrior和AXD),实用程序和支持软件组成。有这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的应用程序。

  17. ARM集成开发环境 ARM开发工具概述(二) • 软件工具 • ADS支持所有的ARM体系处理器,包括ARM7、ARM9、ARM9E、ARM10、ARM10E和Intel Xscale系列,除支持Windows平台操作系统外,还支持在 RedHat Linux操作系统上的运行。 • 这里介绍基于Windows平台的ARM开发,让您快捷掌握Code Warrior和AXD的使用,致力于ARM的开发。

  18. ARM集成开发环境 ARM开发工具概述(三) • 硬件工具 • ARM Multi-ICE JTAG仿真器是SoC应用开发的强大调试工具,是进行硬件开发、驱动程序调试、应用软件开发的必备工具。它用于ARM处理器内核软件调试,符合IEEE 1149.1规范,可以满足更多用户对ARM处理器内核软件的开发、调试需求。 • ARM Multi-ICE JTAG仿真器支持所有内含embedded-ICETMlogic的基于ARM内核的芯片,同时也支持所有新的尚在开发中的ARM内核SoC芯片。通过JTAG仿真器,用户可以轻松修改寄存器、存储器、设置断点、观察窗口、程序下载及RealMonitorTM 实时调试。 • ARM Multi-ICE JTAG仿真器配备ARM ADS软件集成开发调试环境,编译、链接、可视化调试一应俱全,软件模拟、项目管理方便快捷,快速提高代码开发效率。

  19. ARM开发工具概述(四) ARM集成开发环境 • ARM JTAG主要特征如下: • 支持所有内建Embedded-ICE逻辑单元的ARM处理器 • 支持多个内核系统 • 支持ARM ADS1.2开发环境 • 连接简便,兼容不同电压的目标系统 • 用户可通过JTAG修改寄存器、存储器内容等 • 除JTAG扫描链外,不占用目标板上的其它任何资源 • 支持实时硬件断点 • 支持程序下载及实时调试 • 通信速度快,高速数据下载可达130KB/S • JTAG速度可配置,以满足不同调试对象的需求 • 支持所有符合RDI 1.50或RDI 1.51规范的调试工具软件 • 支持多目标平台,如ATMEL、SamSung、Intel、Philips、Sharp • 提 供丰富的例程和使用说明 • 体积轻巧,性能稳定

  20. ARM开发工具概述(五) ARM集成开发环境 • ARM Multi-ICEJTAG实时仿真器支持的ARM内核: • ARM7TDMI ARM710T ARM7TDMI-S • ARM7DMI ARM720T ARM740T • ARM7TDI-S ARM7EJ-S ARM926EJ-S • ARM9TDMI ARM9E-S ARM940T • ARM946E-S ARM920T ARM966E-S • ARM1020E ARM922T ARM966E-S • Intel XScale PXA210 PXA250 80200 • 支持的操作系统: • Windows 98/NT/2000/ME/XP • X86 RedHat Linux 6.2/7.2/8.0

  21. ARM开发系统的安装(一) ARM集成开发环境 • 硬件连接 • ARM Multi-ICEJTAG使用标准的25pin并口插座和20pin的JTAG插座作为接口。有的目标板可能使用14pin的JTAG插座,它的信号定义和20pin的JTAG接口的信号排列顺序如下图1。对于这两类接口,它们相同信号的电气特性一样,因此可以把对应的信号直接相连进行转换。20pin和14pinJTAG接口信号定义

  22. ARM开发系统的安装(二) ARM集成开发环境 ARM开发系统的硬件连接如下图所示:

  23. ARM开发系统的安装(三) ARM集成开发环境 • 软件安装 • 开发PC主机系统需求: • Pentium IBM兼容PC,带有可用的并口 • CD-ROM驱动器 • 200MHz以上CPU • 300MB以上空闲硬盘空间 • 32MB(Win98)或64MB(Win2000)以上内存空间 • 建议Microsoft Windows 98或2000操作系统 ARM开发系统软件的安装过程分为两步: 1、安装ARM Multi-ICE,这是仿真器驱动程序。 2、安装ARM Developer Suite(ADS),这是ARM的集成开发环境。 插入安装光盘后,按照默认的设置进行安装即可。

  24. ARM JTAG仿真器配置(一) ARM集成开发环境 1.按照硬件连接图所示,做好仿真器、目标板和PC机的硬件连接.需要注意的是:要先给仿真器加电,然后再给目标板加电。 2.打开“开始程序ARM Multi-ICE v2.2”运行Multi-ICE server,启动仿真器驱动。

  25. ARM JTAG仿真器配置(二) ARM集成开发环境 3. 点击FileAutoconfigure或相应快捷键,自动连接仿真器,如下图所示。仿真器能够检测ARM目标板的CPU型号或者ARM内核级别,这就表明仿真器已经连接并能够仿真目标板。

  26. ARM JTAG仿真器配置(三) ARM集成开发环境 对于某些ARM内核的CPU来说,在点击FileAutoconfigure自动配置时可能会出现“UNKNOWN”的情况,这属于正常现象。这时,用户需要根据自己的内核级别,进行手动配置。这里以ARM920T内核为例,简要介绍。

  27. ARM JTAG仿真器配置(四) ARM集成开发环境 A:首先要建立相应ARM内核的配置文件。新建一文本格式的文件,以 cfg 为扩展名,比如:AT91RM9200DK.cfg,最好保存到ADS的安装 目录 C:\Program Files\ARM\Multi-ICE路径下。 文件的内容如下: [Title] ATMEL AT91RM9200 Demonstration Kit ;---------------------- THUNDER part --------------------------- [TAP 0] ARM920T ; Tell the Server to interrogate the device to gather IDCODE details ; For manual configuration the default is NO if not specified [TAPINFO] YES [Timing] Low=0 ; this equates to 10MHz TCK frequency High=0 Adaptive=OFF ; do not use adaptive clocking

  28. ARM JTAG仿真器配置(五) ARM集成开发环境 B:打开“开始程序ARM Multi-ICE v2.2”运行Multi-ICE server,启动仿真器驱动。点击FileAutoconfigure自动配置,等待出现“Unknow”提示。然后打开FileLoad-Configuration选项。 在弹出的对话框中查找并加载在上面建立的文件AT91RM9200DK.cfg。

  29. ARM JTAG仿真器配置(六) ARM集成开发环境 调入该文件后,Multi-ICE Server能够检测ARM内核,说明手动配置成功。 图7 如果仿真器连接到PC机,刚打开Multi-ICE Server时出现警告,或者该窗口右下角的两个绿灯不亮,应该检查仿真器、电源及其连接是否有故障。

  30. 新建工程项目(一) ARM集成开发环境 1.打开“开始程序ARM Developer Suite v1.2Codewarrior for ARM Developer Suite”,进入ADS集成开发环境。 2.从FilesNew菜单新建一个工程项目,如下图所示。

  31. 新建工程项目(二) ARM集成开发环境 3.在New对话框的Project选项卡中创建新工程项目。如图所示:ProjectARM Executable image,用于生成一个可执行的ELF格式的映像文件。在Project Name文本框中填写将要建立的工程项目的名称,在Location文本框中设置工程项目的路径。

  32. 新建工程项目(三) ARM集成开发环境 4.单击“确定”,这样根据工程项目模板就生成一个新工程项目,如下图所示。可以查看在“Location”所指定的文件夹下,生成了一个XXX文件夹,它又包括XXX_Data文件夹和一个XXX.mcp文件。

  33. 新建工程项目(四) ARM集成开发环境 5.新建一个源文件:FilesNewfileText file,如图所示:

  34. 新建工程项目(五) ARM集成开发环境 在File Name 填写源文件名称(如init.s),在Location设置源文件的路径。建议新建文件路径和项目路径一致。这里,可以选中“Add to project”项,在Project下拉列表中选择想要加入的工程项目的名称(即上面所建立的 XXX.mcp),并选中Target目标栏中“Debug”、“DebugRel”和“Release”选项。 6.在新建的文本文件中编写程序代码,如下图所示:

  35. 新建工程项目(六) ARM集成开发环境 编辑完成后,保存该项目文件。如果该项目包括多个文件,继续新建文件直至完成。

  36. 新建工程项目(七) ARM集成开发环境 7.添加所有源文件到项目工程。   如果在第5步中没有选中“Add to project”项,在项目文件下的空白处单击右键,选择“Add files”,在弹出的对话框中选择刚才新建的文件,全部加载到该项目中。 加载完成后,一个完整的项目工程就建立成功!

  37. 编译工程项目(一) ARM集成开发环境 1.设置编译环境。 可以看到TargetS中有三个目标:DebugRel、Debug、Release, 默认的目标为DebugRel(带有基本调试信息),用于调试时可以 选择Debug(带有全部调试信息). 通过DebugRel Settings对话 框设置的各种选项对于其它两个目标无效,Targets页面如图所 示。

  38. 编译工程项目(二) ARM集成开发环境 2.打开Target Settings。 值得注意的是Post-Linker,用于选择对连接器输出的文件的处 理方式,经常使用的是:ARM fromELF,它可以将ELF格式的文 件转换成各种二进制文件格式供下载使用。同时确定“Output Directory”中的路径,在“Access Paths”下设置你所建的项目下 的XXX.axf文件的路径,下图为Target Settings设置页面。

  39. 编译工程项目(三) ARM集成开发环境 3.编译器的选项设置。 首先打开Language Settings项下的ARM Assembler,这是ARM汇编编译 器的选项。这里根据目标系统的实际情况,将ARM Assembler中的处理器 类型(Architecture or Processor)设置为ARM920T。

  40. 编译工程项目(四) ARM集成开发环境 打开Language Settings项下的ARM C Compiler选项,这是armcc编译器的选项。将ARM C Compiler中的处理器类型也设置为ARM920T。如果需要使用 C++和Thumb指令集,则应将ARM C++ Compiler,Thumb C Compiler和Thumb C++ Compiler也作同样的设置。

  41. 编译工程项目(五) ARM集成开发环境 其它各个选项一般按默认设置即可:ARM920T,Pure-endian softfp, litter endian,ANSI/ISO Standard C。 4.连接器的选项设置。 选择Linker下的ARM Linker选项。 打开Output选项卡,需要注意的 是RO Base,它是用来设置映象文件中RO属性输出段的加载时地址 和运行时地址,该地址值必须是字对齐的。它应该在RAM区,如果 没有指定地址值,使用默认地址0x8000。 在AT91RM9200实验箱中,当系统上电或复位时,固化在Flash中 Boot程序首先运行,将SDRAM映射在0x2000,0000~0x2200,0000-1 (32MB)的地址空间。因此,该RO值只要设置在上述地址范围即 可,当然也可以设置在内部RAM区域,即0x200000。下图为ARM Linker设置页面。RW Base设置映像文件中包含RW属性和ZI属性 的输出段的运行时域的起始地址,该地址必须字对齐。如果它与- split一起使用,会将映像文件中RW/ZI属性输出段的加载时地址和 运行时地址都设置为文本框中的值。

  42. 编译工程项目(六) ARM集成开发环境 如果没有选择RW Base选项,映像文件中只包含一个加载时域和一个运行时域。此时,RO属性的输出段、RW属性的输出段以及ZI属性的输出段都包含在同一时域中。当设置RW Base选项时,映像文件包括两个运行时域,一个包含RO属性的输出段,另一个包含RW/ZI属性的输出段。同样,指定-split选项后,映像文件包括两个加载时域。

  43. 编译工程项目(七) ARM集成开发环境 • Layout选项卡,在连接方式为Simple时有效,它安排一些输入段在映像文件中的位置。 • Place at the beginning of image选项组,用于指定将某个输入段放置在它所在的运行时域的开头。比如将复位异常中断处理程序的输入段放置在运行时域的开头。有以下两种方式指定输入段: • 在Object/Symbol文本框中指定符号名称,则定义该符号的输入段被指定。 • 在Object/Symbol文本框中指定目标文件名称,在Section文本框中指定一个输入段名称,从而确定一个输入段作为指定的输入段。 Place at the end of image选项组,用于指定将某个输入段放置在它所在运行时域的结尾。比如包含校验和数据的输入段通常放置在运行时域的结尾。指定一个输入段的方法与Place at the beginning of image选项组相同,通常可以不予设置。

  44. 编译工程项目(八) ARM集成开发环境 这里采用方法二,将Object/Symbol设置为init.o,Section设置为Init,这些选项保证初始化代码在所有其它代码之前被执行。init.o目标文件是由汇编文件init.s生成的,Init是输入段名称,在init.s的AREA伪代码语句处定义。组合框Place at the end of image中的输入段设置可以忽略。

  45. 编译工程项目(九) ARM集成开发环境 5.fromELF工具选项。 打开Linker项下的ARM fromELF选项,将其中的output format设置为Plain binary ,该选项设置输出目标文件的格 式,有多种类型供选择。 为ARM fromELF中的Output file name指定文件名。此设置可以省略, 使用缺省文件名即工程名.bin,默认存放在DebugRel/Debug下。

  46. 编译工程项目(十) ARM集成开发环境 6.项目编译。   设置好编译连接的参数后,选中图中红圈所示的编译按钮,对整个工 程编译。当然选中一个.s文件或.c文件,单击鼠标右键可以对单个文件进行 编译。直到弹出的错误和警告信息为“0 error, x warnings”时,整个项目的 编译成功,方能进入调试环境。也可以通过单击Project菜单下的Make命令 或者快捷键F7来进行编译连接和输出目标文件。

  47. AXD调试器的使用(一) ARM集成开发环境 • AXD Debugger是用户用来调试应用程序的开发环境,支持软件仿真和带目标系统的硬件仿真两种方式。其中,软件仿真方式无需用户硬件系统的支持,使用宿主机的CPU模拟ARM微处理器的运行,可进行与硬件无关的应用程序的调试和运行。 • 当需要进行带目标系统的硬件仿真,调试和运行与硬件相关的应用程序时,必须建立AXD Debugger与目标系统的连接。在此之前,应先对AXD Debugger进行如下配置,步骤如下: • a.配置ARM Multi-ICE V2.2 • 做好仿真器和目标系统的硬件连接,先后给仿真器和目标系统上电。 • 运行Multi-ICE Server,进行自动配置或者手动配置,确保ARM实时仿真器能够检测到ARM内核。

  48. AXD调试器的使用(二) ARM集成开发环境 b.配置调试环境 打开AXD Debugger窗口,打开OptionsConfigure Target选项,出现目标选择的对话框。用户安装后第一次使用AXD时,需要添加仿真器的目标环境。 点击“Add” 按钮,在出现的浏览框中查找Multi-ICE.dll文件。

  49. AXD调试器的使用(三) ARM集成开发环境 根据Multi-ICE的安装路径(默认安装的路径是C:\Program Files\ARM\Multi-ICE)选定Multi-ICE.dll文件,然后点击 “确定” 按钮。出现以下画面:

  50. AXD调试器的使用(四) ARM集成开发环境 点击 “OK” 按钮 ,进入Multi-ICE的设置对话框。

More Related