Keil5的魔法棒选项简介



Keil5的魔法棒选项简介

Device

Device

这个页面功能较为简单,左上方分别显示供应商、芯片类型、工具集,右上方pack为当前使用的芯片包的版本号,URL为arm芯片包的下载地址(魔法上网访问)。中间带有一个搜索框可供检索。下方左侧是目前支持的芯片列表,右侧为该系列芯片资源的英文简介。

Target

Target

在这个界面中有很多配置信息。
Xtal:为当前工程使用的晶振频率

代码生成区
ARM Compiler:编译器版本
下方两个选项分别为:

  • 是否使用跨模块优化
  • 是否使用MicroLIB

tips:
MicroLib是一个针对用C编写的基于ARM的嵌入式应用程序的高度优化的库。与包含在ARM编译器工具链中的标准C库相比,MicroLib提供了许多嵌入式系统所需的代码大小的显著优势。

MicroLib和标准C库之间的主要区别是:

1、MicroLib是专为深度嵌入式应用程序而设计的。

2、MicroLib经过优化,比使用ARM标准库使用更少的代码和数据内存。

3、MicroLib被设计成在没有操作系统的情况下工作,但是这并不妨碍它与任何操作系统或RTOS一起使用,如Keil RTX。

4、MicroLib不包含文件I/O或宽字符支持。

5、由于MicroLib已经优化到最小化代码大小,一些函数将比ARM编译工具中可用的标准C库例程执行得更慢。

6、MicroLib和ARM标准库都包含在Keil MDK-ARM中。


MicroLIB是一个c语言标准库,它编译出来的固件相比标准C库的固件更小一点,当然性能相对差一些,如果是程序存储空间比较紧张的情况下可以将这个选项打勾。

PS:


内存读写区
左侧通俗点讲是程序指令和只读数据存储区的配置,startup代表程序入口地址所在的区域,左边一般配置为Flash、OTP等存储器挂载在总线上的地址区域,当然我们的程序也可以执行在RAM中,所以左边也可以配置为RAM所在的总线地址区间。右边通俗讲是可读写数据存储的区域,例如栈和堆以及程序中的可读写全局变量,这一块的配置一般在RAM上所以一般配置为RAM所在总线的地址区间。另外,如果我们有多块存储器挂载在总线上时也可以配置多块。

Output

OUTPUT

输出界面。

包括生成的可执行文件的名称,存储路径(均可修改)。

以及:
- 是否生成调试信息
- 是否生成hex文件
- 是否生成浏览信息
- 是否生成批处理文件
- 是否创建库文件

  • Creat HEX ile:

可执行文件(用于下载到芯片的程序文件),.hex文件一般用于在无法进行仿真器烧录代码的时候使用,通过串口在Boot模式下将代码烧录至芯片。

  • Browse Information:

勾选后会生成.crf文件,便于调试,但会使工程编译速度变慢

.crf:浏览信息文件,使用Go to Definition Of(F12) 功能,就需要有这类文件。

Listing

Listing

第一个选项,可以选择生成链接文件的文件夹。
其余配置一般默认。

C/C++

C-C++

  • Preprocessor Symbols:
    预处理符号,在这里进行的Define/Undefine具有全局属性。

  • Language/Code Generation:

    Optimization: 代码优化,有不同等级可选,配置合适的优化等级将高效的利用编译器的功能对程序进行优化,可以大大提高程序的效率以及对存储的优化。有时优化会带来程序的bug,有时候优化后不是实际想要的结果,这需要在使用的过程中积累经验。

    C99 Mode:

    在C99中包括的特性有:

    增加了对编译器的限制,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节(extern 要求支持到 31)。

    增强了预处理功能。例如:
    宏支持取可变参数 #define Macro(…) VA_ARGS
    使用宏的时候,允许省略参数,被省略的参数会被扩展成空串。

    支持 // 开头的单行注释(这个特性实际上在C89的很多编译器上已经被支持了)
    增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool
    支持 long long, long double _Complex, float _Complex 等类型

    支持不定长的数组,即数组长度可以在运行时决定,比如利用变量作为数组长度。声明时使用 int a[var] 的形式。不过考虑到效率和实现,不定长数组不能用在全局,或 struct 与 union 里。

    变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。

使用 C99 Mode 时需要考虑兼容性和可移植性问题。

  • Include Paths:

    在这里需要添加工程中包含的头文件路径。

Debug

Debug

这个页面主要跟调试有关,这部分的功能在我们日常工作中经常会使用。如果可以灵活使用这部分的功能在工作中可以达到事半功倍的效果。左边是软件仿真调试配置,右边是硬件仿真调试配置。

两个复选use选项,二选一。我一般使用DAP_link仿真器(便宜),性能一般,支持的断点数目较少。

  • 仿真器选型
    下拉选项,可以根据需要选择不同的仿真器。

  • Load Application at Startup是指跳转到启动文件开始执行。

  • Run to main()是指开始调试时程序的指针位置main()函数的第一条指令处。

  • Initialization File:用户自定义地址,能够使开始调试时程序的指针跳转到指定位置

    详细内容参考此博客


  • setting

Setting
在这个界面主要进行下载模式的选择(Port: SW/JTAG)以及最大时钟频率的配置(Max Clock)

如果成功识别到仿真器,SWDIO处会显示该设备的序列号

FlashDown

Download unction

 Erase Full Chip:下载程序时对芯片flash进行全片擦除;

 Erase Sectors:下载程序时对芯片flash用到的扇区进行擦除;

 Do not Erase:下载程序时不对flash进行擦除;

右面是对过程的控制:编程、校验、对芯片复位和运行;

正常情况下建议选择部分擦除,,当遇到芯片锁死的情况建议使用全擦除。

RAM Algorithm

配置RAM的起始地址和大小。

Programming Algorithm

flash下载引导算法,这个算法的作用就是可以将数据写到芯片内部或者外部的flash中,选择与芯片flash大小一致的即可。


总结

keil5的魔法棒有很多功能,用好这些会让开发变得更加简单。这里仅对常用功能作大致介绍,余下部分可以自行探索。

C结束


文章作者: 析木
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 析木 !
评论
  目录