ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件
2021-03-28 19:26
标签:访问 util 根据 guide uid 一个 文件中 roo 服务 场景: 在写ESP8266 web服务的时候,免不了要将自己设计的网页html和css等文件放入到固件中。在arduino中有fs可以进行上传文件,然后通过文件系统读出。那在ESP-IDF中该怎么办呢。有几个思路 1. 通过flash_download_tools 直接向固定地址写入文件。然后在代码中读出来 2.通过串口或者tcp等通信方式传给8266然后再写到flash 中。 3.直接转成C字符串嵌入到代码中 上述是我之前想到的,比较麻烦,看到了官方文档提供了一种更简单的方法。 链接:https://docs.espressif.com/projects/esp-idf/zh_CN/v4.1-beta1/api-guides/build-system-legacy.html 这里我就直接贴官方说明了,稍微改了下例子,方便举一反三: 有时您的组件希望使用一个二进制文件或者文本文件,但是您又不希望将它重新格式化为 C 源文件。 这时,您可以在 或者,如果文件是字符串,则可以使用变量 文件的内容会被编译进 flash 中的 .rodata 段,并通过符号名称来访问,如下所示: 符号名称是根据文件的全名生成的,如 这样一看就能直接当数组引用了。 ESP32也一样~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件 标签:访问 util 根据 guide uid 一个 文件中 roo 服务 原文地址:https://www.cnblogs.com/skyraker/p/12617083.htmlcomponent.mk
文件中设置变量 COMPONENT_EMBED_FILES
,以这种方式指定要嵌入的文件的名称:COMPONENT_EMBED_FILES := server_root_cert.der
COMPONENT_EMBED_TXTFILES
,这将把文本文件的内容当成以 null 结尾的字符串嵌入:extern const uint8_t web_file_index_html_start[] asm("_binary_index_html_start");
extern const uint8_t web_file_index_html_end[] asm("_binary_index_html_end");
COMPONENT_EMBED_FILES
中的所示,字符 / , . , 等都将会被下划线替代。符号名称中的 _binary
前缀由 objcopy
添加,对于文本和二进制文件都是相同的。extern const uint8_t web_file_index_html_start[] asm("_binary_index_html_start");
extern const uint8_t web_file_index_html_end[] asm("_binary_index_html_end")
char *str =web_file_index_html_start;
unsigned int str_len =web_file_index_html_end-web_file_index_html_start; httpd_resp_send(req, str,str_len );
文章标题:ESP8266 基ESP8266_RTOS_SDK (ESP-IDF )中嵌入网页文件
文章链接:http://soscw.com/index.php/essay/69184.html