数码之家

 找回密码
 立即注册
搜索
查看: 6169|回复: 13

ESP8266 windows原生编译入门指引

[复制链接]
发表于 2021-1-13 19:13:29 | 显示全部楼层 |阅读模式
本帖最后由 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

打赏

参与人数 4家元 +40 收起 理由
o535913 + 10 原創內容
jcdzxh + 10 感谢分享
hongo + 10 優秀文章
玛德陛下 + 10 謝謝分享

查看全部打赏

发表于 2021-1-13 20:05:25 | 显示全部楼层
感觉好厉害,MARK一下。
回复 支持 反对

使用道具 举报

发表于 2021-1-13 21:59:13 | 显示全部楼层
:praise:
用到这个,可能用Arduino来玩比较方便。有很多现成的库。
回复 支持 反对

使用道具 举报

发表于 2021-1-13 22:25:59 来自手机浏览器 | 显示全部楼层
感觉乐鑫官方应该给楼主发奖金……
回复 支持 反对

使用道具 举报

发表于 2021-1-13 22:44:17 | 显示全部楼层
感觉楼下好牛逼,现在8266的模块确实便宜。
回复 支持 反对

使用道具 举报

发表于 2021-1-14 09:43:15 | 显示全部楼层
arduino IDE就可以直接烧录程序啊
回复 支持 反对

使用道具 举报

发表于 2021-1-14 12:59:01 | 显示全部楼层
牛人。。。。
不错,原生的好!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-14 16:58:30 | 显示全部楼层
ciker_li 发表于 2021-1-14 09:43
arduino IDE就可以直接烧录程序啊

文题是“ESP8266 windows原生编译入门指引”,而不是“如何使用IDE”。


续:https://www.mydigit.cn/forum.php?mod=viewthread&tid=228970

回复 支持 反对

使用道具 举报

发表于 2021-1-14 17:37:48 | 显示全部楼层
原生入门门槛高
回复 支持 反对

使用道具 举报

发表于 2021-1-15 00:38:27 | 显示全部楼层
我选择用安信可集成的IDE环境,不需要写makefile:lol:
回复 支持 反对

使用道具 举报

发表于 2021-1-15 13:58:10 | 显示全部楼层
看样子楼主要出系列文章呀
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-18 00:13:55 | 显示全部楼层
更简单的是使用esphome,直接用脚本语言写出程序,就可以编译,而且这个最多的是和HA集成,组家庭自动化,esphome里大多数常用功能都已经做成模块了,可以直接调用。当然楼主的技术绝对是大拿,值得敬佩
回复 支持 反对

使用道具 举报

发表于 2021-1-18 19:36:29 | 显示全部楼层
:praise:

不过越看这类文章,越坚定了只选IAR/Keil来做产品开发的决心,有专业厂家搞定开发和调试环境,工程师可以专心开发应用。
至于一些比较冷门的芯片/模块,可以购买现成的
回复 支持 0 反对 1

使用道具 举报

发表于 2021-2-9 15:33:53 | 显示全部楼层
水平有限,只能看看:lol:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-25 08:30 , Processed in 0.171601 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表