简单背景

我之前的文章都是推荐使用项目组提供的云服务来编译固件。好处是,简单方便,只需要在网页上选择自己需要的模块就可以了。云服务编译好之后会把固件发送到邮箱。

不过,并不是只能通过云服务获取固件。完全可以通过源码自己编译固件,动手能力强的,可以自己搭建编译环境。神奇的是,乐鑫并没有给出友好的文档说如何搭建。我之前尝试通过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 https://github.com/nodemcu/nodemcu-firmware.git克隆远程仓库源码到本地备用。

开始修改固件

在修改固件前,强烈推荐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 https://go.microsoft.com/fwlink/?LinkId=733558

// 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就可以编译了。编译过程很快,比起云服务快很多了。

modemcu 打包_自己动手编译nodemcu固件相关推荐

  1. linux nodemcu 编译,nodemcu固件编译

    nodemcu固件编译 by HYH | 2017 年 10 月 10 日 下午 8:27 一.编译环境搭建 1.下载 下载vbox及ova虚拟机包. 里面也有安装文档. 2.安装及必要软件安装 安装 ...

  2. linux nodemcu 编译,nodeMCU固件云编译没有esp32的版本

    我都跟着做了的.以下为我所有的问题. 问题1:编写Pwm控制舵机程序,舵机无反应,但是led有闪烁 根据资料http://wiki.ai-thinker.com/esp32从官网下载固件 git cl ...

  3. modemcu 打包_nodeMcu烧录工具-nodeMcu固件v1.0下载__飞翔下载

    nodeMcu烧录工具是一款nodeMcu固件驱动,包括了nodeMcu烧录软件,方便blog下载链接,有需要的用户可以下载这个官网必备的nodeMcu工具. NodeMCU介绍 NodeMCU是一个 ...

  4. modemcu 打包_nodemcu固件的烧录及lua开发

    一.板子介绍 NodeMCU 1.0/ESP 8266 12E 该模块是安信可公司生产的,并且提供全部开发资料. 对该模块的开发有两种方式: 一种是基于乐鑫官方推出的SDK开发包在 安信可ESP的一体 ...

  5. nodemcu固件_从无到有玩NodeMcu:web端控制

    本文所有软件资源均可点击相应的超链接下载 我们的目标: 利用网页web端为搭载NodeMcu的esp8266连接wifi 硬件准备: 基于NodeMcu的esp8266 数据线:usb+micr-us ...

  6. 自己动手制作路由器固件之快速开始

    如今市面上一两百元的双频(2.4G和5G,802.11ac)智能路由,几乎全部都是联发科的MT7620(2.4G+交换机)加上MT7612EN(PCIE接口,5G)的解决方案,软件也几乎千篇一律是Op ...

  7. Linux编辑firmware的文件,rk3328编译Linux固件

    一.编译 Linux 固件 这一章将介绍编译 ROC-RK3328-CC Linux 固件的整个流程. 1.1 准备工作 Linux 固件在如下的环境中编译: Ubuntu 16.04 amd64 安 ...

  8. 自己动手编译QGIS 3.18源代码,含出错大全和解决办法

    从2月19日开始打包,到2月23日,QGIS 3.18的安装包经过漫长的4天才完成打包,在这等待的4天里,大家有没有像我一样萌生出自己动手编译源代码的想法呢?今天想分享的是QGIS3.18源代码编译的 ...

  9. Android_多渠道打包_混淆

    Android_多渠道打包_混淆 1.多渠道打包配置 2.混淆 1.多渠道打包配置 android studio version 4.2.2 sdk version 30 作用: 1.统计用户安装AP ...

最新文章

  1. SVN提示:由于目标机器积极拒绝,无法连接 的解决方法
  2. An Algorithm Summary of Programming Collective Intelligence
  3. 【Python实战】使用python计算多种类型到期还款日
  4. java建立检索项语料库_sentilib_语料库项目_search模块的实现
  5. IT职场人生系列之二十:危险职业(下)
  6. ❤️Mybatis编程界的能手—使用注解开发(建议收藏)
  7. 接收子元素focus_获取元素的直接的子元素childen
  8. 机房服务器维护管理规范,机房维护管理规范.pdf
  9. leetcode之Find All Numbers Disappeared in an Array(448)
  10. 什么是模拟信号?数字信号?区别是什么?它们又是如何完成转换的?
  11. 360手机卫士linux版,360手机卫士极速版
  12. crontab命令格式详细说明与常用各种写法总结
  13. 报告:加密货币和石油市场暴跌是市场接近“闪电崩盘”的标志
  14. HDU 2111 JAVA
  15. MySQL连接Navicat
  16. 计算机sps材料,SPS网络通信-Phocos.PDF
  17. 公司绝对不会告诉你的20个职场潜规则
  18. ps再制命令介绍以及案例展示再制命令的操作步骤
  19. python实现留一法_机器学习基础
  20. 国内外免费的建站程序汇总(收藏)

热门文章

  1. 空间两个直线之间的距离和公垂线
  2. 前端系列之jQuery(jQuery瀑布流布局)
  3. 远程办公之怎样在外网登录在线答题网站
  4. 进阶渲染系列(七)——三向贴图(任意表面纹理化)【进阶篇完结】
  5. FinalShell,免费好用的国产ssh连接工具
  6. [ECCV2018] 端到端的弯曲文本检测与识别
  7. 数据挖掘系列(6)决策树分类算法
  8. [填坑]winform 内存不足
  9. Java模拟实现并发
  10. python对比文本相似度