bal*_*rjd 8 c embedded binary-data microchip
我想知道是否有办法通过include或头文件或类似的东西将外部二进制文件作为C中的变量加载.
例如,在我正在进行的项目中,我正在使用嵌入式系统,该系统具有使用ASCII数据和命令进行文本和次要图形(框,线等)的图形显示.但是,它也会显示单色位图.所以我有一系列用于用户界面的静态显示,以及一些用于启动画面的位图.
现在我提到它是一个嵌入式系统的原因是没有文件系统来加载数据,只有RAM和程序存储器,所以我希望使用的任何"预制"数据或表必须在编译时加载通过源文件或使用链接器的目标文件.遗憾的是,IDE没有提供任何手段将任何形式的二进制文件加载到程序存储器中,以任何易于识别的方式以这种方式用作数据高速缓存.
如此缺乏做我已经解决的问题,(使用十六进制编辑器将二进制文件读取为ASCII编码的十六进制,并将原始数据作为变量复制并粘贴到头文件中),有没有办法"链接"到文件或"包含"可以在编译时作为const变量加载的文件?
我正在使用的系统是用于Microchip系列处理器的MPLAB X,编译器是GNC.在我尝试通过特定的编译器/链接器软件寻找方法之前,我主要想知道是否有办法通过某些C命令或函数执行此操作.
不,你不能直接这样做.一种方法是将二进制文件转换为C源代码,并将这些部分包含在项目中.转换可以通过您或某些第三方程序编写的简单程序完成.
例如:
Binaray1.c(自动生成)
unsigned char binaray_file1[] =
{
1,2,3,10,20,
....
} ;
Run Code Online (Sandbox Code Playgroud)
Binaray2.c(自动生成)
unsigned char binaray_file2[] =
{
0,0,10,20,45,32,212,
....
} ;
Run Code Online (Sandbox Code Playgroud)
SomeSourceFile.c
extern unsigned char binary_file1[] ;
extern unsigned char binary_file2[] ;
// use binary_file1 and binary_file2 here.
Run Code Online (Sandbox Code Playgroud)