|
本帖最后由 wywa123 于 2021-1-13 19:20 编辑
ESP8266 windows原生编译入门指引
ESP8266EX芯片,简单理解为一个带wifi功能的单片机。
厂家乐鑫科技,
https://www.espressif.com/
由于内置存储极小,所以一般外挂一个存储芯片,比如25系列flash存储芯片,用来存储下载的程序(固件)。
再外加上晶振,(天线),加上铁壳盖住,组成一个PCB小板,有人称为模组,例如ESP-12F。
再加上AMS1117(供电),CH340(USB to TTL),构成一个小开发板,插上USB线便可下载程序。
后文便以这种带CH340的小开发板为例。
在乐鑫官方的所有编程帮助文档中,windows平台下,开幕雷击的是,让读者下载他们的linux虚拟机,导入虚拟机去编译。
这种windows平台编译指南,有mao用?
自己动手,丰衣足食。
编译器:
查阅资料发现,ESP8266内的单片机部分是Tensilica L106,GCC有对应的交叉编译器,有对应的windows bin。
乐鑫官方有下载,但是页面藏的很深:
https://docs.espressif.com/proje ... /windows-setup.html
推荐下载v4.8.5版(26.6MB):
https://dl.espressif.com/dl/xten ... e0bdc1-4.8.5.tar.gz
SDK:
SDK分为两种,non-OS 和 freeRTOS的,推荐下载freeRTOS。
freeRTOS有很多版本,主要是3.X版和2.X版。
笔者推荐下载2.1.0版,2.X里最新的版本,笔者曾下载过2.0.0,不过缺少libdriver.a,这么粗心的人。
https://github.com/espressif/ESP8266_RTOS_SDK/releases/tag/v2.1.0
官方是放在github里的,由于某些恶势力对互联网的迫害,下载非常缓慢。
选择2.1.0而不是3.X最新版的根据是,软件生命周期里的真香定律。
刚开始,一帮牛逼的人,把一个软件做强大,然后火了。他们有钱撩妹,功成身退了。
另一帮苍蝇,闻到这个软件火了,千方百计加入开发团队,成功把它搞成一坨X。
作为行外人不了解软件的开发团队,如何判断这个软件好坏?
当一个软件某个时间点体积暴增的时候,它一定被加入了XXX。。
v2.1.0版不到7MB,v3.3版125MB,这里不言自明。
其实下载完SDK与编译工具,理论上就可以编译了(还有些环境变量等)。
编译和链接的参数,在makefile里有。
但编译和链接的参数又臭又长,例如笔者摘出来如下:
编译:
xtensa-lx106-elf-gcc -M -Os -g -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -
mtext-section-literals -ffunction-sections -fdata-sections -fno-builtin-printf -fno-jump-tables -DICACHE_FLASH
-I ../include -I ../../include -I ../../extra_include -I ../../include/espressif -I ../../include/lwip -I
../../include/lwip/ipv4 -I ../../include/lwip/ipv6 -I ../../include/nopoll -I ../../include/spiffs -I ../../include/ssl
-I ../../include/json -I ../../include/openssl -I ../../include/mqtt
-o .output/eagle/debug/obj/hw_timer.o -c hw_timer.c
链接:
xtensa-lx106-elf-gcc -Ls:/ESP8266_RTOS_SDK-2.0.0/lib -Wl,--gc-sections -nostdlib -Ts:/ESP8266_RTOS_SDK-
2.0.0/ld/eagle.app.v6.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lcirom -lcrypto -
lespconn -lespnow -lfreertos -lgcc -lhal -ljson -llwip -lmain -lmirom -lnet80211 -lnopoll -lphy -lpp -lpwm -lsmartconfig
-lspiffs -lssl -lwpa -lwps user/.output/eagle/debug/lib/libuser.a sample_lib/.output/eagle/debug/lib/libsample.a -Wl,--
end-group user/.output/eagle/debug/lib/libuser.a sample_lib/.output/eagle/debug/lib/libsample.a -o 1.out
为了方便,这里明显需要GNU的make和相关工具,这些工具在mingw32里有windows版,但是注意有依赖dll。
比如:
一定需要:
make
mkdir --- windows下是cmd的命令,而不是exe,而且路径分隔符不同'\''/';
mv
rm
可能需要:
sh
bash
需要修改的配置:
把编译器的顶层bin目录加入path环境变量;
新建 SDK_PATH 环境变量为你SDK的解压目录,这个路径的分隔符要用linux下的'/'而不是'\',目录尾不要加'\'或'/',否则会遇到烦人
的错误;
SDK根目录makefile里 SPI_SIZE_MAP?=0 ,这一句要根据flash容量大小改,比如4MB改成4.
SDK根目录makefile里加一句"BIN_PATH := bin",bin是生成目录。
SDK+编译工具+这些小程序,就能编译成功了。
其中前两者加起来33.5MB,最后的小工具加起来才就几MB。
就这些问题,难住了乐鑫官方的人,又整了个600MB的toolchain出来,还没法用。
下载到8266的image,还需要特别处理,他们官方的makefile会调用python处理,需要你装好python并加到环境变量path里.
最后编译方法是,cmd cd到 ESP8266_RTOS_SDK-2.1.0\examples\project_template\下,输入你找来的make(笔者用的是mingw32-make)
,回车就OK了。
PS:编译的时候,在你工程目录里的makefile文件,注意要引用你调用函数所在的库,否则找不到函数。
参考资料:
https://www.espressif.com/
https://blog.csdn.net/yannanxiu/article/details/79495897
https://my.oschina.net/lgl88911/blog/483705
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|