#include <stdio.h>
#define uint8_t unsigned char
#define EXT_FILE(f) \
extern const uint8_t f##_start[] asm("_binary_"#f"_start"); \
extern const uint8_t f##_end[] asm("_binary_"#f"_end")
EXT_FILE(font_bin);
void app_main(void)
{
long file_len = font_bin_end - font_bin_start;
printf("build:[%s %s].\n", __DATE__, __TIME__);
printf("file_addr:[%p~%p].\n", font_bin_start, font_bin_end);
printf("file_len:%ld Bytes.\n", file_len);
printf("=======file hex(%ld):=======\n", file_len);
for (size_t i = 0; i < file_len; i++)
{
printf("%02x ", (uint8_t)font_bin_start[i]);
if (i % 16 == 15)
printf("\n");
if (i > 512)
{
printf(".. .. %02x %02x ", font_bin_start[file_len - 2], font_bin_start[file_len - 1]);
break;
}
}
printf("\n============================\n");
}
以上例子为项目内嵌 font.bin 文件。
EMBED_FILES
和 EMBED_TXTFILES
的区别:
EMBED_TXTFILES
表示嵌入文件时,末尾自动补全一个'\0'
表示字符串的结束。EMBED_FILES
则会原封不动地嵌入原始数据。
在CMakeLists.txt中添加(font.bin)文件相对路径
idf_component_register( EMBED_FILES "font.bin" )
【参考】