欢迎来到查IC网

CC2640R2F BLE5.0 蓝牙协议栈生成片外命令文件

来源:电子工程世界论坛   2020-04-20 阅读:108

小编推荐:SDK连接器命令文件转化成符合OAD的连接器命令文件大家一起来学习学习吧。

如何将标准的SDK连接器命令文件转化成符合OAD的连接器命令文件,下面以cc26xx_app_and_stack.ICf为例。

分配元数据向量和应用程序起点内存。

我们期望flash范围是应用程序和协议栈代码和数据。

替换:

// Code and RO Data

place in FLASH_ALL { readonly };

为:

// Code and RO Data

place in FLASH { readonly };

然后重定义flash从OAD_FLASH_START到FLASH_END。这将会占用30页。OAD_FLASH_START代表应用程序/协议栈开始的代码。

define region FLASH = mem:[from OAD_FLASH_START to FLASH_END];

然后定义OAD元数据宏

// OAD specific

define symbol OAD_HDR_SIZE  = 16; // Size of metadata vector

define symbol OAD_HDR_START   = FLASH_START;

define symbol OAD_HDR_END     = OAD_HDR_START + OAD_HDR_SIZE - 1;

最后定义OAD_FLASH_START,元数据向量和中断表计算。

校准中断向量表

中断向量表是应用程序正确启动的关键,所以中断向量表映带在flash开始位置,但是由于元数据表,中断向量表需要移动。

首先定义如下宏:

define symbol INT_VEC_SIZE    = 64;

define symbol INT_VEC_START   = OAD_HDR_START + OAD_HDR_SIZE;

define symbol INT_VEC_END     = INT_VEC_START + INT_VEC_SIZE - 1;

然后根据定义的符号来定义范围:

define region INT_VEC   = mem:[from INT_VEC_START to INT_VEC_END];

最后,对于内存放置,需要添加以下内容,以便中断向量表部分正确地放置:

// Interrupt Vector Table

place at start of INT_VEC       { readonly section .intvec };

keep                            { readonly section .intvec };

保留第31页(BIM+CCFGs)

因为工程不应该编译ccfg_app_ble.c文件,因此这里不应该进行链接,移除下面这两行命令:

// CCFG

place at end of FLASH_LAST_PAGE { readonly section .ccfg };

keep { section .ccfg };

CCFGs应该由BIM编译链接。该步骤确保第31页不被用户使用。

OAD镜像进行页校准。

Library OAD镜像文件编译之后总是占31页,所以可以不进行校准。OAD镜像生成工具也能够填补0xFF在边界处。

协议栈大小改变

通常,不应该改变协议栈大小,但是如果需要可以根据OAD配置类型,在项目中对协议栈大小进行更改。

只有APP+Stack可以更改,Library OAD是不可更改协议栈配置。使得入口点总是与页面开头处的相同地址。强制链接器进行页面对齐,只需PAGE_ALIGN=1在堆栈项目中添加链接器定义。

在只进行协议栈OAD的配置情况下,协议栈OAD可以进行页面对齐,只要入口点相同,应用程序即可正常运行。

生成OAD镜像元数据向量

OAD_Image_Tool可以生成元数据向量并将其插入到给定的镜像中,以产生OAD就绪镜像文件,OAD就绪镜像文件可以是hex文件或者一个包含target中断的元数据的bin文件。

OAD_Image_Tool是一个使用Python编写的工具,在Tools文件夹里面可以找到。

可以在IAR中的Post_build中使用,例如添加./oad_image_tool.exe -t offchip -o out.hex -m 0x0000 -i app in.hex。

该out.hex文件将是具有元数据的OAD就绪镜像,以告知OAD Target它是片外OAD的应用程序镜像。

如何生成OAD镜像文件

下图显示了如何编辑OAD镜像工具的IAR后期制作步骤。可以通过右键单击项目->选项来访问此菜单。

$TOOLS_BLE_DIR$\oad\oad_image_tool.exe $PROJ_DIR$\FlashROM_OAD_Offchip\Exe$TARGET_BNAME$.hex -t offchip -i app --imgVer 0 -ob $PROJ_DIR$\FlashROM_OAD_Offchip\Exe$TARGET_BNAME$.bin -m 0x0000 --r 0x0000

这句命令编译后运行oad_image_tool.exe生成对应的bin和hex文件。

免责声明:
以上相关内容来自互联网公开信息分享;如涉及内容、版权、图片等问题,请联系我们。会第一时间删除!

查IC网

服务热线

400-861-9258

客服企业微信