配置工程
开发者需要根据自己产品的特性配置相应的工程选项,包括NVDS,代码运行模式,存储器布局,After Build以及其他配置项。
配置custom_config.h与ble_basic_config.h
custom_config.h用于配置Application工程的参数。SDK_Folder\build\config\提供一个custom_config.h的模板。各Application示例工程的custom_config.h位于其工程目录下的Src\config。
宏 | 描述 |
---|---|
SOC_GR5526 | 定义芯片版本号。 |
SYS_FAULT_TRACE_ENABLE | 打印Callstack Trace Info的开关。打开该开关后,发生HardFault时,会将Callstack Trace Info打印出来。 0:关闭Trace打印 1:打开Trace打印 |
APP_DRIVER_USE_ENABLE | App Drivers模块的开关。 0:不使用App Drivers模块 1:使用App Drivers模块 |
APP_LOG_ENABLE | APP LOG模块的开关。 0:关闭Application中的Logs 1:打开Application中的Logs |
APP_LOG_STORE_ENABLE | APP LOG STORE模块的开关。 0:不使用APP LOG STORE模块 1:使用APP LOG STORE模块 |
APP_LOG_PORT | 设置APP LOG输出方式。 0:UART 1:J-Link RTT 2:ARM ITM |
SK_GUI_ENABLE | GR5526 Start Kit Board的GUI模块的开关。 0:不使用GUI模块 1:使用GUI模块 |
DTM_TEST_ENABLE | DTM Test功能的开关。 0:关闭DTM Test功能 1:打开DTM Test功能 |
DFU_ENABLE | DFU功能的开关。 0:关闭DFU功能 1:打开DFU功能 |
PMU_CALIBRATION_ENABLE | PMU Calibration功能开关,打开后,系统会自动监控温度和电压并做自适应调整,高低温场景必须开启,建议默认开启。 0:关闭PMU CALIBRATION功能 1:打开PMU Calibration功能 |
FLASH_PROTECT_PRIORITY | Application在Flash擦写过程中,可阻止异常事件响应的优先级等级。 当FLASH_PROTECT_PRIORITY配置为N时,中断优先级小于或等于N的中断请求会被挂起,待Flash擦写完毕后,可响应挂起的中断请求。默认情况下,Flash擦写过程中不响应任何中断请求,开发者可以根据实际需要设置其值。 |
NVDS_START_ADDR | NVDS占用区域的起始地址,默认状态下该宏在cutom_config.h中已被注释,开发者若需要更改NVDS占用区域的配置,可启用该宏并更改为所需的值(必须按4 KB对齐),该起始地址不能设置在存储器的SCA或User App等已使用的区域内。 |
NVDS_NUM_SECTOR | NVDS使用的Flash Sector的数量。 |
SYSTEM_STACK_SIZE | Application所需要的Call Stack的大小,开发者可以根据Application的实际使用情况,调整其值,但不能少于6 KB。当前默认大小为12 KB。 ble_app_example示例工程编译后其目录下的Keil_5\Objects\ble_app_example.htm提供可供参考的Maximum Stack Usage。 |
SYSTEM_HEAP_SIZE | Application所需要的Heap的大小,开发者可以根据Application的实际使用情况,调整其值。当前默认大小为16 KB。 |
APP_CODE_LOAD_ADDR * | 程序存储空间的起始地址。该地址应在Flash地址范围内。 |
APP_CODE_RUN_ADDR * | 程序运行空间的起始地址。 如果该地址的值与APP_CODE_LOAD_ADDR相等,则Application会采用XIP模式运行。 如果该地址的值在RAM地址范围内,则Application会采用Mirror模式运行。 |
SYSTEM_CLOCK * | 系统时钟频率。其取值如下: 0:96 MHz 1:64 MHz 2:16 MHz(XO) 3:48 MHz 4:24 MHz 5:16 MHz 6:32 MHz(PLL) |
CFG_LPCLK_INTERNAL_EN | 是否使用芯片内部的OSC时钟作为BLE低频睡眠时钟。若使用,则CFG_LF_ACCURARY_PPM被强制设置为500 PPM。 0:不使用 1:使用 |
CFG_LF_ACCURARY_PPM | BLE低频睡眠时钟精度,其取值范围1 ~ 500,单位PPM。 |
BOOT_LONG_TIME * | 设置芯片启动时是否需要延迟1s再执行后半段启动代码。 0:不延迟 1:延迟1秒 |
BOOT_CHECK_IMAGE | 在XIP模式中,冷启动时是否要对image进行校验。 0:不进行校验 1:进行校验 |
VERSION * | Application Firmware版本号,长度2 Bytes,采用十六进制存储。 |
CHIP_VER | 固件使用的芯片版本,当前值为0x5526。 |
*:结构体BUILD_IN_APP_INFO被定义在固件的0x200地址处,并使用custom_config.h中的宏进行初始化。系统启动时,Bootloader程序会从该地址读取固件的配置信息,作为启动参数。
ble_basic_config.h用于配置Application工程BLE相关的参数。各Application示例工程的ble_basic_config.h位于其工程目录下的Src\config。APP会根据这些宏定义的值来分配BLE所需的资源。
宏 | 描述 |
---|---|
CFG_CONTROLLER_ONLY |
是否仅使用BLE Controller。
|
CFG_MAX_PRFS |
Application所能够包含的GATT Profile/Service的最大数量。开发者根据实际需求设置该值,其值越大占用的RAM空间就越大。 |
CFG_MAX_BOND_DEVS | Application支持的最大绑定设备数,最大值为4。 |
CFG_MAX_CONNECTIONS | Application支持的最大连接数量,最大值为10。开发者可以根据实际需要设置其值。该值越大,BLE Stack Heaps需要占用的RAM空间就越大。BLE Stack Heaps具体大小由flash_scatter_config.h中的以下四个宏定义,开发者不可修改这四个宏:
|
CFG_MAX_ADVS | Application支持的BLE传统广播和扩展广播总量的最大值。 |
CFG_MAX_PER_ADVS | Application支持的最大BLE周期性广播数量。 说明: 配置的传统广播和扩展广播总量值(CFG_MAX_LEG_EXT_ADVS)与周期性广播数量值(CFG_MAX_PER_ADVS)的总和不能超过5。 |
CFG_MAX_SYNCS | 周期性广播同步数量,用于预留协议栈所需的RAM资源。开发者可根据实际使用的周期性广播同步数量设置该值,最大值为5。 |
CFG_MAX_SCAN | Application支持的最大BLE扫描数量,最大值为1。 |
CFG_MAX_EATT_CHANNELS | Application支持的最大BLE EATT通道数,最大值为10。 |
CFG_ISO_SUPPORT | 是否支持ISO模块。
|
custom_config.h与ble_basic_config.h的注释符合Keil的Configuration Wizard Annotations 规范,因此开发者可以使用图形化的Keil Configuration Wizard来配置Application工程参数。强烈推荐开发者使用Wizard以避免出现非法参数值。
配置存储器布局
Keil用.sct文件定义链接器用到的存储段。GR5526 SDK为Application开发者提供一个示例flash_scatter_common.sct。该.sct文件使用的宏被定义在flash_scatter_config.h中。
在Keil中,__attribute__((section("name")))可用来将一个函数或变量放在单独的内存段中,其中name取决于开发者的选择。Scatter(.sct)文件可用来将被命名的段放在特定的位置。例如,将应用程序的ZI(零初始化)数据放在名为__attribute__((section(".bss.app")))段中。
开发者可按照以下步骤配置存储器布局:
- 点击Keil Toolbar的Options for Target按钮 ,打开Options for Target ‘GRxx_Soc’对话框。选中Linker标签页。
- 在Scatter File栏,点击按钮...浏览选择SDK_Folder\platform\soc\linker\keil下的flash_scatter_common.sct文件,或者将scatter文件(.sct)及其包含的.h文件复制到ble_app_example工程目录再选择。
说明:
flash_scatter_common.sct中的#! armcc -E -I ..\Src\user\ -I .\..\Src\config\ --cpu Cortex-M4指定两个Include路径,其中一个指向Application工程的user目录,另一个指向Application工程的custom_config.h所在的目录。如果路径错误,则会产生Linker Error。
- 点击Edit...按钮,打开.sct文件,然后根据自己产品的存储器布局修改相应的代码。
- 点击OK按钮,保存设置。
配置After Build
Keil的After Build可以指定在工程build完成后执行命令行语句。ble_app_template工程默认已配置after build命令,开发者无需再给基于ble_app_template的ble_app_example工程手动配置After Build。
如果开发者新建一个工程,则需要按照以下步骤配置After Build:
- 点击Keil Toolbar的Options for Target按钮 ,打开Options for Target ‘GRxx_Soc’对话框。选中User标签页。
- 在After Build/Rebuild展开的选项中勾选Run #1,在对应的User Command栏输入fromelf.exe --text -c –output Listings\@L.s Objects\@L.axf。其作用是调用Keil fromelf工具,基于axf文件生成汇编文件。
- 在After Build/Rebuild展开的选项中勾选Run #2,在对应的User Command栏输入fromelf.exe --bin --output Listings\@L.bin Objects\@L.axf。其作用是调用Keil fromelf工具,基于axf文件生成bin格式固件。
- 点击OK,保存设置。