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

配置工程

开发者需要根据自己产品的特性配置相应的工程选项,包括NVDS,代码运行模式,存储器布局,After Build以及其他配置项。

配置custom_config.h

custom_config.h用于配置Application工程的参数。SDK_Folder\build\config\提供了一个custom_config.h的模板。各Application示例工程的custom_config.h位于其工程目录下的Src\config

表 9 custom_config.h中的参数
描述
CHIP_TYPE

对芯片类型进行选择。

0:GR5515

1:GR5513

ENCRYPT_ENABLE

使能固件加密的开关。默认设置为0。

0:不使能固件加密,支持移除加密相关代码,以节省RAM空间

1:使能固件加密

EXT_EXFLASH_ENABLE

是否使用外部Flash。

0:不使用外部Flash

1:使用外部Flash

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

GR5515 Start Kit Board的GUI模块的开关。

0:不使用GUI模块

1:使用GUI模块

DEBUG_MONITOR

Debug Monitor模块的开关。

0:关闭Debug Monitor模块

1:打开Debug Monitor模块

DTM_TEST_ENABLE

DTM Test功能的开关。

0:关闭DTM Test功能

1:打开DTM Test功能

DFU_ENABLE

DFU功能的开关。

0:关闭DFU功能

1:打开DFU功能

FLASH_PROTECT_PRIORITY

Application在Flash擦写过程中,可阻止异常事件响应的优先级等级。

当FLASH_PROTECT_PRIORITY配置为N时,中断优先级小于或等于N的中断请求会被挂起,待Flash擦写完毕后,可响应挂起的中断请求。默认情况下,Flash擦写过程中不响应任何中断请求,开发者可以根据实际需要设置其值。

NVDS_START_ADDR NVDS占用区域的起始地址,默认状态下该宏的值在custom_config.h中已经定义,但是定义的初始值只是针对申请的NVDS区域中只有一个sector,若用户需要申请多个sector,需根据申请的sector num自行计算起始地址(必须4K对齐)。
NVDS_NUM_SECTOR NVDS使用的Flash Sector的数量。
CSTACK_HEAP_SIZE

Application所需要的Call Stack和Heap的大小,开发者可以根据Application的实际使用情况,调整其值,但不能少于6 KB。当前默认大小为16 KB。

各示例工程编译后其目录下的Keil_5\Objects\<project_name>.htm提供了可供参考的Maximum Stack Usage。

ENABLE_BACKTRACE_FEA

栈回溯功能的开关。

0:关闭栈回溯功能

1:打开栈回溯功能
APP_CODE_LOAD_ADDR * 程序存储空间的起始地址。该地址应在Flash地址范围内。
APP_CODE_RUN_ADDR *

程序运行空间的起始地址。

如果该地址的值与APP_CODE_LOAD_ADDR相等,则Application会采用XIP模式运行。

如果该地址的值在RAM地址范围内,则Application会采用Mirror模式运行。

SYSTEM_CLOCK *

系统时钟频率。其取值如下:

0:64 MHz

1:48 MHz

2:16 MHz(XO)

3:24 MHz

4:16 MHz

5:32 MHz(PLL)

CFG_LF_ACCURARY_PPM BLE低频睡眠时钟精度,其取值范围1 ~ 500,单位PPM。
CFG_LPCLK_INTERNAL_EN

是否使用芯片内部的OSC时钟作为BLE低频睡眠时钟。若使用,则CFG_LF_ACCURARY_PPM强制设置为500。

0:不使用

1:使用

CFG_CRYSTAL_DELAY 设置芯片在PMU中ENABLE RTC后的延时时间,以及修改RTC GM等参数后的延时时间。该值需要根据晶振实际测试所得的起振稳定时间配置,其取值范围为100 ~ 500,单位为ms,默认设置为100 ms。
BOOT_LONG_TIME *

设置芯片启动时是否需要延迟1s再执行后半段启动代码。

0:不延迟

1:延迟1秒

BOOT_CHECK_IMAGE

在XIP模式中,冷启动时是否要对image进行校验。

0:不进行校验

1:进行校验

VERSION * Application Firmware版本号,长度2 Bytes,采用十六进制存储。
EXFLASH_WAKEUP_DELAY 在热启动时,设置芯片在唤醒Flash和读取芯片ID间的延迟时间。其取值范围为0 ~ 10,单位为5 μs,即取值为0时不延迟,每增加1,延时时间增加5 μs。
CFG_MAX_BOND_DEVS Application支持的最大可绑定设备数量。开发者根据实际需求设置该值,其值越大占用的RAM空间就越大。
CFG_MAX_PRFS Application所能够包含的GATT Profile/Service的最大数量。开发者根据实际需求设置该值,其值越大占用的RAM空间就越大。
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_ADV_DATA_LEN_SUPPORT

设置是否支持传统广播数据长度为31字节。

0:不支持

1:支持

CFG_MAX_PER_ADVS

Application支持的最大BLE周期性广播数量。

说明:

配置的传统广播和扩展广播总量值(CFG_MAX_LEG_EXT_ADVS)与周期性广播数量值(CFG_MAX_PER_ADVS)的总和不能超过5。
CFG_MAX_SCAN Application支持的最大BLE扫描数量,最大值为1。
CFG_MAX_SYNCS 周期性广播同步数量,用于预留协议栈所需的RAM资源。开发者可根据实际使用的周期性广播同步数量设置该值,最大值为5。
CFG_MESH_SUPPORT

是否支持MESH功能。

0:不支持

1:支持

CFG_LCP_SUPPORT

是否支持LCP模块。

0:不支持

1:支持

APP_DRV_I2C/SPI/UART_DMA_ENABLE

是否使能I2C/SPI/UART APP Driver模块的DMA模式。

0:不使能

1:使能

APP_DRV_I2C/SPI/UART_IT_ENABLE

是否使能I2C/SPI/UART APP Driver模块的Interrupt模式。

0:不使能

1:使能

*:SDK toolchain中的ble_tools.exe会读取该宏的值,用于生成系统配置区(SCA)镜像文件。Bootloader程序会从系统配置区读取该值,作为启动参数。

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

图 19 Configuration Wizard for custom_config.h

配置存储器布局

Keil用.sct文件定义链接器用到的存储段。GR551x 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 ‘GR551x_SK’对话框。选中Linker标签页。
  2. Scatter File栏,点击按钮...浏览选择SDK_Folder\toolchain\gr551x\source\arm下的flash_scatter_common.sct文件,或者将scatter文件(.sct)及其包含的.h文件复制到ble_app_example工程目录再选择。
    说明:

    flash_scatter_common.sct中的#! armcc -E -I ..\Src\config\ --cpu Cortex-M4指定了一个Include路径,其指向Application工程的custom_config.h所在的目录。如果该路径错误,则会产生Linker Error。

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

配置After Build

Keil的After Build可以指定一个可执行程序或批处理文件在成功build之后运行。ble_app_template工程默认已添加after_build.bat文件在After Build中,开发者无需再给基于ble_app_template的ble_app_example工程手动配置After Build。SDK提供的after_build.bat的功能参考生成固件

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

  1. 点击Keil Toolbar的Options for Target按钮 ,打开Options for Target ‘GR551x_SK’对话框。选中User标签页。
  2. After Build/Rebuild展开的选项中勾选Run #1,然后点击 浏览选择SDK_Folder\build\scripts下的after_build.bat文件,或者先将SDK_Folder\build\scripts下的after_build.bat文件复制到ble_app_example工程目录再选择它。
    说明:

    after_build.bat中含有一些相对路径,比如SDK tools目录的路径。如果该批处理文件不再位于SDK_Folder\build\scripts中了,开发者应该修改这些相对路径,以避免After Build Error。

  3. 点击OK,保存设置。
图 21 配置After Build

扫描关注

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