嵌入式软件系统设计
Linux操作系统
GNU + GDB
4
ARM软件开发流程和开发工具
ARM嵌入式开发模式( ARM ADS/SDT + 调试器)
5
ARM软件开发流程和开发工具
ADS与Multi-ICE
ARM ADS全称为ARM Developer Suite,是ARM公司 推出的用于ARM程序设计、开发和调试的集成开发 工具。现在ADS的最新版本是1.2,它取代了早期 的ADS1.1和ADS1.0。 ADS由命令行开发工具,ARM运行时库,图形化集 成开发环境(Code Warrior和AXD),实用程序和支段
符号
Image_RO_Limit Image_RW_Base Image_ZI_Base Image_ZI_Limit
20
ARM软件设计与代码分析
链接脚本示例
程序在SDRAM中运行
程序在FLASH中运行
21
ARM软件设计与代码分析
图形化集成开发环境(Code Warrior和 AXD)
CodeWarrior for ARM
ADS调试器
实用程序
fromELF armar
Flash downloader
支持的软件
ARMulator
9
ARM软件开发工具-ADT IDE简介
ADT IDE for ARM
在基于ARM920T core的嵌入式系统中,系统在 上电或复位时都从地址0x00000000开始执行,因 此在这个地址处安排的通常就是系统的启动代码。 它通常也是BootLoader程序的一部分,可以在启 动代码基础上编写BootLoader。 用汇编语言编写。 启动代码是在复位后运行其它程序之前运行的一 段小程序。通过它,初始化硬件设备、建立内存 空间的映射图,从而将系统的软硬件环境带到一 个合适的状态,以便为最终调用C函数准备好正 确的环境。
6
ARM软件开发流程和开发工具
ADS命令行开发工具
ARM C(C++)编译器 ARM汇编器(armasm) ARM链接器(armlink) 符号调试器(armsd)
7
ARM软件开发流程和开发工具
ARM运行时库
ANSI C函数库:(armlib) C++函数库:
8
ARM软件开发流程和开发工具
嵌入式操作系统移植
Linux Windows CE uC/OS II uClinux Nucleus
15
ARM软件设计与代码分析
BSP板级支持包
功能 为应用程序提供统一的硬件操作接口 特征
高度硬件相关
高度依赖于具体硬件平台
各种操作系统各异
16
ARM软件设计与代码分析
连接.o arm-elf-ld
操作文件
生成bin文件
elf2bin
汇编文件.S
C文件.c 链接脚本文件ldscript
arm-elf-objcopy
19
库文件.o .lib .a
ARM软件设计与代码分析
链接脚本
段 Text段 rodata段 GCC库专用
嵌入式系统
嵌入式软件系统设计
2013
1
提纲
第六章 嵌入式软件系统设计
1
嵌入式软件开发过程
2
ARM软件开发流程和开发工具
3
ARM软件设计与代码分析
2
ARM软件开发流程和开发工具
常用调试方法
软件仿真 驻留监控程序
硬件要求高,一般在硬件稳定之后进行
需要占用目标板上的一部分资源
不能对程序的全速运行进行完全仿真
应用程序开发(操作系统)
功能
GUI图形、人机交互
控制
算法
特征 硬件依赖程度小 部分可仿真调试 各种操作系统各异
17
ARM软件设计与代码分析
嵌入式软件设计和调试流程
编辑 创建工程 添加文件、编写程序 调试
连接调试器
下载程序
汇编语言加C语言
编译
运行、调试
固化 通过仿真器烧写flash 专用或通用的编程器 通过bootloader烧写flash
18
配置编译、汇编和连接参数
编写连接脚本文件 编译
ARM软件设计与代码分析
交叉编译
GNU交叉编译 编译.c arm-elf-gcc 汇编.S arm-elf-gas 生成调试格式文件.elf DWARF-1 DWARF-2
关中断
硬件寄存器初始化
特征
通常用汇编语言编写
(GPIO配置、总线配
置、PLL时钟) 初始化栈指针 数据区初始化 C入口函数调用 BL Main
12
程序复位运行入口点
代码量非常小
ARM软件设计与代码分析
应用程序(无操作系统)
功能 硬件驱动 应用
特征
通常用C语言或者嵌入式汇编语言编写
程序较复杂,代码量较大
13
ARM软件设计与代码分析
bootloader
功能
硬件初始化
引导操作系统 下载程序(串口、网口、USB) 烧写flash 特征 程序复位运行入口点 通常用汇编语言+C语言编写 代码量较小
14
ARM软件设计与代码分析
JTAG仿真器
完全非插入式调试,不使用片上资源,无需目标存储器仿
真效果更加接近于目标硬件 在线仿真器
3
ARM软件开发流程和开发工具
ARM主流开发工具
Windows操作系统
ARM ADS/SDT + 调试器 GNU + Cygwin + 调试器 ARM SDT + 简易电缆 KEIL 4.13 + 调试器
10
ARM软件设计与代码分析
嵌入式软件开发
无操作系统的软件开发 启动代码 应用程序
基于操作系统的软件开发
bootloader
操作系统移植
BSP板级支持包 应用程序开发
11
ARM软件设计与代码分析
启动代码
功能 硬件初始化 引导C代码
程序流程 设置中断、异常入口
GCC库
GCC库 标准C函数库lib.a 标准数学函数库libm.a -lc -lm
标准函数库的支持库libg.a -lg
GCC的支持库libgcc.a -lgcc
链接排列顺序
-lm –lc –lgcc -lg
22
ARM软件设计与代码分析
JXARM9-2410启动代码分析