|
|
@@ -0,0 +1,258 @@ |
|
|
|
## IAR相关知识点 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 1.工程操作 |
|
|
|
|
|
|
|
#### 1.1各类型文件含义 |
|
|
|
|
|
|
|
##### 1.1.1工程核心文件 |
|
|
|
|
|
|
|
| 扩展名 | 名称 | 作用 | |
|
|
|
| :----: | :------------------: | :----------------------------------------------------------: | |
|
|
|
| .ewp | IAR 工程文件 | 存储工程配置(编译器选项、链接器设置、包含路径等) | |
|
|
|
| .ewt | 嵌入式工作台模板文件 | 用于存储工程或文件的模板配置,方便快速创建具有相同设置的新项目。 | |
|
|
|
| .eww | IAR 工作空间文件 | 管理多个工程(.ewp)的集合,方便同时打开多个关联工程 | |
|
|
|
| .dep | 依赖文件 | 自动生成,记录源文件的依赖关系(如头文件引用),用于增量编译 | |
|
|
|
|
|
|
|
##### 1.1.2源代码文件 |
|
|
|
|
|
|
|
| 扩展名 | 名称 | 作用 | |
|
|
|
| --------- | :-------: | :-------------------------------------------------: | |
|
|
|
| .c | C源文件 | 主程序代码 | |
|
|
|
| .cpp/.cxx | c++源文件 | c++程序代码 | |
|
|
|
| .h | 头文件 | 函数声明、宏定义、类型声明 | |
|
|
|
| .s/.asm | 汇编文件 | 底层硬件操作或高性能代码 | |
|
|
|
| .icf | 链接脚本 | 控制内存分配(Flash/ROM、RAM 布局)关键硬件相关文件 | |
|
|
|
|
|
|
|
##### 1.1.3编译输出文件 |
|
|
|
|
|
|
|
| 扩展名 | 名称 | 作用 | |
|
|
|
| ------ | :--------------: | :---------------------------------------------------------: | |
|
|
|
| .out | ELF 格式输出文件 | 包含调试信息的可执行文件(用于下载和调试) | |
|
|
|
| .hex | Intel HEX 文件 | 烧录到芯片的标准十六进制格式 | |
|
|
|
| .bin | 二进制镜像 | 裸机烧录文件(无地址信息,需配合烧录工具指定地址) | |
|
|
|
| .map | 内存映射文件 | 详细展示代码/数据在内存中的分布(分析栈溢出、内存占用必看) | |
|
|
|
| .lst | 列表文件 | 汇编与源码混合视图(用于优化和调试) | |
|
|
|
|
|
|
|
##### 1.1.4调试相关文件 |
|
|
|
|
|
|
|
| 扩展名 | 名称 | 作用 | |
|
|
|
| -------- | :--------------: | :----------------------------------------: | |
|
|
|
| .cspybat | C-SPY 批处理文件 | 自动化调试脚本(初始化寄存器、批量设断点) | |
|
|
|
| .ddf | 设备描述文件 | 定义芯片寄存器(用于调试器外设视图) | |
|
|
|
| .board | 开发板描述文件 | 配置板级硬件(时钟、引脚复用等) | |
|
|
|
| .mac | 调试宏文件 | 扩展调试器功能(如自定义内存填充检测) | |
|
|
|
|
|
|
|
##### 1.1.5配置与中间文件 |
|
|
|
|
|
|
|
| 扩展名 | 名称 | 作用 | |
|
|
|
| --------------- | :----------: | :----------------------------------: | |
|
|
|
| .custom_argvars | 环境变量配置 | 存储用户自定义环境变量(如编译路径) | |
|
|
|
| .settings | IDE 设置文件 | 保存编辑器偏好(字体、颜色方案等) | |
|
|
|
| .o/.obj | 目标文件 | 单个源文件的编译结果(链接时合并) | |
|
|
|
| .d | 依赖信息文件 | Makefile 使用的依赖规则 | |
|
|
|
|
|
|
|
##### 1.1.6特殊工具文件 |
|
|
|
|
|
|
|
| 扩展名 | 名称 | 作用 | |
|
|
|
| ------ | :--------------: | :--------------------------------------: | |
|
|
|
| .xcl | XLINK 链接器配置 | 高级链接控制(段重命名、优化选项) | |
|
|
|
| .i | 预处理输出文件 | 展开宏和头文件后的源码(排查宏错误必备) | |
|
|
|
| .sbr | 浏览信息文件 | 用于代码导航(函数调用关系) | |
|
|
|
|
|
|
|
#### 1.2新建/打开工作区 |
|
|
|
|
|
|
|
软件左上角File菜单内点击New workspace即可创建新的工作区,如需要打开选择Open即可。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708131909282.png" alt="image-20250708131909282" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 1.3新建/打开工程 |
|
|
|
|
|
|
|
工作区新建/打开完成后,选择上方的Project,选择Create New project选择创建类型并命名和存档后完成新建工程。 |
|
|
|
|
|
|
|
打开工程选择Add。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708131945592.png" alt="image-20250708131945592" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 1.4工作区中导入/添加工程 |
|
|
|
|
|
|
|
选择上方的Project,点击Add Existing Project,便可以添加项目。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708132254972.png" alt="image-20250708132254972" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 1.5新建分组 |
|
|
|
|
|
|
|
右键项目名称,选择Add Group,新建分组 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708132546212.png" alt="image-20250708132546212" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 1.6新建/打开文件 |
|
|
|
|
|
|
|
右键项目名称,选择Add File,新建文件。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708133238110.png" alt="image-20250708133238110" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 1.7工程目录与文件目录的关系 |
|
|
|
|
|
|
|
工程目录是文件目录的容器,通过相对路径引用文件目录中的资源。 |
|
|
|
|
|
|
|
工程目录主要负责项目配置和构建控制,而文件目录则是源代码的物理存储位置。两者通过工程文件中的引用关系连接起来,形成完整的开发环境结构。 |
|
|
|
|
|
|
|
### 2.工程配置 |
|
|
|
|
|
|
|
#### 2.1设备配置 |
|
|
|
|
|
|
|
右键工程文件,选择Options,进入工程配置,选择需要的单片机设备型号。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708135420393.png" alt="image-20250708135420393" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 3.编译配置 |
|
|
|
|
|
|
|
#### 3.1优化等级 |
|
|
|
|
|
|
|
右键Options,选择C/C++ --> Optimizations ,进行优化等级配置。 |
|
|
|
|
|
|
|
<img src="./Pictures/image-20250709180547755.png" alt="image-20250709180547755" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 3.2硬件浮点 |
|
|
|
|
|
|
|
General Options 界面,选择32bit或64bit,选择fpu功能是否开启。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708140541188.png" alt="image-20250708140541188" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 3.3预处理 |
|
|
|
|
|
|
|
右键Options,选择C/C++ --> Preprocessor ,Defined symbols进行预处理。 |
|
|
|
|
|
|
|
<img src="./Pictures/image-20250709180618391.png" alt="image-20250709180618391" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 3.4链接文件 |
|
|
|
|
|
|
|
Linker页面设置链接文件。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708142245783.png" alt="image-20250708142245783" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 3.5文件路径位置 |
|
|
|
|
|
|
|
在Option页面C/C++设置文件路径位置,包括头文件位置。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708142455122.png" alt="image-20250708142455122" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 3.6输出文件配置 |
|
|
|
|
|
|
|
选择Output页面,然后设置输出文件位置。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708142616060.png" alt="image-20250708142616060" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 3.7输出文件路径 |
|
|
|
|
|
|
|
打开Option,选择General,选择output进行配置。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708142932221.png" alt="image-20250708142932221" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 4.调试器配置 |
|
|
|
|
|
|
|
打开Option,选择Debug进行配置 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708143112548.png" alt="image-20250708143112548" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 5.库相关配置 |
|
|
|
|
|
|
|
设置库文件相关位置,同时在程序内include头文件,使用库。 |
|
|
|
|
|
|
|
<img src="./Pictures/image-20250710142954145.png" alt="image-20250710142954145" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 6.静态库的封装和调用 |
|
|
|
|
|
|
|
新建项目,同时设置.h和.c文件,进行内部程序的编写。注意减少外部依赖,能够直接移植调用。写完之后点击option进行设置,选择General,OutPut选择library,然后make编译生成.lib文件,使用时复制.lib文件到项目内,并在option内进行配置,然后选择Linker -- > Library,将静态库.lib文件添加,返回工程重新编译。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708144035699.png" alt="image-20250708144035699" style="zoom:50%;" /> |
|
|
|
|
|
|
|
<img src="./Pictures/image-20250709181230566.png" alt="image-20250709181230566" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 7.工程调试 |
|
|
|
|
|
|
|
#### 7.1断点 |
|
|
|
|
|
|
|
##### 7.1.1设置断点 |
|
|
|
|
|
|
|
左侧标红设置断点 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708150820220.png" alt="image-20250708150820220" style="zoom:50%;" /> |
|
|
|
|
|
|
|
##### 7.1.2禁用断点 |
|
|
|
|
|
|
|
鼠标右键点击,disable breakpoints。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708151057158.png" alt="image-20250708151057158" style="zoom:50%;" /> |
|
|
|
|
|
|
|
##### 7.1.3启用断点 |
|
|
|
|
|
|
|
鼠标右键点击,disable breakpoints。 |
|
|
|
|
|
|
|
##### 7.1.4取消断点 |
|
|
|
|
|
|
|
鼠标左键点击断点即可取消。 |
|
|
|
|
|
|
|
##### 7.1.5条件断点 |
|
|
|
|
|
|
|
鼠标右键想要断点处,选择Edit Breakpoint,将条件写入即可。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708152500923.png" alt="image-20250708152500923" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 8.监控信息 |
|
|
|
|
|
|
|
选择view,找到watch,找到想要监视的信息,将其拖到watch窗口即可。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708152756370.png" alt="image-20250708152756370" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 9.寄存器信息 |
|
|
|
|
|
|
|
打开view的registers窗口即可查看寄存器信息。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708152951214.png" alt="image-20250708152951214" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 10.内存信息 |
|
|
|
|
|
|
|
打开view的memory窗口即可查看寄存器信息 |
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
### 11.栈信息 |
|
|
|
|
|
|
|
打开view的stack窗口即可查看栈信息 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708153204889.png" alt="image-20250708153204889" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 12.汇编信息 |
|
|
|
|
|
|
|
打开view的disassembly窗口可以查看汇编信息 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708153257586.png" alt="image-20250708153257586" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 13.调用堆栈信息 |
|
|
|
|
|
|
|
打开view的call Stack窗口可以查看堆栈信息 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708153531949.png" alt="image-20250708153531949" style="zoom:50%;" /> |
|
|
|
|
|
|
|
### 14.单步调试 |
|
|
|
|
|
|
|
#### 14.1逐过程调试 |
|
|
|
|
|
|
|
菜单栏Step over。 |
|
|
|
|
|
|
|
<img src=".\Pictures\image-20250708153851629.png" alt="image-20250708153851629" style="zoom:50%;" /> |
|
|
|
|
|
|
|
#### 14.2逐语句调试 |
|
|
|
|
|
|
|
菜单栏Step into。 |
|
|
|
|
|
|
|
#### 14.3 复位 |
|
|
|
|
|
|
|
菜单栏Restart。 |
|
|
|
|
|
|
|
#### 14.4跳出 |
|
|
|
|
|
|
|
菜单栏step out。 |