BC5-MM、CSR867x的DFU更新流程之十:Gaia移植注意事项

本文描述把ADK中Gaia Application部分从Sink Project移植到Source Project中的相关注意事项;

在ADK的Sample Project中,其Source Project部分默认没有提供Gaia实现,需自行移植整合(如当前笔者把ADK4.0(非4.2)Sink Project 中Gaia移植到ADK4.2 Source 中);

移植部分分为:

Source Code移植、PS Key重新设定、相关宏定义以及Project属性设置 等4大部分;


需要留意整合的gaia 默认走的是spp还是rfcomm,然后对应设置相关宏,具体可以参考API GaiaStartService的宏管控;

Note

ADK3.0的lib gaia,默认走的是frcomm; ---3.0没有专门的lib upgrade,OTA使用dfu档。

ADK4.0的lib gaia,默认走的是rfcomm;

ADK4.2的lib gaia,默认走的是SPP;

注意点1,注意宏定义;

ENABLE_GAIA以及ENABLE_UPGRADE,因ADK4.0开始的DFU OTA 需要使用lib upgrade进行管控,所以也需要移植Sink Project中ENABLE_UPGRADE 管控的内容;同时需要在Project属性中增加宏定义以及相关lib:

注意点2,移植后的Source Code 需注意的API有哪些;

 API gaia_get_dfu_partition 用于返回指定保存dfu data 的partition index; 当移植到Source Project中后,我们需要自行定义;其值用于API GaiaDfuRequest;基于当前“UpgradeInit -->logicalPartitions”的设置,我们可以直接定义为Partition 0;

 

API UpgradeInit, 注意其partition table, 这里必须和.ptn文件的定义对应,所以当外部修改.ptn文件和.upd文件时,这里的logicalPartitions也需要同步修改; 

 可以看到Sink Project sample实现中,其指定了partiton index 0作为DFU 的data 保存;

另外,也需注意API UpgradeInit的第23 参数,其是指定lib upgrade 用于保存数据的PS Key以及数据的offset,在Source Project中可以基于实际进行指定;

注意点3:PS Key 设置;

直接在Code中API gaia_get_dfu_partition 指定了DFU Partition Index,这在Sink Project 中也是通过PS Key 设置;在以上API UpgradeInit的第23 参数其实就是PS Key的使用,我们参考了ADK4.0(4.2)的 Sink Project中的实现, PS Key User49进行数据保存(但需改造Source project API);

Attention:在改造Source Project 的PS Key User49前,我们需要先理解ADK4.0 的Sink Project中PS Key User49的具体组成部分:
以下是某 Project 中PS Key User49的组成:
// PSKEY_USR49
&02bb = 0000 0021 0002 0002 0001 0002 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
前2Byte 表示的是
version_id[0] = PRODUCT_VERSION;
version_id[1] = CONFIG_SET_VERSION;
表现API 是:configManagerSetVersionNo

第3Byte用于保存VM Upgrade transpor,
表现API 是:configManagerSetUpgradeTransportType 
和configManagerGetUpgradeTransportType

从第4Byte 开始的16Byte则是通过API UpgradeInit的2、3 参数传送给 lib upgrade 进行数据保存,保存的数据结构体是UPGRADE_LIB_PSKEY;

 

需注意的是:PS Key 的单位是word ,1word=2Byte;

所以当我们在ADK4.2 Source Project中沿用PS Key User49时,一定记得改造设置PS Key User49中的data[0]datap[1] API,不然会乱套Source Project中对应的API 是ps_set_version;

ADK4.0 Sink Project中的data[0]表示的是PRODUCT_VERSION;

ADK4.2 Source Project中的data[0]表示的是CONFIG_SET_PRODUCT_TYPE;

所以不能直接把ADK4.0Sink Project PS key User49 的值直接copyADK4.2Source Project中;注意前2Byte的差异;

Attention:升级的Bin 文档的PSR文件中,一定不能出现PS Key User49

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值