手机网站头部,网站制作jian she,网页设计产品介绍页面的制作,网站建设的基本准则是什么说明#xff1a;这个工具可以将 Hex 文件 转换为 Bin 格式文件#xff0c;软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。
文中的介绍时 bootloader boot
文档在补充完善中...
有兴趣的朋友可留言探讨。
1. 软件功能#xff1a;
1.生成 bin#x…说明这个工具可以将 Hex 文件 转换为 Bin 格式文件软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。
文中的介绍时 bootloader boot
文档在补充完善中...
有兴趣的朋友可留言探讨。
1. 软件功能
1.生成 bin将 Hex 格式文件转换为 Bin 格式。
2.boot 打包为 bin可以生成指定大小的 bin 格式文件文件多余的空余位置填充随机数。可在生成的Bin文件指定位置填充加密后的指定数据用于程序加密使用。
3.app 打包为 bin 可生成整个程序加密后的 Bin 文件可用于 OTA 中的 APP 文件加密防止APP泄漏。 2. Bootload 加密思路
bootloader文件的构成
bootloader 编译文件 flash加密数据区域 烧录用 bootloader
例如假设app的开始区域为 0x800A000 那boot的文件区域为 0x8000000 ~ 0x800A000
1. Flash加密数据区域 假设取 0x8009800 ~ 0x800A000 共2kb区域作为加密数据的存储区域简单说按app的前一个扇区作为加密数据存储区域因为有的MCU一个扇区大小 2k 有的 1k 视具体型号而定取app的上一个扇区即可。
2. boot 编译文件大小 调整Flash分区的大小boot 的数据不要到 Flash加密数据区域避免交叉导致 boot 被意外擦除。
3. Flash加密数据区域数据结构
typedef struct
{uint32_t app_state; /* app 状态无APP,有APP */uint32_t mark[4]; /* 初始状态数据 */uint32_t id_mark[4]; /* ID加密数据 */... /* 根据需求自定义 */
}APP_t;4. boot文件打包
4.1.设定指定大小 使用专用 上位机软件导入 boot 程序后按设定的大小输出输出 bin 文件多余的地方填充随机数。例如boot编译文件为 32k, 设定输出大小为40 k,那空余的 8k 全部填充随机数这样混淆后即便读出boot程序也不知道boot程序具体多大。
4.2.插入加密数据 在预留的加密扇区内指定的位置插入加密数据。 如数据 mark[4] 是boot第一次运行时会检测的数据检测这个数据和预期的相符才执行 boot 的加密工作加密完成后再 修改或删除 mark[4] 数据确保 boot 的加密工作只做一次。 id_mark[4] 是加密数据通过读取 MCU 的 ID 再通过AES加密算法加密后存储到 id_mark[4] 。
uint32_t mark[4]; /* 初始状态数据 */
uint32_t id_mark[4]; /* ID加密数据 */3. APP 加密思路 1. app 按16字节凑整即app的大小是 16 的整数倍这样方便 AES 加密加密前在app文件末尾插入app文件的 CRC16 校验值这样boot可以校验app的完整性。在凑整和添加CRC16值后再AES加密文件最终得到的bin文件作为 boot 升级用。 2.app校验ID的有效性app通过读取 boot 加密区域的 ID 加密数据解密后与读取的MCU ID 做对比判断程序的有效性。
4. boot 启动流程 5. App 启动流程 app通过读取 boot 加密区域的 ID 加密数据解密后与读取的 MCU ID 做对比判断程序的有效性。 6. AES 加密算法代码 7. CRC16 校验算法代码