最近在弄这个WiFi模块,发现网上SDK开发方面的资料不多,发现了一套视频教程,不过主讲人的讲课方式实在受不了。对基于SDK开发感兴趣的同窗能够经过本帖在Ubuntu系统上经过Eclipes搭建开发环境。
过程能够分为两步:
一、下载、编译SDK
二、配置Eclipes
1、下载、编译SDK
esp8266的sdk有两种,分别是ESP8266_RTOS_SDK和ESP8266_NONOS_SDK,这二者的区别在于RTOS_SDK有一个叫作RTOS的操做系统,采用了NONOS_SDK部分接口,不支持AT指令。
详见:Q: What is the difference between RTOS and the non-OS SDK?
这里咱们使用NONOS_SDK,下载地址:esp-open-sdk
里边集成了NONOS_SDK的编译器和烧录工具等,也可用此编译器编译ESP_RTOS_SDK中的项目。
咱们直接在命令行进行操做:php
#安装一些依赖工具 $ sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf \ flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial \ sed git unzip bash help2man wget bzip2 #若是ubuntu版本高于14.04可能还须要此工具 $ sudo apt-get install libtool-bin #使用git克隆项目到本地,这里假设项目克隆到了/home/mmmmar/esp-open-sdk $ git clone --recursive https://github.com/pfalcon/esp-open-sdk.git #进入项目文件夹 $ cd /home/mmmmar/esp-open-sdk #编译 $ make STANDALONE=y
注意:在SDK的编译过程当中须要联网下载一些依赖库并编译,并且下载过程很容易失败,我在下载时挂代理才成功的。
若是编译失败能够查看esp-open-sdk/crosstool-NG/build.log 查看崩溃信息,通常都是下载失败。
编译成功后会在esp-open-sdk文件夹出现xtensa-lx106-elf esptool ESP8266_NONOS_SDK三个文件夹,分别是编译器,烧录工具,NONOS_SDK最新版。
这时须要把编译器路径加入到系统路径中,执行:python
#此命令只做用于当前控制台 export PATH=/home/mmmmar/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
这时就能够编译esp-open-sdk/ESP8266_NONOS_SDK/examples中的示例工程了。
须要注意,要把ESP8266_NONOS_SDK文件夹复制到esp-open-sdk文件夹的外部,假如咱们要编译examples文件夹中的at项目,咱们须要把at文件夹复制到ESP8266_NONOS_SDK目录下,否则编译会失败。
复制完以后路径以下:linux
/home/mmmmar ├── ESP8266_NONOS_SDK │ ├── at │ ├── examples └── esp-open-sdk
复制完以后就能够编译at(咱们最初用的AT指令就是这个项目,不过咱们只能添加新的AT命令)项目了。
执行at文件夹下的gen_misc.sh,这里须要输入一些参数。
对于那些参数我也不是特别清楚,个人esp-01(黑色)选择的是:
boot version = none
spi size and map = 1024KB( 512KB+ 512KB)
其他默认。黑色的版的esp-01有1MB的存储空间,而蓝色版只有512KB,不能使用最新版的AT固件。
编译完成后有以下输出:git
!!! No boot needed. Generate eagle.flash.bin and eagle.irom0text.bin successully in folder bin. eagle.flash.bin-------->0x00000 eagle.irom0text.bin---->0x10000 !!!
如今能够把ESP8266_NONOS_SDK/bin目录中生成的固件烧录到开发板中去了,可使用esp-open-sdk/esptool/esptool.py。
不过我用的是windows上的一键烧录工具,你们百度一下就能搜到。github
在配置一栏里须要填写各个二进制文件的烧录地址,这里附上官方文档里说明:ubuntu
详见:2a-esp8266-sdk_getting_started_guide_en.pdf
至此,整套编译工具烧录工具就可使用了,接下来介绍如何配置Eclipesvim
2、配置Eclipes
其实直接用vim+YCM也行,不过集成开发环境仍是用的舒服一点。这里用的Eclipes是eclipse-cpp-neon-2-linux-gtk
1、File-New-Makefile Project From Existing Code
2、输入项目名称,路径,语言类型为C,编译器选nonewindows
三、添加头文件搜索路径,Project-Properties-C/C++ General-Preprocessor Include Paths,Macros etcbash
添加图中两处include文件夹路径
注意在添加esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/include时勾选[Treat as build-in] [ Contains system headers]eclipse
4、添加环境变量,Project-Properties-C/C++ Build-Environment,点击Add
五、建立编译目标,Project-Build Targets-Create
其中,Build command中填入的命令就等于咱们执行gen_misc.sh并输入参数,详见示例工程中的!!!readme!!!.txt文件
6、编译目标,Project-Build Targets-Build
以上,完成了Eclipes全部的配置,附图一张
附加:
/**************************************** ESP8266_NONOS_SDK/include/c_types.h #define TRUE true #define FALSE flase 这两个宏定义在Eclipes的代码提示中会报错,能够修改一下 ****************************************/ #define TRUE 1 #define FALSE 0
ubuntu上烧录方法:
使用esp-open-sdk/esptool/esptool.py,执行以下命令
#这里的参数须要根据本身的需求改变,详见esp-open-sdk/esptool/README.md sudo ./esptool.py --port /dev/ttyUSB1 write_flash 0x00000 eagle.flash.bin 0x10000 eagle.irom0text.bin
烧录时要确保接线牢固,否则可能传输过程当中会出现数据丢失或更改致使固件验证失败
参考:
官网文档
Free and open (as much as possible) integrated SDK for ESP8266/ESP8285 chips
Latest ESP8266 SDK based on FreeRTOS