目录
- 1、worksplace 的设置问题:edit configuration**
- 2、文件夹包含问题**
- 3、包含.dat文件问题**
- 4、版本问题**
- 5、IAR中设置Tab键方法**
- 6、Sourceinsight中设置Tab键方法**
- 7、快捷键设置**
- 8、使用第三方编辑器编辑代码**
- 9、Colors and Fonts设置**
- 10、生成Bin 、hex文件
- 11、IAR生成ELF**
- 12、out(ELF)文件转换成HEX文件**
- 13、设置程序存放地址**
- 14、下载文件**
- 15、linker链接**
- 16、输出map配置 查看代码大小**
- 17、添加灵动微MCU**
- 18、用J-Link下载程序出现错误提示:Failed to get CPU status after 4 retries Retry?**
- 19.编译报错 Error[Lp011]: section placement failed**
- 20.仿真时提示Warning: Stack pointer is setup to incorrect alignment. Stack addr = 0xFFFFFFFF**
- 21.CSTACK HEAP 设置一次可用栈的大小,HardFault_Hander
- 22.如何下载IAR历史版本
- 23.STM32:connecting to cpu via connect under rest failed. 下载问题
1、worksplace 的设置问题:edit configuration**
这样,每个工程都可以有一个workplace,方便切换。
2、文件夹包含问题**
3、包含.dat文件问题**
.dat 实际为宏定义一些参数,在宏定义的参数名称前加上 -D 即可
4、版本问题**
5、IAR中设置Tab键方法**
IAR中设置Tab键方法发下: Tools --》 Options --》Editor --》Menu --》选择Edit
1.Tab Size设置为4,Index Size 也设置为4,这样就可以实现直接按Tab键就可以缩写4个空格。
2.Default character 选择为 UTF-8。
3.勾选 Show line numbers 代码显示行号。
- Auto indent --》 Configuer… 打开设置
根据自己的喜好或公司规约。
6、Sourceinsight中设置Tab键方法**
Options --》 Document Options的选项。
Expand tabs(扩展制表符)的选项:将你的TAB键作为空格键使用,并且每次自动打上Tab Width个宽度。
Auto Indent(自动缩进)配置页面:
在上图中:Auto Indent Type下面有三个选项,分别为None、Simple、Smart。三者的含义分别如下:
1、none表示不自动缩进
2、simple表示自动缩进,但是会与上一行保持一致,也就是在同一列
3、smart表示自动智能缩进,它会在上一行的列数下再缩进一次。
通过设置IAR、Sourceinsight的参数,使其保持一致,就不再会出现Sourceinsight编辑好的文件,到了IAR中就显示完全乱了。
7、快捷键设置**
进入Tools --à Options --à选择Edit
Auto Indent 自动对齐
Block Comment 注释"//"
Block Uncomment 取消注释"//"
快速对齐整个文件,快速注释/反注释一段或者整段代码。
8、使用第三方编辑器编辑代码**
进入Tools --》 Options --》选择Edit -》 External Editor
Editor:选择第三方软件的启动地址
Arguments: F I L E P A T H FILE_PATH FILEPATH
即可选择第三方的文档编辑器编辑代码。
编辑代码还行,毕竟IAR编辑真的好丑,但是调试时跳转不了。
9、Colors and Fonts设置**
设置关键字等的字体及颜色,可以调整为自己喜欢的颜色和字体。
设置后出来的效果
10、生成Bin 、hex文件
打开工程的Option选项,切换到Output Converter标签,如下图所示
勾选Generate additional output可生成用于下载的hex文件,Output format可设置生成的文件格式(bin hex等),若勾选Override default可修改默认生成文件名。
Intel extended 就是Hex文件 Binary 就是Bin文件
生成的文件一般在project ->Debug->Exe文件夹下面
11、IAR生成ELF**
切换到Linker标签页中的Output,可用生成ELF文件,如下所示
Output filename可修改生成的文件名,默认格式为.out可直接修改扩展名为.elf,其实这里的.out就是.elf文件相同格式。
我们来看下生成的elf文件
可勾选Include debug information in output,设置生成的elf文件是否包含debug信息。
12、out(ELF)文件转换成HEX文件**
IAR有一个工具:安装目录下bin\ielftool.exe 可以使用
该指令方法是: ielftool --ihex *.out *.hex
–ihex 是个参数,表示转换为HEX文件
*.out 要转换的OUT格式的源文件
*.hex 输出的HEX的文件名
转换后,可以用串口方式烧写了!
13、设置程序存放地址**
在工程上点右键->linker->edit,这里可以设置中断向量表(VectorTable)和程序存放地址(Memory Regions)。IAP程序(相当于bootloader)中断向量表设在0x08000000程序起始地址设为0x08000044(多出来的0x44用来放大小为0x40的向量表);普通用户程序(被引导的)分别设为:0x08003000,0x08003000。
14、下载文件**
Download active application:和download and debug功能类似
Download file… : 下载.out文件到flash
erase memory:擦除memory
要启用download功能,设置debugger -> download 中的verifv download
15、linker链接**
设置如下 B I N
16、输出map配置 查看代码大小**
在工程中,默认是输出了map文件,如果没有输出,需要如下配置:
当按照上面配置勾选了“生产map”文件,就可以看到如下情况:
IAR编译的最后会出现以下三个值:
先解释一下,
48028字节的代码(占FLASH)
69096字节的常量只读数据(占FLASH)
74465字节的读写变量数据(占SRAM)
生成的bin文件大小:48028+69096= 117124bytes=114.38Kbytes
17、添加灵动微MCU**
链接: Pack文件.
到网站上下载Pack,安装后,在工程属性里面就可选择灵动微的MCU
18、用J-Link下载程序出现错误提示:Failed to get CPU status after 4 retries Retry?**
下载程序是出现提示。
具体的原因如下:
1)检测mcu是否有供电。在mcu没供电时,JLink上的LED是红色的。此时下载会出现上述提示。
19.编译报错 Error[Lp011]: section placement failed**
问题原因:
编译后的代码超出分配的程序代码空间。
如下所示。 芯片的分配的ROM代码空间为 0x801FFFF - 0x8002000 = 0x1DFFF = 122879
我们比较两个程序的map文件。
下图左边(Errors:none),程序代码占用空间为 86828+36020 = 122848 , 没有超出 我们分配的空间。
而右边报错Error[Lp011](Errors:1), 程序代码占用空间为 86828+36196 = 123024 , 已经超出 我们分配的空间。所以报错Error[Lp011]。
两个程序的差异部分,就仅差1条指令
char PocData【200】 = “AT+ZTTSP=”;
与
strcpy(PocData, "AT+ZTTSP=");
这两条指令都是把“AT+ZTTSP=”赋值给PocData, 但是
char PocData【200】 = “AT+ZTTSP=”指令,会占用大量的data memory
20.仿真时提示Warning: Stack pointer is setup to incorrect alignment. Stack addr = 0xFFFFFFFF**
并且,进入仿真界面后,也没有停留在main处。
解决办法:
Option 》Debugger 》Download》勾选 Use flash loader 即可。当使用jlink时,后续可以取消勾,不会出现再报错!直接用jlink下载会更快。
21.CSTACK HEAP 设置一次可用栈的大小,HardFault_Hander
CSTACK:限制函数中定义数组的最大值,否则进入HardFault_Hander
HEAP:限制动态分配内存(C函数库中的malloc)的大小,不用可以设置为0
22.如何下载IAR历史版本
http://files.iar.com/ftp/pub/box/ EWARM-CD-7503-10751.exe
前面地址是固定的,后面黄色的是软件的版本号.
但是前提是你要知道软件版本号和所对应的编译号.这样你就可以下载到你需要的文件了.
下面是IAR官网,最新版本下载
链接: link.
链接: IAR for ARM官网下载链接(包含一些历史版本).
23.STM32:connecting to cpu via connect under rest failed. 下载问题
问题原因:硬件使用的是J-LINK的SWD接口的接法,软件设置的却是采用的JTAG接口,于是下载的时候就会报错。把这个设置重新配置一下就OK了。很低级的错误有没有,但就是容易忽略。这是我碰到的问题以及解决方法。