Gaming Headset 浅谈之数据篇——Partition Table 讲解

一、概述

在该Gaming Headset方案中,为了确保各种功能的正常运行在代码内部有一个至关重要的部分,该部分是运行 APP 功能以及 OTA 功能的基石,这部分就是我们今天要介绍的内容 —— Partition Table

二、Partition Table 作用

1. Partition Table 是存放在代码中一段数据,数据长度为 444 字节,里面存放的是目前程序的版本,各个代码的起始位置(Host 端的代码以及 NXH 3670 firmware 的位置)。其在代码启动时以及 OTA 时都是以其作为基准来进行。
2. Partition Table 的存放位置:目前 LPC54114 + NXH3670 的方案中 Partition Table 存放在Flash 后端位置中(0x3F400)中,建议 Partition Table 存放在 Flash 的后端位置中,预留前面位置给 SSB 以及 Application Code。

三、Partition Table 详解分析

Partition Table 的主要组成部分为两部分: Header,Entry。

上图为 Partition Table 的内容,下图为 Partition Table 的Header内容

1. 0xBEBA 是 Partition Table 的signature,用于识别是否为 Partition Table 的开头。
2. 0x04 代表目前 Partition Table 中有4个部分,下一个字节 0x01 表示需要运行的是 Partition ID 为 1 的程序代码
3. 0x30 代表目前Partition Table 版本为 0x30,用 OTA 升级。
4. 接下来的三个字节是 padding date[3] 数据。
5. 接下来该4个字节是预留字节
以上者5部分是 Partition 的Header 部分,下面是 Partition Entry 部分的解析
1. 6F 74 61 00 00 00 00 00 00 00 00 00 00 00 00 00 这16个字节为 Partition Table Entry 的名称。
2. 0x00 是代表这一部分的 Partition 类型为 Firmware,如果是 0x01 则是代表这一部分的 Partition 类型为 Date
3. 这三个字节是 Padding data[3] 数据,目前没有使用。
4. F0 0B 00 00 代表该部分 Entry 的开始地址是 0x0BF0。
5. 10 5C 01 00 代表该部分 Entry 的整体大小为
6. 00 00 00 00 表示第一部分的数据相对开始地址(ix 的数据)的偏移量,即第一部分的开始地址为 0x0BF0 + 0x00
7. 10 74 00 00 表示第二部分的数据相对开始地址(ix 的数据)的偏移量,即第二部分的开始地址为 0x0BF0 + 0x7410
8. FF FF FF FF 是偏移量的缺省值,代表第三部分没有数据,因为每一个 Entry 都有最多可以存储 9 个部分的数据,所以第三部分到第九部分这7个部分都是缺省值 FF FF FF FF。
9. 00 00 00 00 00 00 00 00 为预留空间 Reserve[2]
以上就是一整个 Entry 的内容分析。

四、结语

这一篇我们详细的介绍了 Headset 具有指导作用的数据部分 Partition,这个部分就用来引导我们 APP 以及 OTA 功能的顺利进行,那么 Partition Table 是怎么样引导运行 OTA 功能,以及 OTA 功能是怎么运行的,敬请期待下一篇——Headset 浅谈之 OTA 篇。



参考资料:

  1. NXH3670 Datasheet      — NXH3670UK; 2019, NXP Semiconductors
  2. AN12360 application note — NXH3670 Gaming; 2019, NXP Semiconductors
  3. AN11953 application note — Boot loader; 2019, NXP Semiconductors

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论