1 / 86

嵌入式系统开发及试验教学系统

嵌入式系统开发及试验教学系统. 一、软件介绍 二、 S3CEV40 硬件组成简介. 一、软件介绍. 1. 开发环境 2 、开发流程 3 、工程的建立与配置 4 、编写软件源文件 5 、软件工程的编译链接 6 、软件调试 7 、可执行文件固化 8 、高级调试技术 9 、高级软件设计. 1. 开发环境. Embest IDE. Embest IDE 开发环境. ARM 开发板. Embest 仿真器. 开发环境的组成. 开发环境的连接. Embest IDE. 工程管理区 代码编辑区 寄存器窗口 信息提示区 存储器区 变量窗口

eyal
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. 嵌入式系统开发及试验教学系统 • 一、软件介绍 • 二、S3CEV40硬件组成简介

  2. 一、软件介绍 • 1.开发环境 • 2、开发流程 • 3、工程的建立与配置 • 4、编写软件源文件 • 5、软件工程的编译链接 • 6、软件调试 • 7、可执行文件固化 • 8、高级调试技术 • 9、高级软件设计

  3. 1.开发环境

  4. Embest IDE Embest IDE 开发环境 ARM 开发板 Embest 仿真器 开发环境的组成

  5. 开发环境的连接

  6. Embest IDE 工程管理区 代码编辑区 寄存器窗口 信息提示区 存储器区 变量窗口 数据观察区 函数栈窗口 …… Embest IDE界面

  7. Embest IDE特征 • 支持所有ARM7,ARM9系列处理器; • 支持开发语言:C和汇编; • 支持Windows 98、XP、NT及2000等操作系统; • 源码编辑器:支持标准的文本编辑功能,支持语法分色显示。 • 图形化的工程管理与设置,图形化设置编译连接选项。 • 调试功能:可进行程序下载、断点设置、单步执行、异常处理等,可查看修改存储区、寄存器、外围寄存器、变量,可查看函数栈,显示反汇编指令及源文件交叉显示。 • 丰富的例程:提供Atmel、Samsung、Cirrus Logic、OKI等多家公司ARM处理器的调试程序示例和使用说明。 • 配合Embest PowerICE仿真器,速度达120KBytes/秒。

  8. 增强型仿真器 PowerICE 120KByte/S 标准型仿真器 Emulator 25Kbyte/S Embest 仿真器

  9. 2、开发流程

  10. 汇编源程序*.s 源文件 • C语言程序*.c 编译 • 链接脚本文件*.ld 调试 固化 开发流程 工程建立

  11. 3、工程的建立与配置

  12. 配置处理器 配置调试设备 工程的建立与配置步骤 建立软件工程

  13. 输入工程名和要保存工程的路径名 选择File菜单项中的建立新工程选项 用户可以在工作区内自由添加各种文件 建立软件工程 创建新工程

  14. 处理器配置 配置ARM7 ARM9 配置芯片厂家 配置具体芯片型号

  15. 配置 Jtagarm7 Jtagarm9 PowerICEARM7 PowerICEARM9 SimArm 配置调试设备 PC和仿真器通讯设置 PC和仿真器通讯设置

  16. 4、编写软件源文件

  17. 软件源文件的形式(语言) • 汇编语言文件 • 汇编代码文件 *.s • 汇编包含文件 *.mac • 标准C语言文件 • C代码文件 *.c • C包含文件 *.h

  18. 系统复位后开始执行的程序部分 • 汇编代码200行,执行空间1KB • 启动程序执行完后开始执行的部分 • C源代码10000~50000行,100KB ~ 500KB 软件源文件的形式(功能) • 启动程序文件 • 应用程序文件

  19. 启动代码说明 • 启动代码是用来初始化电路以及用来为高级语言写的软件做好运行前准备的一小段汇编语言,是任何处理器上电复位时的程序运行入口点 • 功能 • 电路初始化 • 为高级语言编写的软件运行做准备 • 特征 • 汇编语言 • 程序复位运行入口点

  20. 看门狗及外围电路初始化 设置中断、异常向量 系统寄存器配置 存储区电路初始化 变量初始化 数据区准备 高级语言入口函数调用 初始化栈指针 启动流程

  21. # IRQ mode MOV R0, #Mode_IRQ MSR CPSR_c, R0 LDR R13, =IRQ_Stack # SVC mode MOV R0, #Mode_SVC MSR CPSR_c, R0 LDR R13, =SVC_Stack B Reset_Handler B Undefined_Handler B SWI_Handler B Prefetch_Handler B Abort_Handler NOP B IRQ_Handler B FIQ_Handler LDR r0, =0x78100000 LDR r1, =0x2A8 STR r1, [r0] LDR r0, =0x78100008 LDR r1, =0x1 STR r1, [r0] 变量初始化、数据区准备 .extern main BL main 设置中断、异常向量 高级语言入口函数调用 初始化栈指针 配置存储区 典型启动流程

  22. 5、软件工程的编译链接

  23. 工程文件 源代码文件 链接文件 函数库文件 调试信息文件 工程编译 工程编译相关文件

  24. 文件类型 • 工程文件 (*.ews、*.pjf) • 工作区文件*.ews 工程文件*.pjf • 工程创建与配置自动生成,禁止用户修改 • 链接脚本文件 (*.ld) • 遵照脚本文件格式,用户复制示例或手工输入 • 编写根据用户软件设计和电路存储区安排 • 函数库文件( *.lib、*.a) • Embest IDE附带的标准嵌入式C函数库 • 用户自己编写的函数库

  25. 赋当前地址,可能为RAM或Flash的访问地址 只读区域基地址,启动程序中使用的符号 读写区域基地址,启动程序中使用的符号 清零区域基地址, 启动程序中使用的符号 读写区域基长度, 启动程序中使用的符号 链接脚本文件及示例 SECTIONS { . = 0x0C000000; Image_RO_Base = .; .text: { *(.text) }; Image_RO_Limit = .; Image_RW_Base = .; .data : { *(.data) }; .rodata : { *(.rodata) }; 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_info 0 : { *(.debug_info) } .debug_line 0 : { *(.debug_line) } .debug_abbrev 0 : { *(.debug_abbrev)} .debug_frame 0 : { *(.debug_frame) } }

  26. 链接脚本文件比较 RAM地址 只读数据 链接脚本文件比较 在RAM中调试 在Flash中固化 FLASH地址 SECTIONS { . = 0x0C000000; Image_RO_Base = .; .text : { *(.text) }; Image_RO_Limit = .; Image_RW_Base = .; .data : { *(.data) }; .rodata : { *(.rodata) }; Image_ZI_Base = .; .bss : { *(.bss) }; Image_ZI_Limit = .; Image_RW_Limit = .; …… SECTIONS { . = 0x00000000; Image_RO_Base = .; .text : { *(.text) }; .rodata : { *(.rodata) }; Image_RO_Limit = .; . = 0x0C000000; Image_RW_Base = .; .data : { *(.data) }; Image_ZI_Base = .; .bss : { *(.bss) }; Image_ZI_Limit = .; Image_RW_Limit = .; ……

  27. int A1; int A2 =5; const int A3 = 10; void main() { int A4; register int A5; A4 = A3; } 变量A1作为未初始化的变量将保存在 .bss 段中 变量A2 作为已初始化的变量将保存在 .data 段中 main函数对应的代码保存在 .text 段中 局部变量A4当程序执行到main函数时 存放在main函数对应的函数栈中 寄存器变量A5直接保存在ARM的一个寄存器中 .text : { *(.text) }; 代码段,在这里标识从0开始放置程序代码 .rodata : { *(.rodata) };只读数据段,程序中静态全局变量等固定值放在该段 .data : { *(.data) }; 数据段, 程序中已初始化的全局变量放在该段 .bss : { *(.bss) }; 包含未初始化的全局可用数据, 如未初始化全局变量 链接脚本与程序的对应

  28. 标准C函数库 libc.a -lc 标准数学函数库 libm.a -lm 标准函数库的支持库libg.a -lg GCC的支持库libgcc.a -lgcc • ARMLittle-Endian • ARMLittle-EndianInterwork • ARMBig-Endian • ARMBig-EndianInterwork • ThumbLittle-Endian • ThumbLittle-EndianInterwork • ThumbBig-Endian • ThumbBig-EndianInterwork 链接标准函数库 Embest IDE附带的GNU标准函数库 链接排列顺序为 -lm -lc -lgcc  -lg 函数库的支持模式

  29. 设置使用ARM指令、THUMB指令 或交互方式 设置编译的字节顺序 编译器配置 编译目标文件 输出目录 编译器预定义

  30. ARM/THUMB指令 或交互工作方式 编码字节顺序 包含文件目录; 汇编输出文件目录 汇编预定义 汇编器配置

  31. 设置链接的用户函数库或标准函数库 设置入口文件 设置使用的 链接脚本文件 设置输出的 调试信息文件 链接器配置

  32. 6、软件调试

  33. 存储区映像文件 命令脚本文件 调试配置 连接和下载 控制执行 调试信息观察 调试步骤 调试准备

  34. 件 格 式 存储区映像文件 • 在软件调试过程中访问非法存储区在部分处理器和目标板上会产生异常,如果异常没有处理,则会导致软件调试过程无法继续,为了防止以上问题并调整仿真器访问速度以达到最合适的水平,而提供的一种用于描述各个存储区性质的文件叫存储区映像文件(*.map)

  35. 用户一般不用关注以下选项 总线宽度、访问尺寸、读等待、写等待、高速访问等待 存储区映像文件示例 名称 起始地址 长度 属性

  36. MEMWRITE – 存储区写 语 法: memwrite [–e] 地址 数值 说 明: 向存储区指定地址写入数值 地址 要写入数值的存储区地址 数值 待写数值 选 项: -e 大印第安方式写入 示例: memwrite 0x1000 0x5A 向地址0x1000处写入数值0x5A memwrite -e 0x2000000 0x22334455 等效于memwrite 0x2000000 0x55443322 控制台调试命令 调试命令列表 BKPTCLEAR –清除断点 BKPTDATA –设置数据断点 BKPTINST –设置指令断点 BKPTLIST –断点列表 DISASM –反汇编 DOWNLOAD –文件下载 GO –执行程序 HELP –显示帮助信息 MEMREAD –存储区读 MEMWRITE –存储区写 REFRESH –刷新窗口 REGLIST –寄存器列表 REGREAD –寄存器读 REGWRITE –寄存器写 RESET –复位目标设备 SCRIPT –执行脚本文件 STEP –单步执行程序 STOP –停止执行程序 SYMBOL –载入符号文件

  37. 命令脚本文件 • 在集成环境与目标连接时、软件调试过程中以及目标板复位后,有时需要集成环境自动完成一些特定的操作,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等。这些操作可以通过执行一组命令序列来完成,保存一组命令序列的文本文件称为命令脚本文件(*.cs) 命令脚本的执行方法 方法一 在工程设置对话框调试选项中在“连接后行为”中指定连接后 执行命令脚本文件 方法二 在集成环境连接目标板后,在调试命令窗口里执行 Script 命令脚本文件名

  38. 命令脚本文件示例

  39. 设置下载文件 设置调试信息文件 设置连接后 执行的命令脚本 设置下载到 RAM区地址 调试配置

  40. 禁止断点 复位 设置断点 运行 执行到光标 停止 单步跳出函数 单步执行 重新运行 单步进入函数 控制程序执行

  41. 观察调试信息 函数栈窗 观察窗 变量窗 存储区窗 寄存器窗 外围寄存器窗

  42. 值已修改 寄存器组 值已修改 寄存器名 寄存器树 寄存器窗口 值已修改 寄存器窗 外围寄存器 值已修改

  43. 按照二进制或十六进制修改寄存器值 寄存器域值下拉选择 寄存器域起始结束位 寄存器域缩写符号 寄存器域当前值 寄存器域当前值意义 悬浮提示,列举寄存器域所有可设置值及其含义 外围寄存器窗细节窗口

  44. 7、可执行文件固化

  45. (编译) (Elf to Bin) 生成可执行文件 源文件 *.Elf *.Bin

  46. 程序固化 文件校验 读取FLASH芯片数据,与选择的编程数据文件进行比较,如果遇到不同的数据,软件停止校验操作,并显示不同单元的地址。  全空检查 检查Flash是否处于空白状态,当遇到非空单元时,软件退出检查,并显示非空单元的地址和数据。 数据上载 读取整个FLASH芯片数据或芯片部分扇区数据,并保存为BIN格式文件,文件名由用户在编程子对话框中指定。  效验和 读取整个FLASH芯片数据或芯片部分扇区数据,计算并显示所有数据的效验和(字节和基于2的补码)。  编程 对整个FLASH或部分扇区进行编程,用户可以设置编程前自动擦除以及编程过程中自动校验。 命令中断和退出 执行Flash操作命令时,本按钮提供中断命令功能,其他情况时为关闭应用程序 芯片保护 对整个FLASH芯片或芯片部分扇区执行保护操作。  选择上载的Bin文件 保存路径和名称 选择要编程的Bin文件

  47. 程序固化—CPU设置 显示当前选择处理器的内部功能寄存器名称、初始缺省值,写入数值,并可以修改。 选择CPU的型号 设置需要写入的存储区地址、数据以及宽度。 CUP编码方式设置 复位电路;测试寄存器;测试存储区;测试RAM;读取FLASH标识 读取目标板上所有写入寄存器列表中的寄存器数据,并显示在数值(Value)栏

  48. 程序固化—FLASH设置 选择数据访问宽度:8、16或32位。 选择使用的FLASH芯片数目:1、2或4片。 选择FLASH要编程的扇区范围 选择FLASH的型号 设置FLASH 烧写地址 按顺序显示该芯片包含的扇区编号、大小以及每个扇区的起始地址。

  49. Data Abort 数据访问中止 • Prefetch Abort 指令预取中止 异常的捕获与处理 • 定位出错程序常用调试手段 • 捕获异常 • 观察信息 • R14 (LR) 寄存器,保存返回地址 • SPSR 寄存器,保存处理器当前状态及标志等

  50. 调试在Flash中固化的程序 • 调试需求 • 启动程序调试 • 固化程序与RAM中调试程序运行结果不一致 • 调试过程 • 固化程序到Flash中 • 配置固化程序对应的调试信息文件 • 连接系统并复位,PC指向零地址 • 与RAM调试方式的区别 • 最多设置两个硬件断点

More Related