ESP32开发日记1-烧写并运行helloword例程
序言
大家好,我是在武汉上早八的刘新宇他大爸,同时也是冯正淳的尕爹。之前在工作当中使用过ESP32-S3作为主控做了一个项目,想起来这个项目还是我第一次solo的一个项目,后面还拿了个专利(虽然还在实质审查)。在使用这款芯片的过程中发现乐鑫确实是在非常用心地打造她的,基本上没啥需要折腾的地方。甚至帮你把调试方式都给整好了,在她的monitor中会在程序异常挂掉后打印错误信息类似于Valgrind的功能,这点对于新手非常友好毕竟稍微大点的项目如果来个内存泄漏或者空指针估计得新手查半天。正好最近稍微有点空了,所以想继续挖掘一下这款芯片的潜力并跟大家一起交流分享一下。那我们接下来先按照传统从helloword例程的编译烧写调试开始讲起吧。
对了,强烈建议使用Linux环境来进行开发,你做个虚拟机的时间要比后面等windows编译的时间快多了。
如何获取一个例程
在学习ESP32之前,我们首先要搭建好他的开发环境。当然了,网上搭建环境的教程非常多,我这里就不过多赘述了,我们直接从搭建好环境之后开始聊起。
在你搭建好环境后,请点击vscode顶端的查看选项,然后点击命令面板。这时请在顶端中部的输入栏中输入:
ESP-IDF:Show Examples Projects
不过实际上你如果是刚安装完ESP-IDF的话,这些命令基本上都在顶端可以直接选择没必要输入。
点击进去之后他会让你选择esp-idf的目录,这里你只要环境搭建的是正确的就没问题直接选他弹出来的那个路径就行。
点进去之后就会发现有很多例程,这里我们先选择hello_word
好,接下来我们就选择一下我们自己想要的开发目录,这里千万别直接在他的例程目录里面乱玩,要养成好习惯。
这里我们就选择在/root/mywork下面进行开发
好,我们用vscode进入到工程里面就能看到我们的代码了。不得不说vscode真是个好东西,界面好看就算了,关键还非常好用哈哈哈哈。
接下来我们就看看这个项目咱们要如何编译吧。
如何编译一个工程
不知道是不是乐鑫把这个插件改版了,我记得原先的编译按钮是一个管道样子的图标,现在变成了一把扳手。可能乐鑫觉得这样很合理吧。
在编译之前我们先要选择我们所使用的芯片,由于我手上这个是ESP32-S3,所以我就直接选择了ESP32-S3。
好,然后咱们先啥也不动,先点击扳手按钮,把程序编译起来。
如果你用的是windows系统来进行ESP32系列芯片的开发,那么我提前恭喜你你有了很多摸鱼时间。据我之前的经验,每次再重新配置(例如芯片型号,烧写方式)之后windows下的idf总会用蜗牛的速度给你重新编译一次。因此我在这里郑重建议,在学习和工作的过程当中使用Linux环境进行ESP32的开发。
当编译完成后,会自动弹出编译成功并且会输出内存使用情况,是不是非常友好?
如何将编译好程序烧写到芯片中
实际上烧写程序有几种方式(虽然原理一样),这里暂时只介绍在vscode中直接烧写的方式。
首先我们把电脑和设备进行连接,接着,我们让芯片进入烧写模式(最小系统板的话就是先按下boot按钮,然后按下reset按钮)
然后在vscode中找到闪电一样的按钮并且按下。
编译的过程中会输出编译信息,当编译成功后会自动弹出编译成功的提示(看来还真的改版了,想当年第一次用的时候编译成功就像第一张截图里面一样卡着,害我等了半天)
如何观察设备输出的日志
说到这里不得不夸夸乐鑫,配套工作是做的真好,我们首先来看看如何观察设备的输出吧
点击闪电旁边的电脑
如果出现了这个界面,就让设备重启一下或者点一下reset按钮
这个时候我们就会看到已经打印出来了启动信息,和我们程序中的Restarting in %d seconds…
现在我们尝试修改一下这个程序,在这条打印后面加上冯正淳是我儿子试试。
看起来啥问题都没有,那乐鑫的工具能否检查到底哪里有空指针或者内存泄漏呢?那我们来试试看吧
我们先来写一段必然会段错误的代码,比如上图中的,向空指针写入数据
运行起来后我们发现,我去,乐鑫居然告诉我们了出现段错误的位置,而且还是一层层找出来的,最终我们发现出错的区域就是我们往空指针赋值的地方。不得不说乐鑫这方面是下了功夫的
总结
这篇日记粗略地记录了一下如何获取乐鑫提供的例程,将该例程烧写编译并跑起来。还简单介绍了一下乐鑫在monitor中加入的调试日志功能。
总的来说ESP32是一款功能算强大而且也非常适合初学者学习的芯片。看的出来乐鑫确实是下了功夫的。