NORDIC BLE SoC 开发环境 – 编译器
Nordic nRF5x平台的SoC 软件开发环境通常有四种,分别是KEIL ,IAR,SEGGER Embedded Studio 以及GCC。
下面简单介绍下 SEGGER Embedded Studio 和 KEIL的使用。
SEGGER Embedded Studio的使用注意事项
首先,值得称赞的是EGGER Embedded Studio上开发Nordic的Soc是免费的,并且在linux和macos上都可以使用。Embedded studio界面和操作上跟keil近似,但又加入了一些Eclipse的元素,给人一种熟悉又陌生的感觉。Keil熟手在使用Embedded studio的时候需要注意的是 全局宏定义、应用RAM和Flash的配置、工程文件include路径 等设置均与Keil不同,是类似Eclipse的界面方式。
SEGGER Embedded Studio的下载地址:https://www.segger.com/downloads/embedded-studio ,下载安装的步骤,就不赘述了。
下面就与KEIL的几点设置上的差别做描述。
全局宏定义
1.打开工程后,在工程名字上鼠标右键单击打开选项菜单,再选择“option”选项。
2.配置选项中,选择“common”选项来配置。
3. 左侧边栏选择“Preprocessor”,然后再左键双击右边栏目中的“Preprocessor Definitions”,得到全局宏定义的配置界面。宏定义的使用方式与KEIL一样,大家常规操作即可。
应用RAM和Flash的配置
与上一步相同,我们进入“option”选项,配置选择“common”设置后,选择左边栏目的“Linker”选项卡,再选择双击右边栏目中的“Section Placement Macros”就可以得到应用层的RAM和Flash配置。具体配置的数据大小和方法不在此描述,与KEIL操作一致,常规跑例程(不修改协议栈配置),不用修改此处。
工程文件include路径
与上一步相同,我们进入“option”选项,配置选择“common”设置后,选择左边栏目的“Preprocessor”选项卡,再选择双击右边栏目中的“User include Directries”选项,就可以编辑工程的文件include路径了。注意这里的路径无法通过界面选择,需要手动输入,大家使用的时候要注意不要输错。
KEIL使用中的常见问题
KEIL作为常规使用的开发工具,基本使用方法就不赘述了,这里主要分享大家使用KEIL常见的几个问题。
DeviceFamilyPack 缺少或版本错误
nRF52系列,作为BLE常规使用的时候,当前使用的最多的是SDK15.3。当我们打开KEIL工程时,有时候会碰到如下界面要求我们更新pack,但是往往都会更新失败,这个时候可以关掉窗口,我们进行手动安装和切换。另外,在官方推出新的DeviceFamilyPack解决芯片的BUG时,我们有时候也需要更新它(此情况从第3步开始)。
1.出现任何界面都先关闭,直到出现空白页面为止。(能选“否”的,先选“否”),如下。
2.手动安装 NordicSemiconductor.nRF_DeviceFamilyPack.8.27.1.pack (SDK15.3建议使用这个版本,不宜使用过低版本)
下载地址:http://developer.nordicsemi.com/nRF5_SDK/pieces/nRF_DeviceFamilyPack/
下载好之后,双击安装即可。
3.安装完成之后,回到KEIL界面,点击 “Select Software Packs…”
在弹出来的窗口中,按照下图配置,勾选8.27.1版本,并确认。
若出现2个NordicSem….:nRF_DeviceFamily…的选项,如下图中所示,可以将不是被需要版本的选项先“excluded”掉,再选择需要的。
(大多数时候会立刻弹出“Manager Run-Time Environment”窗口,取消其中的选项后,关闭)。
4.删除“arm_startup_nrf52.s” 和 “system_nrf52.c” 两个文件。
这两个文件包含了芯片的启动程序、中断向量配置、errta对策等信息,原本工程中的文件不一定是合适(非待安装版本)的,因此要先删除,否则后面的步骤可能无法将待安装的文件更新过来。
查找这两个文件目录的方法如下图。这两个文件就在工程目录下。
5. 打开“Manager Run-Time Environment”窗口,勾选“startup”一栏并确认。
6. 可以发现启动文件已经正常添加,并且能够编译通过。
7. 若后续更新pack版本高于8.27.1,会出现编译错误,如下图中所示。
错误内容:
NordicSemiconductor\nRF_DeviceFamilyPack\8.32.1\Device\Include\nrf51_erratas.h(40): error: #130: expected a “{“
static bool nrf51_errata_1(void) __UNUSED;
NordicSemiconductor\nRF_DeviceFamilyPack\8.32.1\Device\Include\nrf51_erratas.h(120): warning: #12-D: parsing restarts here after previous syntax error
{
此时需要替换 module/nrfx/mdk中的文件,替换文件下载地址:github mdk下载 ,若不方便访问github的可以在下面网盘下载 8.32.1版本的替换。
链接:https://pan.baidu.com/s/16nXaQ2Qz4lOvCGUT_R3QFA
提取码:gvft