本文转载自:http://wiki.ai-thinker.com/ai_ide_use
关于 Problems 报错
注意:Eclipse 只是一个代码编写工具,它并不能读取 makefile 里面的一些配置,甚至它会读取到 cygwin 下同名称的头文件。
针对该现象引起的报错,我们建议用户在使用该 IDE 时,直接将 Problems 栏目关掉,因为该提示并不准确,我们主要关注的信息应该为 Console 栏目下的输出。(第一条 Console 报错最重要!)
示例1:ESP8266 NONOS 使用
准备
我们以ESP8266_NONOS_SDK_V1.5.4为例 (使用乐鑫原厂固件,需要将 driver_lib 和 examples/IoT_Demo 下的文件拷贝到 app目录下 ,后续步骤与下面一致。)
下载后解压到合适的目录下
打开 ESP8266IDE.exe
导入项目
1. 选择 File→Import
2. 点开C/C++分支,并选中Existing Code as Makefile Project
3. 去除C++支持,选中 Cygwin GCC
点击Browser,选中esp_iot_sdk_v1.5.2所在的目录
4. 点击 Finish 完成esp_iot_sdk_v1.5.2的导入
如下图:
编译项目
鼠标选中项目名称,点击右键出现菜单:
Build Project :编译项目
Clean Project:清理项目
选中编译项目,控制台输出如下图即编译成功
注意:Build Project 前最好先 Clean Project,以防止出错
结束
示例2:ESP8266_RTOS_SDK 使用
以下内容适用于乐鑫默认方式,您可以直接下载ESP8266_RTOS_SDK_V1.5.0 ,该示例工程合并了用户工程和SDK工程,可以直接按照 NONOS 版本步骤导入。
准备
首先我们下载 ESP8266_RTOS_SDK
下载后解压到合适的目录下,我们以 D:AithinkerESP8266_RTOS_SDK 为例:
ESP8266的FreeRTOS SDK,采用了SDK和工程文件夹分离的方式,所以我们需要手动创建一个 app 目录。
1. 将 sdk 目录下的 driver_lib 重命名为 app
2. 拷贝 /examples/project_template 下的所有文件到刚才的 app 目录(提示覆盖则确认),完成后目录结构如下:
3. 将 ESP8266_RTOS_SDK/third_party/makefile 重命名为 makefile.bak ,以防止编译时报错,虽然不影响编译但是强迫症患者不能忍啊。。。
接下来,我们启动 ESP_IDE,将项目导入 Eclipse
导入项目
1. 选择 File→Import
2. 点开C/C++分支,并选中Existing Code as Makefile Project
3. 去除C++支持,选中 Cygwin GCC
点击Browser,选中ESP8266_RTOS_SDK
4. 点击 Finish 完成ESP8266_RTOS_SDK的导入
完成后如下图:
配置项目
因为分离了sdk和project目录
所以编译之前必须先指定一个 SDK_PATH 和 BIN_PATH
修改 ESP8266_RTOS_SDK/app 目录下的 makefile,添加以下内容
parent_dir:=$(abspath $(shell pwd)/$(lastword $(MAKEFILE_LIST))) parent_dir:=$(shell dirname $(parent_dir)) parent_dir:=$(shell dirname $(parent_dir)) SDK_PATH= $(parent_dir) BIN_PATH=$(SDK_PATH)/bin
编译默认项目
鼠标选中 ESP8266_RTOS_SDK_V1.5.0,点击右键出现菜单:
Build Project :编译项目
Clean Project:清理项目
选中编译项目,控制台输出如下图即编译成功
注意:Build Project 前最好先 Clean Project,以防止出错
编译 Hello World
1. 删除 sample_lib 文件夹
2. 修改 ESP8266_RTOS_SDK/app/makefile,将 makefile 中的 sample_lib 替换为 driver ,将 libsample_lib.a 替换为 libdriver.a
3. 因为 driver/i2c_master.c 编译时会报错,因此需要在该文件内添加一些头文件支持
4. ESP8266 默认打印端口为串口 1,需要进行一些初始化方可使用,我们在 user_main.c 的 user_init() 函数中调用 uart_init_new() 函数
5. 修改 ESP8266_RTOS_SDK/Makefile,使其支持boot模式
6. 再次编译项目,至此可以参考 如何为 ESP 系列模组烧录固件 进行固件的下载
7. 运行结果如下:
示例3:ESP31B_RTOS_SDK 使用
示例4:ESP32_IDF 使用
准备
首先,打开 cygwin.bat
执行下列指令以使用 git 下载esp-idf 和 esp-idf-template
cd /cygdrive/d/ESP32 (进入你的工程目录) git clone --recursive https://github.com/espressif/esp-idf.git (必须添加--recursive 属性,否则无法全部拉取所有模块) cd esp-idf git clone https://github.com/espressif/esp-idf-template app (将 esp-idf-template clone到 esp-idf/app 下) git submodule update --init (强制拉取所有子模块,防止上一步骤遗漏)
若 git 下载较慢或失败,可下载http://pan.baidu.com/s/1jIRotBg(已打包 esp-idf 和 esp-idf-template,下载后请执行 git pull 以进行更新),可省略上面 git 步骤。
打开 ESP_IDE.exe,配置正确的 esp-idf 路径,并点击【OK】打开 eclipse
导入项目
1. 选择 File→Import
2. 点开C/C++分支,并选中Existing Code as Makefile Project
3. 去除C++支持,选中 Cygwin GCC
点击Browser,选中 esp-idf 所在的目录
4. 点击 Finish 完成 esp-idf 的导入
如下图:
配置项目
因为 make 只能从 app 目录启动,故我们需要修改整个项目 build 的位置
右键项目→Properties ,单击 C/C++ Build,修改如下图
此时,已经具备了编译的基础,下面我们配置 make menuconfig 和 make flash 两条指令
首先新建target,右键项目名称→Make targets ,选择 Creat
给该 Target 新建一个名称
在弹出的页面中取消勾选 Use builder setting ,
取消勾选 Same as the target name 并清空 Make target 的内容
在下面command 中输入 mintty.exe -e make menuconfig
点击 OK 保存
重复上一步骤,新建一个 DownLoad 的 Target ,
在弹出的页面中取消勾选 Use builder setting ,
取消勾选 Same as the target name 并清空 Make target 的内容
在下面command 中输入 make flash
点击 OK 保存
选中项目,按下快捷键 Shift + F9,弹出刚才新建的两个 Target
鼠标选中需要编译的 Target, 点击 Build 即可实现在 Eclipse 中下载和配置 idf
编译项目
首次使用请先执行 make menuconfig
鼠标选中项目名称,点击右键出现菜单:
Build Project :编译项目
Clean Project:清理项目
选中编译项目,控制台输出如下图即编译成功
注意:Build Project 前最好先 Clean Project,以防止出错