菜单
导出(Export)
导出为C数组(Export as C-Array)
此选项将数据写入C样式的文件格式:
数组大小可以是8位、16位或32位。如果选择16位或32位,输出可以选择Motorola(大端序)或Intel(小端序)样式。
数组可以导出为纯C数据。但也可以进行加密。加密将是一个使用指定参数的XOR操作。解密参数也以C样式给出。
数据被写入C数组中。数组名称将使用对话框中给定的前缀。如果块包含多个块,则数据将被写入多个C数组。每个块将包含块编号作为后缀。
示例C文件:
/**************************************************************** *
* Filename: D:\Usr\Armin\VC\HexView\_page4a.C
* Project: C-Array of Flash-Driver
* File created: Sun Jan 15 20:59:35 2006
****************************************************************/
#include <fbl_inc.h>
#include <_page4a.h>
#if (FLASHDRV_GEN_RAND!=1739)
# error “Generated header and C-File inconsistent!!”
#endif
V_MEMROM0 MEMORY_ROM unsigned char flashDrvBlk0[FLASHDRV_BLOCK0_LENGTH] = {
// 数组数据...
};
示例头文件:
/**************************************************************** *
* Filename: D:\Usr\Armin\VC\HexView\_page4a.h
* Project: Exported definition of C-Array Flash-Driver
* File created: Sun Jan 15 20:59:35 2006
****************************************************************/
#define FLASHDRV_GEN_RAND 1739
#define FLASHDRV_DECRYPTDATA(a) (unsigned char)a
#define FLASHDRV_BLOCK0_ADDRESS 0x9000
#define FLASHDRV_BLOCK0_LENGTH 0x100
#define FLASHDRV_BLOCK0_CHECKSUM 0x7F80u
extern V_MEMROM0 MEMORY_ROM unsigned char flashDrvBlk0[FLASHDRV_BLOCK0_LENGTH];
[Prefix-name]_DECRYPTDATA()宏可以用来提取和加密数据。它将根据加密选项和值生成。
输出也可以通过命令行生成。
C数组的声明专门用于bootloader,在某些情况下,可能需要在没有Vector的命名约定使用的编译器抽象的纯C环境中使用这些结构。在这种情况下,使用“Use strict Ansi-C declaration”。
另一个选项是使用所谓的memmap语句。Hexview将生成语句以声明一个定义,然后包含文件memmap.h:
示例:
Memmap declarations generated by Hexview:
#define FLASHDRV_START_SEC_CONST
#include “memmap.h”
文件memmap.h可能如下所示:
#ifdef FLASHDRV_START_SEC_CONST
#undef FLASHDRV_START_SEC_CONST
#pragma section .flashdrv
#endif
总结
这部分详细介绍了HexView程序中导出数据为C数组格式的选项。文档解释了如何设置数组大小和端序,如何导出纯C数据或加密数据,以及如何生成C数组的声明和定义。此外,还介绍了如何使用宏来提取和加密数据,以及如何通过命令行生成输出。这些功能为用户提供了灵活的数据导出选项,以适应不同的编程环境和需求。
这里比较常用的是把flashdrv导出作为hex文件,在升级或者OTA的时候作为刷写流程的一部分。
另外一些特殊的程序也可以这样进行处理,比如某些加密算法等。