重要说明 本教程是本人在学习过程中根据互联网上的学习资料结合自己的实际操作过程整理,所以教程部分内容来源于互联网,本人只做整理归纳以及添加部分自己操作过程遇到的问题点及解决办法,如有侵权请联系我删除,谢谢!欢迎加WX交流:ZC_designer 1.1. 搭建开发环境。] 其中 1.0以前版本仅仅支持 SDK2.0版本及以下,而 1.0版本支持SDK3.0或以上。 教程参考官网教程: 特别说明:安装安信可开发环境前需要自行安装Java开发环境,请百度安装方法。 1.2,开始我们基于 nonos 工程的第一个“HelloWorld”。1.2.1,如下图,打开我们最新的NONOS的SDK下载地址, https://github.com/espressif/ESP8266_NONOS_SDK/releases
解压后请注意以下操作: ①、third_party文件夹下面的Makefile文件加上 .bak后缀! ②、driver_lib文件夹重命名为my_app(可以是其他任意名称),把examples文件夹下的smart_config文件夹里面的全部内容复制到刚刚的my_app的文件夹里面。 ③、以上做好了之后,可以导入IDE了! 我这里演示一个串口实验,打印 hellow world字符到我们通讯串口助手。下载后解压,注意解压后的路径千万别带中文字符,解压请直接复制到一个没有中文字符的路径的文件夹下面。否则会影响到后面的编译结果! 1.2.2,导入项目 选择File→Import ,下面步骤:
1.2.3,点开C/C++分支,并选中Exis ting Code as Makefile Project:
1.2.4,去除C++支持,选中 Cross GCC,点击Browser,选中我们解压后所在的目录。点击finish。
1.2.5,此刻,成功进入到我们的主界面。 1.2.6,project右键选择Properties
1.2.7,选择C/C++Bulid Build Command中填入 makeCOMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=6 我用的是ESP8266-12F,其他型号按实际修改参数; 点击File system选择工程下my_app文件夹的路径; 点击Apply,然后点击OK 回到主界面;
1.2.8,开始编译工程前,在其的 app ->user --> user_main.c 方法修改如下,让输出为 hello world。 ①esp8266的非实时系统编程的打印函数尽量用os_printf(),切记切记!!! ②写了一个ms延时函数用于串口循环输出hello word; ③uart_init(115200,115200);为修改串口波特率,不改的话默认为74800,第一次我就踩坑了; ④system_soft_wdt_feed();此处为喂狗,不加的话看门狗会导致不断重启; ⑤程序代码: voiddelay_ms(uint16 x) { for(;x>0;x--) { os_delay_us(1000); } } voidICACHE_FLASH_ATTR user_init(void) //*001例程 helloword 更改波特率 { uart_init(115200,115200); os_printf("SDK version:%sn",system_get_sdk_version()); while(1) { system_soft_wdt_feed();//这里我们喂下看门狗 ,不让看门狗复位 os_printf("hello word!n"); delay_ms(500); } } 1.2.9,开始编译前,按照官方的说法,我们看控制台时候,直接把 Problems 栏目关掉,解释说,这个Problems 栏目报的错误不准确,只有Console 栏目下的输出为准,所以建议大家把 Problems 栏目关闭。
之后建议大家每次编译项目前先进行 clear project,再 build project ,这样就保证了正确的代码可以完全被编译,如果正确的代码没有clear project就直接build project ,可能会报错。 BuildProject :编译项目 ;Clean Project:清理项目,可以清理下缓存。
1.2.10,我们编译之后,看看控制台下的信息打印,说明已经成功做好固件啦。
1.3,固件烧录,测试 1.3.1,看我们的最小系统搭建(强调:烧录时候,一定要让GPIO0处于低电平,即接GND):
1.3.2,下载安信可官方烧录软件,下载地址http://wiki.ai-thinker.com/tools
1.3.3,详细烧录方法参见安信可官方教程http://wiki.ai-thinker.com/esp_download,于是,我们就打开烧录软件,配置刚刚的路径,选择烧录地址(选择之后就是绿色的),各个参数如下:
①boot_v1.7.bin,esp_init_data_default_v08.bin,blank.bin这三个文件在工程文件下的bin文件夹,user1.4096.new.6.bin是刚刚我们生成的文件在bin文件下面的upgrade文件夹,仔细找找。 1.3.4,开始烧录程序到模块,有以下要注意的: ①,模块按上面的最小系统图接好线,连接到USB转串口工具,注意接线TXD和RXD要交叉; ②,模块供电要大于500mA,供电电压为3.3V(注意); ③,串口要选对,根据实际情况选择; ④,按住K2按键不放,模块上电,单击START,这时软件上会显示等待模块上电同步,按一下K1按键,等待程序下载完成; 1.3.5,下载完毕之后,我们给设备重新上电,打开串口助手,设置波特率115200,就可以看到串口一直输出hello word!
1.4,后记 1.4.1,所有自己编译出来的工程,都是有四个文件要烧录的,其中2个是必须烧录的(防止初始化失败),这2个文件分别是 esp_init_data_default.bin 和blank.bin,烧录地址根据您的8266型号区别; 1.4.2,我们最平常用的是安信可8266-12系列的,这个是32Mbit,也就是4M flash ,所以他们的地址分别是 0x3FC000 和 0x3FE000 , 最后2个的烧录文件地址看编译之后结果而决定!也即是不一定是0x10000,有可能是0x2000 , 这个根据SDK的版本有关系。所以大家还是留心点! 1.4.3,好多人问这个SPIMODE应该怎么选择,这个其实是esp8266芯片和flash芯片的连接方式决定的,四根线就是QIO,而DIO就是六根线,至于后面还有QOUT和DOUT和flash芯片有关,平时最多的是DIO或者是QIO了!
|