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

 

 

 

 

 

 

发表评论