上一篇文章讲述了如何使用SEGGER Embedded Studio从零开始搭建工程模板,并成功构建工程下载到设备中运行。
(2)从零开始搭建SES工程模板
工程构建完成后,通常要使用SES编译器对工程进行一系列配置,才能正确下载到nRF52840芯片中运行,本章节将描述一些BLE工程里面较常用的配置,供各位开发者进行参考。
1、鼠标右键“Project ‘template_project’ -> Options”,可以进入工程配置窗口。
2、如下图工程配置窗口所示,红框内分别有Debug,Release和Common这三个配置选项。这三个选项的关系是:Common选项配置是针对一些共有的选项进行设置的,而Debug和Release选项,则可以根据不同的场合进行细分定义,也可以直接继承Common选项里面的内容,这种设计可以让工程配置更加灵活。
3、对于一般应用来说,首先会配置Common选项,配置窗口主要分为3部分:选项卡,选项内容,选项描述。如下图所示。
4、关于Build编译时的配置项,通常需要修改以下相关内容,如下图所示。
a. Memory Map File - 存储单元分配文件,这里不需要,因此设置为None。
b. Memory Setting - 存储单元设置,这里主要是设置RAM和FLASH的起始位置和大小,根据nRF52840芯片的参数,设置值如上图所示。
c. Output Directory - 输出目录,程序编译后生成的.hex或.bin文件在此目录。
d. Project Macros - 编译时需要用到的工程宏,编译器配置的全局宏定义在这里进行配置,相当于整个编译器的全局变量,注意,这里的宏定义跟代码里面的宏定义有区别,这个宏定义只作用于编译器,不作用于代码。
5、关于Linker链接时的配置项,通常需要修改以下相关内容,如下图所示。
a. Section Placement File - 段分布文件flash_placement.xml的位置,这里用一个全局宏PROJECT_CONFIG_FILE来表示,这个宏在Project Macros里面配置的。flash_placement.xml这个文件是每个工程都必须的,用来描述工程里面的代码段分布结构。
b. Section Placement Macros - 段分布文件flash_placement.xml里面使用到的宏定义。
c. Additional Output Format - 输出文件的格式,可以是.hex文件,.bin文件或其他格式的文件。
d. Entry Point - 程序的起始执行地址,这里设置为Reset_Handler,这个入口地址主要在ses_startup_nrf_common.s这个文件里面。
e. Treat Linker Warning as Errors– 把链接时的警告当作错误,这里设置为No。
6、关于Preprocessor预处理时的配置项,通常需要修改以下相关内容,如下图所示。
a. Preprocessor Definitions – 预处理的宏定义,这里是指定义一些代码用到的全局宏定义,这个宏定义只作用于代码,不作用于编译器,与上面的Project Macros是有区别的。
b. User Include Directories – 头文件包含的路径,代码编译时在这里指定头文件的路径。
7、关于User Build Step用户编译时自定义的配置项,通常需要修改以下相关内容,如下图所示。
a. Post-Build Command Control – 编译时执行的命令控制处理,这里设置为 Run When Build Has Occurred,表示编译时执行用户预设置的命令。
b. Post-Compile Command – 表示程序编译时需要执行的命令。这里暂时没有命令,所以设置为None。
c. Post-Link Command – 表示程序链接时需要执行的命令。这里暂时没有命令,所以设置为None。
8、关于Debugger用户调试时的配置项,通常需要修改以下相关内容,如下图所示。
a. Target Connection – 与目标调试设备的连接器,这里是使用了J-Link调试器。
b. Target Device – 目标设备,即目标芯片,这里是nRF52840_xxAA 这款芯片平台。
c. Run To – 调试运行时的起始点,这里设置main函数作为调试入口。
d. Register Definition File – 寄存器的定义文件。
9、关于J-Link调试器的配置项,通常需要修改以下相关内容,如下图所示。
a. Host Connection – J-Link调试器通过USB线与电脑进行连接。
b. Target Interface Type – J-Link调试器通过SWD模式与目标芯片nRF52840进行连接。
c. Speed – SWD通信线的速率是4000 kHz。
d. Show Log Message In Output Window – 在输出窗口显示Log调试信息。
10、关于Loader程序调试加载的配置项,通常需要修改以下相关内容,如下图所示。
a. Additional Load File[0] – 附加载文件,程序可以在调试的时候把协议栈的.hex文件附加载到工程里面。
b. Additional Load File Type[0] – 附加载文件的类型,这里保持默认,Detect。
c. Additional Load File Address[0]– 附加载文件的地址,这里保持默认,None。
11、关于Target Script目标脚本的配置项,通常需要修改以下相关内容,如下图所示。
a. Reset Script – 调试时的复位脚本,这里设置为 TargetInterface.resetAndStop()。
b. Target Script File – 目标脚本文件,由于已经设置了复位脚本,因此不再需要设置目标脚本文件,这里设置为None。
12、关于Target Trace目标跟踪的配置项,通常需要修改以下相关内容,如下图所示。
a. Trace Initialize Script – 调试跟踪脚本,这里设置为None。
13、其他没有描述的配置选项,将会在后续的工程里面根据实际情况添加。