【ChipIntelli 系列】固件分区表和计算可播放音频大小

打开烧录软件,可以看到下面的固件分区表:

image

每种分区大小是可调的, 

 

 

根据你提供的配置文件截图,我整理了CI1306芯片的Flash分区表,并补充了一些说明,希望能帮助你更清晰地理解。

📊 CI1306 Flash分区详情

这份分区信息来自官方配置工具,可以看作是芯片在运行特定Demo程序时的典型分区方案。

 
 
分区名称 起始地址 预留大小 文件路径 对应文件 说明
ASR (用户代码) 0x4000 0x3F000 (252KB) ./user_code/user_code.bin 用户应用程序 存放用户编写的核心程序代码。
ASR (算法模型) 0x43000 0x2000 (8KB) ./asr/asr.bin 语音识别模型 存放语音识别(ASR)的算法模型文件。
DNN 0x45000 0x170000 (1.44MB) ./dnn/dnn.bin 神经网络模型 存放深度神经网络模型,用于更复杂的语音处理。
Voice 0x1B5000 0x190000 (1.56MB) ./voice/voice.bin 语音提示音资源 存放设备的提示音、应答音等音频资源文件。
UserFile 0x1CE000 0x1000 (4KB) ./user_file/user_file.bin 用户配置文件 存放用户自定义的配置参数。
ConsumerData (NV) 0x3FC000 0x4000 (16KB) 无需外部文件 非易失性数据 存储掉电需要保存的数据,如设备配置、历史记录等。

地址与大小说明

  • 地址采用十六进制0x开头),大小为十进制

  • 从起始地址 0x4000(即16KB)开始,意味着前16KB(0x0 - 0x3FFF)可能预留给Bootloader 或系统使用,这在嵌入式芯片中很常见。

  • 各分区地址连续,末尾的ConsumerData分区位于4MB Flash的最高地址区域。

💡 关于分区的几个关键点

  1. 分区非固定:这是一个具体应用(Demo)的分区方案,并非芯片出厂固定。你可以使用官方工具“自动分配”或手动调整起始地址和大小来满足自己项目(如需要更大的用户代码空间或更多语音资源)的需求。

  2. Bootloader位置:如上所述,分区表未显示的前16KB极有可能是Bootloader区域,负责芯片上电启动和固件升级(OTA)。

  3. 与CI1303的通用性:虽然你提供的是CI1306的配置,但由于两款芯片Flash总容量(4MB)和架构相似,CI1303的分区方案很可能与此类似或完全一致。最稳妥的方式是在为CI1303开发时,打开其对应的配置工具进行确认。

📊 分区大小总计

分区名称 起始地址 预留大小 (十六进制) 预留大小 (十进制) 结束地址 (计算后)
ASR (用户代码) 0x4000 0x3F000 258,048 0x43000
ASR (算法模型) 0x43000 0x2000 8,192 0x45000
DNN 0x45000 0x170000 1,474,560 0x1B5000
Voice 0x1B5000 0x190000 1,638,400 0x345000
UserFile 0x1CE000 0x1000 4,096 0x1CF000
ConsumerData (NV) 0x3FC000 0x4000 16,384 0x400000

重新计算总和

⚠️ 关于“已用空间”与“总空间”的说明

  1. 与总容量的差异:所有分区预留大小总和 3.24MB,小于芯片标称的 4MB (4,194,304 字节)。这中间的差额约为 794,624 字节 (约 0.76MB)

  2. 差额部分的用途:这个差额很可能包含:

    • Bootloader 区域:即分区表开始前 0x0 到 0x3FFF 的 16KB 空间。

    • 分区间的间隙:在嵌入式系统中,有时会在分区间留有小间隙作为对齐或保留。

    • 未分配空间:工具可能并未将全部Flash分配完毕,留有裕量。

转换为常用单位

  • 约 3.24 MB (以 1 MB = 1,048,576 字节计算)

 

计算音频大小

当前程序voice预留了约1638KB,所有音频文件重采样为16kbps(2kB/s) MP3后生成 voice.bin,所以最大音频时长大约1638/2=819s左右

posted @ 2026-01-30 11:11  FBshark  阅读(1)  评论(0)    收藏  举报