ESP8266_NONOS_SDK环境搭建

时间:2021-12-05 20:30:16

http://www.51hei.com/bbs/dpj-150034-1.html
说明FLASH SIZE这一栏如果是ESP-01就选8Mbit,如果是ESP-12F就选32Mbit

安装环境

下载AiThinkerIDE_V0.5_Setup.exe安装-注意要使用英文目录(注意这里是0.5版本,不是最新的版本,新版本未测试)
安装完成后打开安装目录下的ConfigTool.exedefule键设置目录

SDK

这里的SDK为ESP8266_NONOS_SDK-2.2.0.zip
找开AiThinkerIDE软件,删除ESP8266_NONOS_SDK项目,删除时勾选Delete project contents on disk,然后再打开OpenWorkSpace.bat目录
删除ESP8266_NONOS_SDK目录下的文件,

修改SDK包

1、将driver_lib重命名为app(名字自己喜好来定),从examples文件夹下随便复制(或剪切)一个工程到app文件夹下,(提示是否要替换,都替 换掉)
2、将third_party文件夹下的Makefile重命名为Makefile.bak(备份起来,也是怕它影响到接下来的编译)
3、将顶层Makefile文件中SPI_SIZE_MAP?=0改为SPI_SIZE_MAP?=6
4、倒数第三行INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)in clude/$(TARGET) -I $(PDIR)driver_lib/include中的driver_lib改为第2步的重命名,例如我改为app,这里就改为app即可。

SDK导入与编译

然后再项目中导入SDK项目
选择General->Existing Projects into Workspace 点击next
然后选择目录注意SDK目录不能有点符号与中文,勾选Copy projects into workspace然后完成,
然后可以下OpenWorkSpace.bat目录下的项目下查看是否有该项目

然后就可以编译项目了,编译完成后在Console下面会有以下字样(注意编译前要保存与清除)

No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder bin.
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x10000

然后在项目下烧录的bin文件夹内
文件名与地址
eagle.flash.bin 0x00000
eagle.irom0text.bin 0x10000
esp_init_data_default_v08.bin 0x3FC000
blank.bin 0x3FE000

关于下面的选项 为40Mhz 模式:DOUT Size:32Mbit 去除二个勾选,然后就可以烧录了

编程测试

在app/user/user_main.c文件中user_init(void)函数写入以下代码
os_printf("nnHello World! nn");
烧录完成后,测试时波特率设置为74880(晶振26MHz),如果外晶振40时波特率115200

才能可以看到数据

串口测试

#include "driver/uart.h"
//用户代码
uart_init(9600,9600);  //波特率
os_printf("rn------------------------rn"); 
uart0_sendStr("nnHello World! nn");
os_printf("rn------------------------rn"); 

makefile文件修改

当头文件修改位置时
要修改makefile文件中的二处SUBDIRSCOMPONENTS_eagle.app.v6(格式:driver/lib文件夹名.a)
记得user_mian声明要更改一下

看门狗

喂狗函数system_soft_wdt_feed()

延时

#include "osapi.h" //定时器
void ICACHE_FLASH_ATTR delay_ms(u32 C_time)
{
    for(;C_time>0;C_time--)
    {os_delay_us(1000);}//延时1000纳秒
}
void ICACHE_FLASH_ATTR user_init()
{
    while(1)
    {
        system_soft_wdt_feed();
        uart0_sendStr("rnHello! rn");
        delay_ms(1000); //调用延时1000微秒=1秒
    }
}

GPIO

#include "eagle_soc.h" //GPIO函数与宏定义
(因为考虑到NONOS的多任务,转为RTOS学习)