基于ARM核的嵌入式开发与开发环境介绍(推荐)课件_第1页
基于ARM核的嵌入式开发与开发环境介绍(推荐)课件_第2页
基于ARM核的嵌入式开发与开发环境介绍(推荐)课件_第3页
基于ARM核的嵌入式开发与开发环境介绍(推荐)课件_第4页
基于ARM核的嵌入式开发与开发环境介绍(推荐)课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ARM核的嵌入式 软件开发环境与技术介绍主要内容一、开发环境二、开发流程三、工程的建立与配置四、编写软件源文件五、软件工程的编译链接六、软件调试七、可执行文件固化一、开发环境Embest IDEARM 开发板Embest 仿真器Embest IDE开发环境开发环境的组成PC开发环境的连接Embest IDE界面工程管理区代码编辑区寄存器窗口信息提示区存储器区变量窗口数据观察区函数栈窗口Embest IDEEmbest IDE特征支持所有ARM7,ARM9系列处理器;支持开发语言:C和汇编;支持Windows 98、XP、NT及2000等操作系统;源码编辑器:支持标准的文本编辑功能,支持语法

2、分色显示。图形化的工程管理与设置,图形化设置编译连接选项。调试功能:可进行程序下载、断点设置、单步执行、异常处理等,可查看修改存储区、寄存器、外围寄存器、变量,可查看函数栈,显示反汇编指令及源文件交叉显示。丰富的例程:提供Atmel、Samsung、 OKI 、 Cirrus Logic等多家公司ARM处理器的调试程序示例和使用说明。配合Embest PowerICE仿真器,速度达120KBytes/秒。增强型仿真器PowerICE120KByte/S标准型仿真器Emulator25KByte/SEmbest 仿真器二、开发流程开发流程工程建立 源文件 编译链接 调试 固化C语言程序*.c 汇

3、编源程序*.s 链接脚本文件*.ld命令脚本文件*.CS存储区映像文件*.map源文件在源文件中,除应用程序外,用户需要做的最主要工作是编写启动程序,包括汇编启动程序*.s和C语言启动程序*.C,它主要是完成一些和硬件相关的初始化的工作,为应用程序作准备。在程序编译时需要增加一个链接脚本文件,该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定位。源文件在程序的调试过程中可以选择使用存储区映像文件*.map和命令脚本文件*.CS配合程序的调试。存储区映像文件*.map可以防止在软件调试过程中访问非法存储区时产生异常中断;命令脚本文件*.

4、CS则是通过一组命令序列来让集成环境自动完成一些特定的功能 。三、工程的建立与配置开发流程之一:工程的建立与配置步骤建立软件工程配置处理器配置调试设备建立软件工程创建新工程 选择File菜单项中的建立新工程选项 输入工程名和要保存工程的路径名 用户可以在工作区内自由添加各种文件处理器配置配置ARM7ARM9配置芯片厂家配置具体芯片型号配置调试设备配置Jtagarm7Jtagarm9PowerICEARM7PowerICEARM9SimArmPC和仿真器通讯设置四、编写软件源文件开发流程之二:软件源文件的形式(语言)标准C语言文件汇编语言文件 汇编代码文件 *.s 汇编包含文件 *.mac C代

5、码文件 *.c C包含文件 *.h软件源文件的形式(功能)应用程序文件启动程序文件 系统复位后开始执行的程序部分 启动程序执行完后开始执行的部分 汇编代码200行,执行空间1KB C源代码1000050000行,100KB 500KB启动代码说明启动代码是用来初始化电路以及用来为高级语言写的软件做好运行前准备的一小段汇编语言,是任何处理器上电复位时的程序运行入口点 功能 特征电路初始化 为高级语言编写的软件运行做准备 汇编语言 程序复位运行入口点启动流程设置中断、异常向量系统寄存器配置看门狗及外围电路初始化存储区电路初始化变量初始化数据区准备高级语言入口函数调用初始化栈指针典型启动流程设置中断

6、、异常向量变量初始化、数据区准备高级语言入口函数调用初始化栈指针NoRW:LDR r1, =ZI_Limit MOV r2, #0LoopZI: CMP r3, r1STRCC r2, r3, #4beq LoopZI # IRQ modeMOV R0, #Mode_IRQ MSR CPSR_c, R0LDR R13, =IRQ_Stack# SVC modeMOV R0, #Mode_SVCMSR CPSR_c, R0LDR R13, =SVC_Stack配置存储区B Reset_HandlerB Undefined_HandlerB SWI_HandlerB Prefetch_Handle

7、rB Abort_HandlerNOPB IRQ_HandlerB FIQ_Handler.extern mainBL main LDRr0, =0 x78100000LDRr1, =0 x2A8STRr1, r0LDRr0, =0 x78100008LDRr1, =0 x1STRr1, r0五、软件工程的编译链接开发流程之三:工程编译工程文件源代码文件链接文件函数库文件调试信息文件工程编译相关文件工程文件 (*.ews、*.pjf) 工作区文件*.ews 工程文件*.pjf 工程创建与配置自动生成,禁止用户修改链接脚本文件 (*.ld) 遵照脚本文件格式,用户复制示例或手工输入 编写根据用户

8、软件设计和电路存储区安排函数库文件( *.lib、*.a) Embest IDE附带的标准嵌入式C函数库 用户自己编写的函数库文件类型在系统级别的嵌入式开发中需要使用链接定位文件,该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定位,该文件称为链接脚本文件(*.ld)SECTIONS. = 0 x0C000000;Image_RO_Base = .;.text : *(.text) ;Image_RO_Limit = .;Image_RW_Base = .;.data : *(.data) ;.rodata : *(.rodata)

9、;Image_ZI_Base = .;.bss : *(.bss) ;Image_ZI_Limit = .;Image_RW_Limit = .;_bss_start_ = .;_bss_end_ = .;_EH_FRAME_BEGIN_ = .;_EH_FRAME_END_ = .;PROVIDE (_stack = .);end = .;_end = .;.debug_info0 : *(.debug_info) .debug_line0 : *(.debug_line) .debug_abbrev0 : *(.debug_abbrev) .debug_frame0 : *(.debug_

10、frame) 赋当前地址,可能为RAM或Flash的访问地址只读区域基地址,启动程序中使用的符号代码段,在这里标识开始放置程序代码只读区域长度,启动程序中使用的符号读写区域基地址,启动程序中使用的符号数据段, 程序中已初始化的全局变量放在该段只读数据段,程序中静态全局变量等固定值放在该段清零区域基地址, 启动程序中使用的符号包含未初始化的全局可用数据, 如未初始化全局变量清零区域长度, 启动程序中使用的符号读写区域基长度, 启动程序中使用的符号调试信息gcc库专用链接脚本文件及示例int A1;int A2 =5;const int A3 = 10;void main()int A4;regi

11、ster int A5;A4 = A3;.text : *(.text) ; 代码段,在这里标识从0开始放置程序代码 .rodata : *(.rodata) ;只读数据段,程序中静态全局变量等固定值放在该段.data : *(.data) ; 数据段, 程序中已初始化的全局变量放在该段.bss : *(.bss) ; 包含未初始化的全局可用数据, 如未初始化全局变量变量A1作为未初始化的变量将保存在 .bss 段中变量A2 作为已初始化的变量将保存在 .data 段中常量A3保存在只读数据断 .rodata 段中main函数对应的代码保存在 .text 段中寄存器变量A5直接保存在ARM的一

12、个寄存器中局部变量A4当程序执行到main函数时存放在main函数对应的函数栈中链接脚本与程序的对应链接标准函数库链接排列顺序为-lm-lc-lgcc -lgEmbest IDE附带的GNU标准函数库标准C函数库 libc.a -lc标准数学函数库 libm.a -lm标准函数库的支持库libg.a-lgGCC的支持库libgcc.a-lgcc函数库的支持模式ARMLittle-EndianARMLittle-EndianInterworkARMBig-EndianARMBig-EndianInterworkThumbLittle-EndianThumbLittle-EndianInterwo

13、rkThumbBig-EndianThumbBig-EndianInterwork编译器配置包含文件目录编译目标文件输出目录编译器预定义设置使用ARM指令、THUMB指令或交互方式设置编译的字节顺序汇编器配置包含文件目录;汇编输出文件目录汇编预定义ARM/THUMB指令或交互工作方式编码字节顺序链接器配置设置使用的链接脚本文件设置输出的调试信息文件设置入口文件设置链接的用户函数库或标准函数库六、软件调试开发流程之四:调试准备存储区映像文件命令脚本文件调试步骤 调试配置连接和下载控制执行调试信息观察在软件调试过程中访问非法存储区在部分处理器和目标板上会产生异常,如果异常没有处理,则会导致软件调试

14、过程无法继续,为了防止以上问题并调整仿真器访问速度以达到最合适的水平,而提供的一种用于描述各个存储区性质的文件叫存储区映像文件(*.map) 文件格式存储区映像文件用户一般不用关注以下选项总线宽度、访问尺寸、读等待、写等待、高速访问等待名称起始地址长度属性存储区映像文件示例调试命令列表BKPTCLEAR 清除断点BKPTDATA 设置数据断点BKPTINST 设置指令断点BKPTLIST 断点列表DISASM 反汇编DOWNLOAD 文件下载GO 执行程序HELP 显示帮助信息MEMREAD 存储区读MEMWRITE 存储区写REFRESH 刷新窗口REGLIST 寄存器列表REGREAD 寄

15、存器读REGWRITE 寄存器写RESET 复位目标设备SCRIPT 执行脚本文件STEP 单步执行程序STOP 停止执行程序SYMBOL 载入符号文件MEMWRITE 存储区写语 法: memwrite e 地址 数值 说 明: 向存储区指定地址写入数值 地址 要写入数值的存储区地址 数值 待写数值 选 项: -e 大端方式写入 示例: memwrite 0 x1000 0 x5A 向地址0 x1000处写入数值0 x5A memwrite -e 0 x2000000 0 x22334455 等效于memwrite 0 x2000000 0 x55443322控制台调试命令命令脚本文件命令脚

16、本文件在集成环境与目标连接时、软件调试过程中以及目标板复位后,有时需要集成环境自动完成一些特定的操作,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等。这些操作可以通过执行一组命令序列来完成,保存一组命令序列的文本文件称为命令脚本文件(*.cs)命令脚本的执行方法方法一 在工程设置对话框调试选项中在“连接后行为”中指定连接后执行命令脚本文件 方法二 在集成环境连接目标板后,在调试命令窗口里执行 Script 命令脚本文件名 命令脚本文件示例调试配置设置连接后执行的命令脚本设置调试信息文件设置下载文件设置下载到RAM区地址复位运行停止重新运行单步进入函数单步执行单步跳出函数执行到光标设置

17、断点禁止断点控制程序执行观察调试信息存储区窗函数栈窗观察窗变量窗寄存器窗外围寄存器窗寄存器窗口值已修改寄存器窗外围寄存器寄存器树值已修改值已修改寄存器名值已修改寄存器组七、可执行文件固化开发流程之五:生成可执行文件源文件*.Elf*.Bin(编译)(Elf to Bin)程序固化命令中断和退出执行Flash操作命令时,本按钮提供中断命令功能,其他情况时为关闭应用程序数据上载读取整个FLASH芯片数据或芯片部分扇区数据,并保存为BIN格式文件,文件名由用户在编程子对话框中指定。芯片保护对整个FLASH芯片或芯片部分扇区执行保护操作。效验和读取整个FLASH芯片数据或芯片部分扇区数据,计算并显示所有数据的效验和(字节和基于2的补码)。文件校验读取FLASH芯片数据,与选择的编程数据文件进行比较,如果遇到不同的数据,软件停止校验操作,并显示不同单元的地址。编程对整个FLASH或部分扇区进行编程,用户可以设置编程前自动擦除以及编程过程中自动校验。芯片擦除根据用户设置擦除整个FLASH芯片数据或擦除芯片部分扇区数据。全空检查检查Flash是否处于空白状态,当遇到非空单元时,软件退出检查,并显示非空单元的地址和数据。选择要编程的Bin文件选择上载的Bi

温馨提示

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

评论

0/150

提交评论