CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

配置工程

开发者需要根据自己产品的特性配置相应的工程选项,包括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

表 9 custom_config.h中的参数
描述
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所需的资源。

表 10 ble_basic_config.h中的参数
描述

CFG_CONTROLLER_ONLY

是否仅使用BLE Controller。

  • 0:使用BLE Controller和Host
  • 1:仅使用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中的以下四个宏定义,开发者不可修改这四个宏:

  • ENV_HEAP_SIZE
  • ATT_DB_HEAP_SIZE
  • KE_MSG_HEAP_SIZE
  • NON_RET_HEAP_SIZE
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模块。

  • 0:不支持
  • 1:支持

custom_config.hble_basic_config.h的注释符合Keil的Configuration Wizard Annotations 规范,因此开发者可以使用图形化的Keil Configuration Wizard来配置Application工程参数。强烈推荐开发者使用Wizard以避免出现非法参数值。

图 19 Configuration Wizard for custom_config.h
图 20 Configuration Wizard for ble_basic_config.h

配置存储器布局

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")))段中。

开发者可按照以下步骤配置存储器布局:

  1. 点击Keil Toolbar的Options for Target按钮 ,打开Options for Target ‘GRxx_Soc’对话框。选中Linker标签页。
  2. 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。

  3. 点击Edit...按钮,打开.sct文件,然后根据自己产品的存储器布局修改相应的代码。
    图 21 配置Scatter File
  4. 点击OK按钮,保存设置。

配置After Build

Keil的After Build可以指定在工程build完成后执行命令行语句。ble_app_template工程默认已配置after build命令,开发者无需再给基于ble_app_template的ble_app_example工程手动配置After Build

如果开发者新建一个工程,则需要按照以下步骤配置After Build

  1. 点击Keil Toolbar的Options for Target按钮 ,打开Options for Target ‘GRxx_Soc’对话框。选中User标签页。
  2. After Build/Rebuild展开的选项中勾选Run #1,在对应的User Command栏输入fromelf.exe --text -c –output Listings\@L.s Objects\@L.axf。其作用是调用Keil fromelf工具,基于axf文件生成汇编文件。
  3. After Build/Rebuild展开的选项中勾选Run #2,在对应的User Command栏输入fromelf.exe --bin --output Listings\@L.bin Objects\@L.axf。其作用是调用Keil fromelf工具,基于axf文件生成bin格式固件。
  4. 点击OK,保存设置。
图 22 配置After Build

扫描关注

打开微信,使用“扫一扫”即可关注。