一、 开发环境搭建
目前国内大多数开发者使用的都是WinXP/Win7/Windows XX做MCU的开发。习惯Windows环境开发的朋友,如果一旦一接触到MCU需要是Linux环境来进行开发编译,第一反应理所应当是“臣妾做不到”!比方说,我们主角ESP8266这颗芯片,原厂提供的就是基于Linux做的开发(早期乐鑫还提供VM的开发环境镜像)。因此,我们为了开发这块芯片,就避免不了与linux打交道。
在Windows上安装虚拟机,再在做芯片的开发,这是目前比较常用的一种方式。但是如果基于VistualStudioCode插件的alios-studio进行开发需linux开发环境的,我是更推荐如下这种方式:使用docker
那么我们现在开始搭建windows下基于docker的ESP8266的alios-things的开发环境。
系统环境: Windows10
应用环境: Docker安装完毕(Windows下安装docker的方式可以到网上查一下)
VisualStudioCode(以下简称VSCode)
1、 VSCode安装alios-studio插件,操作如图1所示
图1
注意:记得把C/C++的插件也一并安装好,alios-studio对其有依赖.
2、安装alios-things的docker镜像
方法A:
有能力的同学可以参考我在github给出的dockerfile文件(当然也可以不参考),自己搭建一个docker镜像
https://github.com/lanjackg2003/alios-things-docker.git
方法B:
直接从dockerhub服务器通过pull方式获取我编译好的镜像,方法如图2
https://hub.docker.com/r/jacklan/alios-things-docker
图2
打开命令行,执行如下命令
docker pulljacklan/alios-things-docker
至此,Windows下的支持docker方式的编译环境已经搭建完毕了。
二、 克隆alios-things仓库代码
可以通过安装git工具,并通过git clone指令进行下载
git clone https://github.com/alibaba/AliOS-Things
如图3所示:
图3
当然你也可以使用你熟悉的工具从github中下载alios-things的代码。
三、 编译Esp8266的HelloWorld固件
1、用VSCode打开AliOS-Things代码仓库,如图4
图4
2、 修改Alios-Things的HelloWorld.c代码
如图5,增加了一句代码:
printf("esp8266hellowrold example by jack!\r\n");
图5
3、通过快捷键 CTRL+Shift+` 三个按键,打开终端
图6
我们可以看到,powershell的路径已经是alios-things代码仓库目录了,所以我们接下来把这个目录挂载到docker的容器的工作目录里面。
在powershell中执行cmd切换到命令行
docker run -v %cd%:/home/alios/AliOS-Things --name alios-things-build -it --rm jacklan/alios-things-docker
小窍门:想在powershell直接调起docker的容器可以直接将命令行脚本转城bat文件,然后运行。
图7
后续我会将这个Win_Build.bat也放到github中.
4、 接下来,使用alios-things的cube工具来编译刚刚我们的HelloWorld代码
在docker容器中执行如下命令
aos make helloworld@esp8266
图8
图9
小贴士:
四、 烧写固件到ESP8266开发板
到乐鑫官网下载烧录工具: Flash 下载工具(ESP8266 & ESP32)
https://www.espressif.com/zh-hans/support/download/other-tools
使用乐鑫的Windows下载工具,按照如下地址下载:
文件名 |
烧录地址 |
boot_v1.7_921600.bin |
0x0 |
esp_init_data_default.bin |
0x3fc000 |
blank.bin |
0x3fe000 |
0x1000
|
“boot_v1.7_921600.bin" "esp_init_data_default.bin" "blank.bin"这三个文件可以在
“xxx\AliOS-Things\platform\mcu\esp8266\bsp”目录找到。
打开烧写工具,按照表格的地址进行填写后,对ESP8266板子进行烧写即可。
当前我使用的是NodeMCU这个开发板,所以我的烧录配置参数如下图
图10
五、 验证结果
图11
从串口打印中可以看到 “esp8266 hellowrold example by jack!” 的输出信息。
注意:
串口参数:
波特率 : 921600
停止位 : 1
数据位 : 8
奇偶校验 : 无
补充注意:
对于非Win10的 Windows系统,虽然docker也是支持的。但是要注意一点,其实你的docker是跑在你的虚拟机上面 并非真实的windows上的docker。
因此 你是无法直接通过windows的文件路径挂载到docker里面,应该挂载虚拟机下的路径到docker容器。
在此有两个步骤:
1.将windows上的路径,通过虚拟机共享文件夹的方式共享到docker虚拟机
2.挂载时候,使用docker下的共享文件夹路径进行挂载。
如:
docker run -v /G_DRIVE/vmshare/alios/AliOS-Things:/home/alios/AliOS-Things --name alios-things-build -it --rm jacklan/alios-things-docker
这句指令的"G_DRIVE"其实是"G盘"与docker虚拟机共享的文件夹的挂载路径。
如果挂载windows路径到docker虚拟机,可以参考以下链接(特别注意设置共享文件夹后,一定要重新虚拟机才会生效)
完整记录在 windows7 下使用 docker 的过程
总结一下,本人是比较推荐win10下使用docker技术进行开发,其他windows下这种方式效率其他没有那么高。部分原因从刚刚的分析过程应该可以体会一二。