基于ARM的嵌入式软件开发课件_第1页
基于ARM的嵌入式软件开发课件_第2页
基于ARM的嵌入式软件开发课件_第3页
基于ARM的嵌入式软件开发课件_第4页
基于ARM的嵌入式软件开发课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于ARM的 嵌入式软件开发1. 基于ARM的嵌入式系统软件开发流程2. ADS1.2开发工具介绍3. ARM系统编程库2.1 基于ARM的嵌入式系统软件开发流程 嵌入式软件开发流程工程建立源文件编译调试固化 汇编代码 *.sC程序 *.c链接脚本文件 *.ld存储映像文件 *.map命令脚本文件 *.cs软件开发的主要流程操作的两个环节:编辑与编译链接代码排错环节软件代码Debug和固化环节ADS CodeWarrior IDE环境下进行编辑、编译与排错;在AXD环境下进行代码的固化与Debug。 2.2 ADS 1.2 开发工具介绍CodeWarrior IDEAXD DebugerCod

2、eWarrior IDE 使用1 建立新项目(Project)2 添加源文件到项目中3 设置项目的编译目标4 编译该项目5 Debug编译连接通过的项目1. 建立新项目(Project)1.2 添加源文件到项目中3 设置项目的编译目标选择 Project -Make菜单选项,完成下述功能:编译新添加或修改过和touch过的源文件,产生ELF对象文件;连接对象文件和库,产生一个ELF image文件; 执行postlink操作,如将ELF 映像文件用fromELF工具转换成另外一种格式;4 编译该项目5 Debug编译链接通过的项目缺省情况下,IDE会调用AXD调试器对Make通过的ELF im

3、age文件进行debug。选择Project -Debug6 从命令行Building项目1. 从命令行来使用编译器Compiler nameCompiler variantSource languageCompiler output armccCC32-bit ARM codetccCC16-bit Thumb code armcppC+C or C+32-bit ARM codetcppC+C or C+16-bit Thumb code1). 编译C文件 main.c :armcc -g -O1 -c main.c (for ARM)tcc -g -O1 -c main.c (for T

4、humb)其中:-g compiler添加debug tables.-O1 compiler 在维护足够的调试信息的同时采用最佳优化算法-c compiler 只进行编译2). 链接映像文件armlink main.o -o embed.axf 其中:-o 指定链接输出文件名 embed.axf.3). 用 armsd or AXD 载入映像进行调试运行6 从命令行Building项目2. 在命令行使用汇编器armasm -list addreg.lst addreg.sarmlink addreg.o -o addreg在Debugger中运行程序:armsd addreg step2. A

5、XD Debuger的使用运行程序添加断点添加观察点测试变量内容测试寄存器测试内存内容DEMO 程序功能介绍是一个Benchmark 程序, 用来测试系统的整形运算处理性能的高低。用Dhrystone性能进行描述,计算方法如下:Dhrystones/秒=处理器时钟 * 执行次数)/运行时间在Demo中,最小运行时间不能小于2秒钟。MIPS:业界用来衡量计算机系统性能的相对比较量。将VAX 11/780 作为一个参考机,其性能为1 MIP.VAX 11/780 每秒钟能够完成1757 Dhrystones .1 运行程序步骤1. 创建一个可执行的映像文件2. 运行 AXD, 选择File Loa

6、d Image3. 选择 Execute Go (或者按 F5),相关文件的处理器视图被打开,并在缺省断点处停止4. 若要重复执行程序,选择File Reload Current Image ,然后重复执行 then repeat Steps 2,3步骤2 添加断点1. 选择File Reload Current Image ,2.选择 Execute Go (或者按 F5),3.添加断点的三种方法:右键点击行,从弹出Menu中选 Toggle Breakpoint左键点击行,按F9,双击行的Margin部分4.选择 System Views Breakpoints 编辑断点5. 按F5 恢复

7、执行加断点后的程序2 添加断点4.选择 System Views Breakpoints 编辑断点设置循环运行断点750次后触发断点,程序停止。Processor Views Variables ,检查run_Index值。5. 按F5 恢复执行加断点后的程序3. 添加观察点1.选择File Reload Current Image 2.选择 Execute Go (或者按 F5)到main()3. 按F5 执行到添加的断点4. System Views Watchpoints,在 Watchpoints system View中点右键,选Add,对Watchpoints属性进行编辑。4. 测

8、试变量内容1. 使用Variables processor view察看变量信息1.选择File Reload Current Image 2.选择 Execute Go (或者按 F5),允许到缺省断点Main3. 按F5 执行到断点4. Processor Views Variables 打开变量窗口。窗口中可以察看Local和Global等变量。5.右击窗口,选Properties Dec,显示变量十进制。6.按F10,相当于选择Execute Step单步执行,这时每一步产生的变量变化将反映在variables窗口中5 测试变量内容(2)2. 察看变量的地址和内容13. 同前4. Pr

9、ocessor Views Watch 打开Watch窗口。窗口可在多个Tab页中察看变量内容5.点右键,选Add Watch,打开Add Watch窗口,可以添加需要观察变量6.按F10,相当于选择Execute Step单步执行,这时每一步产生的变量变化将反映在variables窗口中6. 测试寄存器1.选择File Reload Current Image 2.选择 Execute Go (或者按 F5),允许到缺省断点Main3.Processor Views Registers打开寄存器窗口4.按F10单步执行,这时每一步产生的变量变化将反映在registers窗口中。7. 测试内存

10、内容1.选择File Reload Current Image 2.选择 Execute Go (或者按 F5),允许到缺省断点Main3. 按F5 执行到断点4. Processor Views Memory5.按F10单步执行,这时每一步产生的变量变化将反映在registers窗口中。8. 修改内存内容1.选择File Reload Current Image 2.选择 Execute Go (或者按 F5),允许到缺省断点Main3. 从Search Memory显示查找内存对话框4. 双击内存窗口中的内容可以对其进行修改。5. 按F5可按修改后的内容继续运行程序。2.3 ARM系统编程

11、库环境 1. 标准ARM C/C+运行库2. Semihosting机制3. 建立一个基于ARM C库的应用4. ARM的混合编程1. C/C+ 编程环境如何能够在嵌入式系统开发中熟练正确的运用C语言开发高质量的应用程序是关键嵌入式应用开发经常会用到:标准ARM库;用户自定义库;C与汇编的混合编程(ATPCS)2. 标准ARM C/C+运行库ARM开发工具提供两个运行库:ANSIC C:提供ISO 的C库函数。库文件所在路径:安装目录libarmlibC+ :提供ISO C+ 标准库。库文件所在路径安装目录libcpplib两个标准ARM库使用ARM的semihosted环境运行,如文件的I/

12、O操作。semihosted环境对ARMulator和Multi-ICE等都提供支持2. 标准ARM C/C+运行库ANSIC C库包含:由ISO C library standard定义的函数.在semihosted执行环境下用来实现C库函数的目标依赖的函数,可以根据应用的需要重新定义这些函数被C / C+ compilers使用的help函数.C+ 库包含: Rogue Wave Standard C+ Library version 2.01.01C+ compiler使用的help函数其它未被 Rogue Wave library支持的C+ 函数3. Semihosting 机制ARM

13、目标的一个机制,联系应用代码到debuger所在宿主机的I/O请求。它允许C库函数使用主机上的显示和键盘功能。4. 建立一个使用ARM C库的应用使用 main()函数创建嵌入式应用程序.自动创建一C or C+ 能执行的环境,包括了以下操作:创建一个 stack如果需要,创建一个 heap初始化一部分标准ARM C库中的函数程序自动支持ISO-defined functions 的使用能够捕获 runtime errors 和signals ,还能够终止出错程序的执行或使程序正常退出。4.1 建立一个使用semihosted 环境应用需要提供下面两者之一的执行环境:使用缺省提供的标准 sem

14、ihosting 函数 ,如ARMulator, Angel, and Multi-ICE实现你自己的semihosting SWI 软中断处理4.2 建立一个non-semihosted 环境应用1创建源代码实现目标相关的应用2. 在源代码中添加_use_no_semihosting_swi 保护:汇编中:添加 _use_no_semihosting_swiC中添加 #pragma import(_use_no_semihosting_swi).3.把新对象链接到应用中 。5. ARMC/C+库注意事项 ARM C/C+运行库是以二进制形式提供的用户不能修改ARM C/C+运行库一般情况下,在建立基于特定目标的应用程序时,只需要重新实现ARM C运行库中很少一部分函数6. 用户自定义库ARM的库管理工具armar可以把一系列ELF对象文件收集到一起,并在库中进行维护。对于特定目标的嵌入式应用系统,用户自定义库是不可缺少的,一般针对特定硬件的底层应用的开发来编制驱动库函数。7. C与汇编混合编程及ATPCS混合编程的两种方式:内嵌汇编适用于汇编代码简单的情况,可直接嵌入到C语言程序中将C和汇编分别加到项目中,通过ATPCS来完成相互调用。汇编代码复杂。8.1 内嵌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论