选择RTOS SDK进行开发
在上一篇内容里面说过,ESP8266可以选择很多种方案进行开发,例如Arduino,lua,python,官方的RTOS SDK,NONOS SDK开发,看样子他们不过是使用的编程语言不同,但是编程语言不过相当于兵器,我认为从本质上来讲,可以分为三类,第一类就是官方的RTOS SDK和NONOS SDK,原厂的东西兼容性、功能和运行速度肯定是最好的,直接用代码编译成了固件;第二类就是Arduino,这种类型也是直接由代码编译成了固件,因为按照Arduino的方式进行编写,以及添加Arduino不同的组件库,所以,在代码的处理上肯定和官方的不同;第三类就是Lua和Python的这两种脚本语言,他们的方式是相当于先烧写进去解释器的固件,然后再写脚本语言放进去让解释器根据脚本语言去执行,这种方案的功能和运行速度毫无疑问的不如第一类官方的SDK。
但是,第二类和第三类的优势也是显而易见的,那就是开发的速度是很快的,尤其如果以前开发过项目,迁移起来也是不用费太大力气的。
我使用Lua开发过两个项目,一个是合宙的4G模块,一个就是ESP8266的NodeMCU,虽然我的心里真的挺担心使用脚本语言会不会出问题,尤其使用Lua语言,属于弱类型的动态语言,而我刚开始接触的语言是Pascal语言,也可能是性格的原因,所以对这种语言有种天然的不放心,如果不是项目工期太赶,我是真的不敢使用这种语言的,就像是埋地雷似的,没有编译器帮我在编译的时候告诉我哪里出问题,真的很担心。
但是,好在这两个项目都运行了两三年了,完全没出问题,我只能说,合宙的威廉希尔官方网站
挺厉害的,以及感谢开源的大佬们的精心付出了。
至于官方的SDK中,为什么选择RTOS SDK,其实在上一篇也提到过,NONOS SDK一方面停止更新了,另外一方面加个多线程会轻松很多,最主要的就是官方推荐RTOS SDK,大概是因为最新的RTOS SDK 3.0以后的代码风格类似于esp-idf了,而ESP-IDF是ESP32官方推荐的编码方式,其实呢,RTOS SDK也在2021年也停止更新了,毕竟在2026年就要停止供货周期了。
选择开发环境
开发环境的选择,有一个集成式的IDE,就是安信可开发的AiThinkerIDE,最新版本1.5,缺点是使用的是RTOS SDK V3.0,并没有采用最新的版本,因为这个IDE也很久没有更新了。
现在,大部分应该都是采用的是Visual Code+编译器+SDK的形式进行的开发,或者采用的Eclipse+编译器+SDK,其实AiThinkerIDE的底层也是Eclipse,包括rtthread-studio也是Eclipse。
所以,我决定也采用Visual Code+编译器+SDK的形式进行的开发.
搭建环境
搭建环境可以从半颗心脏的CSDN博客或者B站中进行查看,也可以直接按照我的流程来,大佬的教程有些地址变了。
首先要明确下载的几个东西:
- Visual Code
- ESP-IDF
- 编译器
- SDK
第1个不用多说,非常强大的编辑器。
第2个其实是GNU的兼容环境,主要是需要里面的MSYS2环境,然后送了一个ESP32的开发环境。
第3个是编译器
第4个是ESP8266的SDK
首先,第1个不必多说,自己下载就可以了;第2个的下载链接,下载后进行解压。然后第3个和第4个都可以在这里找到,如果感觉下载慢,可以使用镜像进行加速。
然后解压编译器,将编译器放在msys32下的opt目录当中,里面会有一个esp32的目录。
然后解压SDK,将SDK放在msys32下的home目录下的用户目录当中,里面会有一些配置文件。
然后打开mingw64,在这里我们进行配置变量。
输入:vim /etc/profile.d/esp32_toolchain.sh
,然后就可以进行编辑了。
然后我们修改成下面这样:
export PATH="/opt/xtensa-lx106-elf/bin:$PATH"
export IDF_PATH="/home/zcxj-1/ESP8266_RTOS_SDK"
zcxj-1是我的用户名,自己的要根据自己的进行更改。
环境到这里基本上就搭建好了,然后继续进行下一步。
首先我们需要在ESP8266_RTOS_SDK下创建一个目录,例如我的是workspace,然后将examples\get-started\hello_world这个工程复制到这个目录下,接下来就可以进行编译啦!
我不知道我的哪里出问题了,反正编译失败,大概意思就是找不到Python,好样的,那就准备安装python吧,结果发现pacman没有办法使用,就在我打算自己动手安装MSYS2的时候,突然发现mingw32下是有python的,只不过是PATH中没有,那就算了吧,执行以下两行代码,顺便把esp32_toolchain.sh里面的变量也导入了。
export esp32_toolchain.sh
export PATH=$PATH:/mingw32/bin
然后就没问题啦,接下来输入make menuconfig
,然后就开始编译了,记得选择所在串口号和Flash Size,然后编译成功后,执行make flash就可以进行烧录了!