之前在做智能家居的时候需要用到esp8266,我这边因为esp8266物联网开发板的技小新教程相对齐全就不用串口模块,直接使用板子,但是没想到板子的配备的技小新资料中例程和相关的模板基本不能用,官方的指南有些教程也很是迷惑。于是我这边和队友琢磨了相当的一段时间来重新配置其模板和工程文件,并记录了相关的详细使用文档供大家参考
需要的资料
首先提供给大家网址以便资料的下载和学习:
tip:这里跟大家分享的是不基于操作系统的SDK的开发,比较简便且资料较为齐全
- 乐鑫官网 https://www.espressif.com
- 安信可官网https://www.ai-thinker.com/home
- 参考文档(笔者已为大家整理好) https://pan.baidu.com/s/181ho5M3PVXI1cnlrQLRtsw 密码 niuf
- 工程模板(这里我们采用的是3.0.4版本的SDK并经笔者调试过可使用)https://pan.baidu.com/s/1sCAi1TQJDu7xsE3Jbx2oyQ 密码 f415
- 开发例程集合test-code(经笔者修改移植技小新调试后的可用代码)https://pan.baidu.com/s/1l2GDgul9Hy-dUhIPJaUz2Q 密码 31wg
- SDK 一体化开发环境(IDE1.0) https://pan.baidu.com/share/init?surl=Mbi2xoHQxyYM35lnJEUBTA 密码 fzfd
- 烧录WiFi固件工具:ESP_DOWNLOAD_TOOL https://docs.ai-thinker.com/_media/flash_download_tool_v3.8.5_1.zip
- 安信可串口调试助手 https://docs.ai-thinker.com/_media/tools/aithinker_serial_tool_v1.2.3.7z
- TCP/UDP 网络调试助手(PC版) https://docs.ai-thinker.com/_media/tools/tcpudpdbg.zip
看起来资料好像有点小多哦~不过千万不要有压力,跟着小B往下看,保证学起来简简单单滴
[color=rgba(0, 0, 0, 0.75)]好了,接下来正文开始搭建SDK开发环境
打开ai-thinker-IDE1.0安装文件,选择安装路径
安装完成后,第一次使用aithinker eclipse集成开发环境先以管理员身份运行AiThinkerIDE_V1.0\eclipse\目录下的Confing.exe 应用来配置esp8266和esp32所需要的环境变量(此配置文件运行一次即可)。点击Default设置默认路径,再点击save保存到电脑的环境变量中,记得点一次就行。
安装配置完之后我们会发现在我们桌面没有对应图标,我们需要到AiThinkerIDE_V1.0\eclipse\下找到eclipse.exe文件,右键,选择 发送到->桌面快捷方式,我们就可以在桌面看到图标了。
第一次打开eclipse,会弹出选择eclipse工作区保存的路径,用户自行选择到安装目录下的Ai-Thinker\AithinkerIDE_v1.0文件夹
至此环境搭建完成
接下来,我们可以来进行SDK的烧写和编译
- 配置SDK
(1)复制ESP8266_NONOS_SDK-3.0.4-temple,拷贝一份将文件夹重命名
(2)将SDK包中的driver_lib改名为code(意为存放代码的地方)
注意:这里一定要先在SDK工程包导入IDE之前更改文件夹,切不可在import之后再更改文件名,否则会在源文件夹中留下难以发现的配置参数,后面再导入都会报错,最好的方法就是在导入之前最好先有备份
(3)将example中选取demo拷贝到code中粘贴替换
(4)将example文件夹删除(可选)
(5)将third_party/Makefile修改名为makefile.bak
- 2.将SDK工程导入到编译器中
(1)打开eclipse环境,在’project explorer’中右键点击import
(2)选择C/C++ -> Existing Code as Makefile Project,点击next
3)选择Cygwin GCC,再点击Browse…,选择已配置好的SDK工程路径,点击finish
(4)可点击code->user->user_main.c查看例程程序
(5)在’project explorer’中选中工程名,右键点击’Properties’,在’C/C++Build->Build Commnd’中去掉勾如下图所示并填写 make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6,点击’apply’,再点击OK
注:SPI_SIZE_MAP的赋值需要根据user_main.c开头的定义语句(如下图)去定值,如果没有的或者不支持的值不能对SPI_SIZE_MAP赋值
(6)针对制作SDK空白模板(可选):
对于 ESP8266_NONOS_SDK_v1.5.2 ⾄ ESP8266_NONOS_SDK_v2.2.1 之间的版本,请在 user_main.c 增加函数 void user_rf_pre_init(void) 和 uint32 user_rf_cal_sector_set(void),可参考 IOT_Demo 的 user_main.c。⽤户可在 user_rf_pre_init 中配置 RF 初始化,RF 设置接⼝为 system_phy_set_rfoption,或者在 Deep-sleep 前调⽤ system_deep_sleep_set_option。如果设置为 RF 不打开,则 ESP8266 Station 及 SoftAP 均⽆法使⽤,请勿调⽤ Wi-Fi 相关接⼝及⽹络功能。RF 关闭时,Wi-Fi 射频功能和⽹络堆栈管理 API
对于 ESP8266_NONOS_SDK_v3.0.0 及之后版本,请在 user_main.c 增加函数 void ICACHE_FLASH_ATTR user_pre_init(void),并且在 user_pre_init 函数中注册自己的 partition table。(注意,此步骤和2.0版本有所不同,至关重要!)
即v3.x版本都需要在user_pre_init 函数中注册partition table(分区表)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
而设置分区表则需要前面的声明代码和定义代码才能成为一个完整可执行的3.0模板,具体代码详见ESP8266_NONOS_SDK-3.0.4-temple->code->user_mian.c文件
(7)编译之前进行保存,在’project explorer’中选中工程名,右键先clean project,清除之前的编译声明,再build project进行编译
注意:编译的时候最好只保留控制台和功能窗口,其他窗口不要打开,以防编译出错
(8)编译成功后,控制台会有如下显示
(9)最后要注意,user_cal_sector_set(暂定),user_pre_init,user_init三个函数在程序中需要保留。
- Esp8266程序烧写
工程编译完之后,会在工程文件夹下的bin中生成如下.bin文件
我们需要把生成的文件烧写到esp8266中
(1) 打开FLASH_DOWNLOAD_TOOLS工具,选择esp8266,显示对应烧录的UI界面
(2)按照图示配置参数(文件和下载对应地址)
(3)可以下载的程序有如下所示,但是真正需要下载的程序只有两个系统程序:eagle.flash.bin和eagle.irom0text.bin,其他的只需初次下载即可,但如出现野指针等引发破环了初始配置参数的情况则需要全部选中烧录
其中烧录的文件作用如下
(4)根据下载地址图示来配置我们需要下载的程序地址
注:因为ESP-12F模组的外部
Flash==4MB==4096KB==32bit 4MB Flash==0x000 000~ 0x3FF FFF
扇区编号:0x000~0x3FF【Flash扇区==4KB】
对应选择下载地址
一般只烧写最后两个系统程序即可
(5)烧写时如一直停留在等待同步状态,需要按住开发板的boot,再同时按住restart,再放开restart,最后放开boot,整个过程按住停留时间需要把握好,具体可以尝试几遍即可知;如没有上述情况则不用按键直接烧写即可
下载成功如图所示
(6)烧写完成之后再按下restart键,此时esp8266蓝灯短亮,开始执行烧写进去的程序
然后就成功了有木有!!!