文档详情

嵌入式系统7(ARM下的C编程)分析.ppt

发布:2017-01-06约6.24千字共44页下载文档
文本预览下载声明
volatile 不是ARM C特有的,只是ARM中比较常用 例如对I/O端口寄存器的操作 volatile unsigned int *port = (unsigned int *)0xC000; *port = value; //写端口 value = *port; //读端口 告诉编译器该变量可能在程序之外修改 编译时不能优化对volatile变量的操作 不能对volatile变量使用缓冲技术 西安电子科技大学计算机学院 * { a = 2; b= a; } 西安电子科技大学计算机学院 * { a = 2; b= 2; } { *port = 0x00; *port = 0x01; *port = 0x00; *port = 0x01; } { *port = 0x01; } 编译器可能的优化 编译器可能的优化 4 ARM连接器 ADS中包含了连接器armlink armlink可将编译得到的ELF格式的目标文件以及相关的C运行时库进行连接,最终生成ELF格式的映象文件。 西安电子科技大学计算机学院 * 目标文件的结构 * CODE DATA .text .data .bss 执行代码 常量 有初值的全局变量或静态变量 无初值的全局变量或静态变量 RO RW ZI 高地址 低地址 Linux ARM CPU 连接器的作用 将多个目标文件或库文件按照各文件中的段进行统一编址 生成一个完整的统一的地址映像 嵌入式系统中一般生成一个绝对地址映像 在有MMU(存储器管理器)的系统中可以每个任务单独分配一个地址空间 西安电子科技大学计算机学院 * 连接器的作用(图示) * RAM Based ROM Base code1 data1 const2 data2 bss2 code3 data3 code2 code1 code3 code2 const2 data1 bss3 data2 data3 bss2 bss3 RW RO Link file1.o file2.o file3.o file.out 连接器的配置原则(ARM) 映射本着RO第一、RW第二,ZI最后的原则来进行配置。在同一模块里,代码的配置要优先于数据。然后,链接器按名字字母的顺序来配置输入部分,输入部分的命名根据汇编程序的指令性管理文件来进行。 如要求对代码和数据进行精确的配置,此用户可以不受这些原则约束。通过scatterloading机制实现对代码和数据的完全配置 (具体决定目标文件的各自存放位置)。 * 5.1 加载时域和运行时域 目标文件既要参与程序链接又要参与程序执行 * 5.2 基于ROM的程序执行 * RW RO 0x0200 0000 0x0000 0000 ROM 0xA400 0000 0xA000 0000 RAM Load View RW RO Execute View ZI Copy Fill with 0 0x0200 0000 0x0000 0000 ROM 0xA400 0000 0xA000 0000 RAM 5.3 基于RAM的程序执行 * RW RO 0x0200 0000 0x0000 0000 ROM 0xA400 0000 0xA000 0000 RAM Load View RW RO Execute View ZI Copy Fill with 0 0x0200 0000 0x0000 0000 ROM 0xA400 0000 0xA000 0000 RAM 基于RAM的程序执行 * RW RO Load View RW RO Execute View ZI Copy Fill with 0 不连续 0x0200 0000 0x0000 0000 ROM 0xA400 0000 0xA000 0000 RAM 0x0200 0000 0x0000 0000 ROM 0xA400 0000 0xA000 0000 RAM 5.4 Remap(地址重映射) * 为什么我们需要REMAP? 系统启动往往是从ROM开始的,所以ROM BOOT的地址必须是0地址(ARM的规定),但是直接进入ROM的速度通常比到RAM的速度慢,另外,在ROM中分配向量表后就不能在运行时对其进行修改。 调试系统初始化的一般过程 * 嵌入式系统软件开发环境图示 * 编译器 汇编器 liber 连接器 编辑 环境 软件设计 交叉开发环境IDE Monitor (调试,跟踪) 转换程序 Emulator 目 标 板 烧结程序 串口,并口,以太网,USB 项目 管理 传统的开发环境 西安电子科技大学计算机学院 * 谢谢! 嵌入式系统 第七讲 ARM下的C编程 西安电子科技大学计算机学院 * 本节内容 ARM中的C/
显示全部
相似文档