volatile关键字 应该用于保护同时访问的变量, 也就是说, 异步存取的变量, 例如, 中断程序或在分离线程中执行的代码。当存取这种变量时,编译器就会总是读取或者写入内存。 空循环, 也就是说, 代码除了实现延时外不起任何作用, 可能会被编译器删除。取而代之的是, 使用操作系统服务, 内置函数, CPU定时器, 或存取 volatile 声明的变量。 长的基础块 应该尽可能创建。基础块是一种不能中断的无函数调用的源代码序列。便于更高效的寄存器分配和更好的最优化结果。 考虑硬件和软件因素 典型地, 为专用的微型控制器编写的嵌入式软件可以设计成一个无限循环, 等待来自外部的一些事件。软件放置在ROM中且在复位时执行。当你编写这类软件时, 必须考虑一些硬件和软件的因素。 处理器的特性和约束 你使用的微型控制器提供的特性, 例如指令集内部机理, 不同的处理模型和对齐约束等, 都需要全面了解。要正确配置它们, 非常重要的是阅读和理解该硬件的文档。 编译器支持这些特性靠的是, 例如, 扩展的关键字, Pragma 指令 和编译选项。 当在IDE中建立你的项目时, 必须选择设备选项,以适合你使用的设备。它会自动选择: ● 设置 CPU特有选项来匹配你所用的设备 ● 确定默认的链接器配置文件 (基于你的产品软件包) 基于你的产品软件包, target\config 目录包含链接器配置文件的模板, 或者某些或所有支持的设备的现成的链接器配置文件。 有文件扩展名xcl或icf的文件,分别对应XLINK和ILINK。 ● 确定默认的设备说明文件 这些文件位于 target\config 目录,并且具有文件扩展名ddf或 svd (取决于你的产品软件包)。
|