本文档为「外部资源」系列的第一篇,讲解如何在离线阶段生成资源文件并烧录到Flash。
代码侧如何使用这些资源,可参看下篇《瑞萨DA1469x外部资源应用程序集成指南》内容。
概述
瑞萨DA1469x SDK支持将图像和字体等图形资源存储在Flash的专用区域,而不是编译进应用程序二进制文件。这样做的好处:
显著减少应用程序的RAM占用
灵活管理大型图形资源,可独立更新而不必重新编译固件
多个资源可共用同一Flash分区,通过偏移量区分
Flash存储区被划分为逻辑区域,称为分区(Partitions)。例如,图像位图数据和自定义字体都可以存储在NVMS_LOG_PART分区中。
emWin图形库通过流式位图(Streamed Bitmaps)机制从外部介质读取数据,支持两种外部资源格式:
| 资源类型 | 文件格式 | 生成工具 | 用途 |
| XBF字体 | .xbf | emWin Font Converter | 自定义字体渲染 |
| 位图数据流 | .dta | emWin Bitmap Converter | 图像显示 |
两种文件都必须以魔数字(Magic Word)开头——emWin首次加载时会校验此字符序列,校验失败则整个加载过程中止。
生成资源文件
1.1 生成XBF字体文件
使用emWin提供的Font Converter工具:
打开Font Converter
选择目标字体、字号和字符集
导出为.xbf格式
注意 ⚠️
生成的.xbf文件必须包含魔数字头,否则后续emWin初始化时会中止。
1.2 生成位图数据流文件
使用emWin提供的Bitmap Converter工具,操作分两个阶段:
阶段1—缩放图像(如需要)
打开Bitmap Converter,将图像拖放到白色区域
从菜单栏选择Image→Scale……
在弹出窗口中输入新尺寸并点击Ok
缩放后的图像将显示在工具中
阶段2—保存为数据流格式
从菜单栏选择File→Save as……
在弹出窗口中选择.dta格式
点击Save
在弹出窗口中选择图像的颜色格式并点击Ok
注意 ⚠️
生成的.dta文件同样必须以魔数字开头。
烧录资源到Flash
2.1 启动SmartSnippets Studio
选择New创建新项目(如已有项目可跳过)
输入项目名称
选择通信接口和端口(推荐使用JTAG接口以获得更快的通信速度)
选择设备系列:DA1469x-00
打开项目
2.2 读取分区表
切换到QSPI Partition Table窗口
在Partition Table区域,点击Connect,等待光标停止旋转
点击Read,所有分区条目将被显示出来
2.3 烧录XBF字体数据
加载文件:
在QSPI Partition Table区域,点击Browse
在弹出窗口的Files of type部分选择All Files
搜索并选择要烧录的XBF文件(.xbf)
点击Open,文件内容将显示在QSPI Partition Table区域下方
执行烧录:
在Partition Tasks区域,选择存储XBF数据的分区(例如NVMS_LOG_PART)
设置相对于分区起始地址的偏移量(首次烧录通常使用零偏移,即0x00)
点击Burn,等待光标停止旋转
点击Verify确认写入成功
2.4 记录已占用的内存空间
烧录完成后,务必记录XBF数据占用的内存空间大小,确保下一个资源存储在空闲且不重叠的区域。
例如,如果XBF字体数据占用了0x00到0x1ADF的空间,则下一个资源的偏移量应从0x1AE0开始。
注意 💡
这一步的偏移量是后续应用程序配置的关键参数,请妥善记录。
2.5 烧录位图数据流
加载文件:
在QSPI Partition Table区域,点击Browse
在弹出窗口中选择All Files
搜索并选择位图数据流文件(.dta)
点击Open,内容将显示在QSPI Partition Table区域
执行烧录:
在Partition Tasks区域,选择分区(例如NVMS_LOG_PART)
设置偏移量(需紧接XBF字体数据之后的空闲区域,例如0x1AE0)
点击Burn,等待光标停止旋转
点击Verify确认写入成功
Flash分区内存布局
烧录完成后,日志分区(NVMS_LOG_PART)的内存布局示例:
| 资源类型 | 存储分区 | 偏移量 | 说明 |
| XBF字体数据 | NVMS_LOG_PART | 0x00 | 自定义比例字体 |
| 位图数据流 | NVMS_LOG_PART | 0x1AE0 | Logo图像等位图资源 |
注意 ⚠️
多个资源可以存储在同一个分区中,只要偏移量不重叠即可。也可以将不同资源存储在不同分区中。
这个布局表是连接两篇文档的关键产物——应用程序集成时需要用到这里的「分区ID」和「偏移量」参数。请继续阅读下一篇《外部资源应用程序集成指南》。
工具链总结
| 工具 | 用途 | 提供方 |
| SmartSnippets Studio | 烧录外部资源到Flash、管理QSPI分区表 | Dialog Semiconductor |
| emWin Bitmap Converter | 将图像转换为位图数据流(.dta) | SEGGER |
| emWin Font Converter | 生成XBF字体文件(.xbf) | SEGGER |
烧录阶段注意事项
魔数字要求:XBF文件和位图数据流文件都必须以魔数字开头,否则emWin会中止加载过程。文件不能被截断或损坏。
分区偏移管理:烧录多个资源到同一分区时,必须正确计算偏移量,避免数据覆盖。建议每次烧录后记录已占用空间。
验证写入:每次烧录后应点击Verify确认数据完整性,防止写入错误。
通信接口选择:推荐使用JTAG接口进行烧录,比UART等接口速度更快。
分区选择:可以选择任何合适的分区存储外部资源,但需确保分区大小足够容纳所有资源数据。
烧录工作流程
交付物清单
完成本文档所有步骤后,你应当获得以下信息,用于后续应用程序集成:
交付物:字体资源分区ID
示例值:NVMS_LOG_PART
用途:应用程序宏PARTITION_ID_XBF_FONT
交付物:字体资源偏移量
示例值:0x00
用途:应用程序宏PARTITION_OFFSET_XBF_FONT
交付物:位图资源分区ID
示例值:NVMS_LOG_PART
用途:应用程序宏PARTITION_ID_BITMAP_DATASTREAM
交付物:位图资源偏移量
示例值:0x1AE0
用途:应用程序宏PARTITION_OFFSET_BITMAP_DATASTREAM

全部评论