完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
简单背景
我之前的文章都是推荐使用项目组提供的云服务来编译固件。好处是,简单方便,只需要在网页上选择自己需要的模块就可以了。云服务编译好之后会把固件发送到邮箱。 不过,并不是只能通过云服务获取固件。完全可以通过源码自己编译固件,动手能力强的,可以自己搭建编译环境。神奇的是,乐鑫并没有给出友好的文档说如何搭建。我之前尝试通过alios提供的esp编译环境来搭建nodemcu的编译环境,比较麻烦,各种路径报错。所以,只能通过其他大牛提供的方案。 docker docker编译 本文要介绍的是使用marcelstoer提供的Docker镜像,镜像提供了所有需要的编译工具。 这里不介绍如何安装docker,具体方法自行网上搜索。或者看docker官方文档。需要注意的是,docker不支持Windows10家庭版,我曾经在Windows10家庭版上使用docker toolbox来编译固件。不过,我还是推荐使用Linux虚拟机来弄docker,当然mac也可以。 通过docker pull marcelstoer/nodemcu-build获取docker镜像。 获取固件源码 通过git clone --recurse-submodules 开始修改固件 在修改固件前,强烈推荐vs code作为编辑器。打开后,vs code监测到c或者c++的文件会提示安装C/C++扩展插件。该插件会自动安装一些工具。安装完成后,vs code支持define高亮显示。 当然缺少配置的情况下,vs code会提示配置c++,主要是include路径之类的。如果只是想编译固件,不打算自己写C模块的话,可以忽略提示。 选择模块 nodemcu的代码主要集中在app文件夹里面,由于只要修改模块,直接到app/include/user_modules.h调整宏定义就可以了。把不要的模块屏蔽了,把需要的模块打开。但是,需要注意有些模块依赖其他模块一起使用。比如,u8g2这种模块,需要spi或者iic来驱动液晶。 其他配置项 通过app/include/user_config.h可以配置波特率、flash大小、浮点支持(默认)。还有其他一些配置项。如果你对固件模块比较了解的话,应该可以比较快的看懂这个文件。更多关于固件配置的看这里。 配置tasks 为了避免重复执行docker命令的烦恼。可以配置个tasks(只针对vs code)。具体的做法是,在.vscode文件夹下面新建一个tasks.json文件,把下面的代码复制过去就可以了。 { // See // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "docker", "args": [ "run", "--rm", "-it", "-v", "`pwd`:/opt/nodemcu-firmware", "marcelstoer/nodemcu-build", "build" ], "group": { "kind": "build", "isDefault": true, } } ] } 要编译的时候,使用快捷键CTRL+shift+B就可以编译了。编译过程很快,比起云服务快很多了。 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 10:16 , Processed in 1.128769 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号