如何编译micropython在esp8266的固件
[复制链接]
本帖最后由 michael_llh 于 2016-6-11 23:02 编辑
相信大家对于物联网现在都不在陌生了,但是物联网的开发并不显得那么容易,尽管现在涌现了越来越多的物联网开发平台,我们比较耳熟能详的就是Arduino,在物联网这块也有很多自己的产品,包括它最近推出的Arduino UNO with WiFi,也都是在物联网这块有一个新的开发产品。当然Arduino的优势大家应该会比较清楚,通过更加简单的方式,实现更有趣的开发。当然包括我们现在联发科也联合苹果推出了相应的HomeKit开发套件,联发科的LINKit ONE套件也是联发科在物联网这块推出的一个套件。当然英特尔这个大头之前也是推出了相应的套件,比如说Edison开发套件也是英特尔在这一块的内容。所以对于现在我们说的物联网真的是非常火爆,但是几年的发展下来,各种层出不穷的物联网产品,还不能说是达到了一个智能互联的一个时代,还是各个产品独立分块的一个现象,目前还是很难做到互联互通这样一个现象。 对于物联网开发,门槛算是比较高的,因为设计到的内容是比较多的,比如最开始你需要面对联网问题,其次你需要一个服务器,而后你需要一个客户端来进行操作,所以这里我们会发现,总的三个开发的方向,每一个如果做得好的话就很厉害了,更何况是三个东西同时都是一个人做,所以门槛高是有一定道理的。但是现在由于更多物联网开发平台的出现,也帮助降低了这个门槛,能够帮助我们更快的进入一个物联网的开发过程。那么具体是怎么方便我们开发的呢,我们后面一一道来。
ESP8266算是现在比较实惠并且应用比较广泛的一款WiFi芯片,它本身也是一个芯片,所以是作为直接开发的。或者说进行一个封装之后我们就可以直接使用串口进行操作,也就是使用AT指令,这个就是我们常常说的ESP8266的WiFi模块,直接转换成其他的单片机来进行操作这一块的内容。官方也提供了ESP8266的SDK可以进行开发。 上面是官网,更多关于这款芯片的资料,大家可以参考上面的内容。下图是一些基本的参数截图。 该芯片主频可以选择为80MHz和160MHz,所以对于一些基本的开发来说还是足够用的一个速度。内置了10位高精度ADC,TCP/IP协议栈,等等。所以芯片是非常优秀的。
好了接下来我们要进入正题了,micropython,相信大家对pyboard不陌生了哈,使用的是STM32F405的芯片,将python融入32里面,从而可以在32上面进行python的代码编写,真的是一件很酷的事情,同时作者还是这些东西都开源了,非常的棒,非常的有趣。但是就是有一个问题,单单我们最一些简单的开发,在不做物联网的情况下pyboard还是非常棒的,简单,快开发,但是遇到互联网开发,就比较困难,所以我们想到一个问题,如果esp8266自己能够运行python,那该有多好! micropython的作者非常的棒!他在github上面也给出了esp8266的python代码,非常的棒。 但是没有给出固件,应该是属于还在测试过程中,还没有正式推出,我们可以在Google上面找到固件。 进入第一个个连接进入之后我们就可以选择红色方框Buid Firmware。
之后我们就可以下载相应的固件了,但是这个固件是比较早的就是了,是2015年的固件,所以我们接下来要做的就是来自己编译一个固件。 首先我们需要将我们的micropython的github开源项目的内容下载下来。选择下图的图标就是可以下载下来。或者在window或者linux底下直接使用Git工具clone这个项目下来也是可以的。 我们使用git clone下载的话如下图。 这个编译需要在Linux底下,所以如果是windows的话就需要有一台虚拟机,来帮助完成这个编译的过程。 首先我们在Github目录下进入esp8266的目录。向下滚动页面,我们可以看到一个README.md文件,解释一下,md结尾的是markdown语言编写的一个文本,能够用一些简单的语法完成一些格式,Github项目都会有一个这样的文件对项目进行一个介绍,进入项目之后都会在下方进行一个显示。 再往下我们可以看到一个编译指南,在这里详细说明了该如何自行编译一个我们的esp8266的micropython固件。红色标记的地方说明在我们编译固件之前我们需要ESP SDK的工具来帮助我们完成编译。 点击链接进入该Github项目。 同样需要下载下来,页面向下滚动找到编译说明。这里我们选择的是在Ubuntu底下进行编译,下面图片截图说到我们编译这个东西的时候需要的工具和依赖的一些库等等。我们按照图片说明,在Ubuntu底下安装这些工具即可。 完成了工具和依赖库的安装之后我们再往下看。有一个编译说明。我们按照这个说明就可以,第一步是下载,完成之后进入该目录直接make就可以。 我自己使用的Ubuntu版本是14.01的版本。 同样我们使用git clone下载之后编译,这里和大家说明一下,我进入下载的目录之后,使用make命令编译了两次都出错,之后我换成了make STANDALONE=y就可以了,如果大家也遇到编译失败的情况,也可以尝试使用make STANDALONE=y试一下。 然后我们需要将工具的bin文件添加到我们的系统目录当中,根据提示我们键入下面的语句就可以。 之后我们回到我们的micropython目录当中,按照microPython的esp8266下面的README.md文件中的说明就可以。 首先先更新一下我们的需要用到的子模块内容。 在micropython的目录下面键入git submodule update --init即可完成这个工作。 完成之后我们进入esp8266的目录下执行make就可以编译我们的固件了,第一步的话要先执行make axtls,完成之后在使用make命令,几分钟就可以完成这个工作了,之后我们就得到我们的固件啦。 我们可以找到一个名为firmware-combined.bin的文件,这个就是我们的固件啦。
那么接下来我们就需要知道如何下载这个固件到我们的esp8266当中去,我们可以在我们的adafait的页面中我们可以看到下载的方法,在Linux底下我们可以使用我们的esptool.py这个工具,在windows底下我们就可以直接使用一个图形化工具啦! 网址如上,可以直接下载到。 他们已经给出了很详细的下载方法我们这里大概说明一下。打开之后我们选择Config,然后点击红色方框中的图标。 之后选择我们的固件。打开。 完成之后如下图。起始地址0x0000,不做改变。 回到我们的Operation。应该是会自动检测到你的芯片串口号,没有的话就自己选择一下。 点击Flash就可以开始下载了。 完成之后就有一个绿色的勾。 接下来我们就可以使用我们的板子啦!!! 打开我们的secureCRT,或者你用putty也是可以的哈,串口助手的话就算了,没有那么好的交互性,用起来不是那么方便。推荐前面两个工具。 点击之后我们得到,修改成如下图,选择串口,端口就看自己电脑可能不同,波特率为115200,数据位8位,停止位1位,没有校验位。点击Connect就可以了。 之后我们就进入了,但是敲了几个会出没有反应,会有一点bug。 我们按板子的复位键。(可能多按几次复位)之后我们得到下图就可以啦。(因为我之前连过我的wifi,他会有一个记录,所以这里一开机它就自动连接WiFi了)。同时也可以看到我们的固件时间,是2016-06-07.也就是我们刚刚编译成功的固件。 今天就写到这里啦,然后就可以用python来操作我们的esp8266啦啦啦啦。
|