这里不介绍Linux虚拟机的安装和使用方法,专注ESP8266的SDK的编译和使用。SDK和程序下载工具的官方链接:http://www.espressif.com/zh-hans/support/download/sdks-demos
我使用的是ESP8266 RTOS SDK V1.5.0,Flash下载工具是V3.4.9.2,其他版本的SDK和下载应该都工具大同小异。由于SDK是Linux下的,Flash下载工具是Windows下的,编译出来的bin文件在SDK路劲的bin文件夹中,为了下载方便将SDK放在虚拟机共享目录下进行编译。 SDK的目录结构体如下:
root@ubuntu:/mnt/hgfs/VMShare/ESP8266/ESP8266_RTOS_SDK-master# ls
bin driver_lib extra_include ld LICENSE README.md tools
documents examples include lib Makefile third_party VERSION
example文件夹里面存放的是示例代码,我们就是用这些示例代码为模板进行开发。软件中使用的所有库都是以静态链接库的形式提供的,库存放在lib文件夹中:
root@ubuntu:/mnt/hgfs/VMShare/ESP8266/ESP8266_RTOS_SDK-master# ls lib
libairkiss.a libespnow.a libmain.a libnet80211.a libpwm.a libwpa.a
libcirom.a libfreertos.a libmbedtls.a libnopoll.a libsmartconfig.a libwps.a
libcrypto.a libgcc.a libmesh.a libopenssl.a libspiffs.a
libdriver.a libjson.a libminic.a libphy.a libssc.a
libespconn.a liblwip.a libmirom.a libpp.a libssl.a
有些库的源码没有提供。开放源码的库饿的源码在third_party和driver_lib文件夹中,libdriver.a库的源码在driver_lib文件夹里面,主要是芯片外设的驱动程序:
gpio.c hw_timer.c i2c_master.c Makefile spi_interface.c uart.c
其他的库文件的源码放在了third_party文件夹中包括lwip和 freertos的源码,在源码路径中单独编译可以生成相应的静态库文件。
使用库编程需要在编译的时候链接库文件,以example文件中的wifi_station_machine_demo工程为例,其Makefile中的LINKFLAGS_eagle.app.v6就链接了很多库,可以使用这些库中提供的函数,但是没有链接libdriver库,那我们就自己添加“-ldriver”上去:
LINKFLAGS_eagle.app.v6 = \
-L$(SDK_PATH)/lib \
-Wl,--gc-sections \
-nostdlib \
-T$(LD_FILE) \
-Wl,--no-check-sections \
-u call_user_start \
-Wl,-static \
-Wl,--start-group \
-lcirom \
-lcrypto \
-lespconn \
-ldriver \
-lespnow \
-lfreertos \
-lgcc \
-lhal \
-ljson \
-llwip \
-lmain \
-lmesh \
-lmirom \
-lnet80211 \
-lnopoll \
-lphy \
-lpp \
-lpwm \
-lmbedtls \
-lopenssl \
-lsmartconfig \
-lspiffs \
-lwpa \
-lwps \
$(DEP_LIBS_eagle.app.v6) \
-Wl,--end-group
添加了-ldriver之后才能使用libdriver中的函数。
官方提供了SDK中所有库函数的说明,文档下载官方链接:http://www.espressif.com/zh-hans/support/download/documents,或者在SDK路径下的documents文件夹中有SDK API Reference。