BC5-MM、CSR867x的DFU更新流程之七:.ptn文件相关问题点理清

.ptn文件相关问题点理清

之前文档我们已经讨论DFU 的有线升级方式,当前开始我们将讨论OTA的升级方式,而OTA (through gaia)升级绕不开.ptn文件;本文将浅谈.ptn文件

问题点1:.ptn文件在OTA升级中的作用?

OTA升级和使用UARTUSB等有线方式升级的最大差异是:其需要BT 模组外挂一颗external flash;这颗flash的作用是:保存通过gaia 传送到BT 模组的数据,然后再把数据从外部flash copy 到内部flash;外部flash 起到了临时保存数据的作用,所以在gaia OTA升级中,一般是指定一块partition(并不是整颗flash)用于保存数据;partition的设置(编号、size 大小、类型等)就通过.ptn文件进行设置;

 

Attention:OTA 升级中,只使用一块partition用于保存dfu data, 而其他partition可以继续用于其他用途;

 

问题点2:.ptn文件是什么?

 .ptn文件用于设置external flash 中partition大小,可以直接使用.txt文件修改为.ptn文件后缀。

在《CS-334172-UG-2(SQIF Configuration User Guide).pdf》中有较为完整的内容描述;.ptn文件除了用于CSR867x(如:CSR8670)等OTA升级、外挂Audio Prompt外,像qcc300x等不带内部flash的BT chip,其也使用.ptn文件进行设置;

注意Partition type 定义为“PS”的partition,此为PS Key专用,且每个ptn文件只有一个,如sample ptn截图所示,以下截图是qcc3008的ptn设置;

PS Partition 一般大小为8K;其余的XUV size,需要基于实际xuv size进行设置(只大不小原则);

问题点3:.ptn文件如何操作?

ptn文件操作使用nvscmd指令;
nvscmd -usb 0 dump 实际路径\back.ptn ,其作用是把device(如CSR8670)中的.ptn文件dump 出来;--当device中没有.ptn文件时,具体错误提示如截图:

烧录ptn文件:通过nvscmd -usb 0 burn 实际路径\sqif.ptn all, 写ptn file 到SQIF中;Note:执行烧录动作,需把对应partition定义的文件放置在同一目录下,在文档《CS-334172-UG-2.pdf》P13有描述到“5. Make sure the folder contains PTN file and all of the other required XUV image files before programming SQIF with the contents. See”
删除flash: nvscmd -usb 0 erase
读取Flash 相关信息:nvscmd -usb 0 identify

问题点4:如何计算每个partition 的size大小?

在计算每个partition的size大小前,需先使用“nvscmd -usb 0 identify”指令来读取当前device上外挂的flash 总大小,如以下截图所示:

如截图显示,当前external flash 为32Mbit;
32Mbit = 2048Kword;
此时.ptn中就按照2048K word 大小进行设置;

Attention需理解的是,描述SQIF Flash大小使用的单位是Mbit;而ptn文件中partition分区中的“K”,指的是Kword,注意两者换算

在《CS-334172-UG-2(SQIF Configuration User Guide).pdf》Page12中,
Run FSSizeCheck to display the file size for the image files in each SQIF partition. 
The read-write partition for PS Keys uses 8192 words and there is no need to run FSSizeCheck for it.
” 由以上描述得知:使用FSSizeCheck 检测每个image 文件的大小,然后再确认需定义多大的partition size 。

问题点5:如何确认ptn文件中应该要分区多少个partition?

在《38845_CS-227835-AN-2.pdf》Page4 描述有“A maximum of 255 partitions can be created. ”即最大partition分区是255个;同时描述了分区只能使用nvscmd指令创建,且需同时创建;但实际Project中分区数量,需依Project 实际应用来定义;在《CS-00403484-UG.pdf》Page12中,描述了平时都有哪些内容被烧录到flash中,就能知道应该要设置多少个partition分区。

Partition的分区数量,直接和API GaiaDfuRequest UpgradeInit 关联 以及.upd文件关联:
GaiaDfuRequest 设置了具体哪一个partition用于DFU数据保存,如当前设置partition 0;
UpgradeInit 则设置partiton mapping table;

Note:如果.ptn只用于进行OTA 升级,那么最简单的设置是:

设置partition  0作为升级用Partiton,具体如截图所示:

Note:partition 0的大小按照实际定义:

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值