[ESP32] 内嵌二进制、其他文件文件,并读取操作

#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"  )

【参考】

构建系统 - ESP32-C3 - — ESP-IDF 编程指南 latest 文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值