[分享] 在 ESP32 上运行 C 解释器

dcexpert   2020-4-13 11:49 楼主

网上看到的一篇文章,介绍了在ESP32上运行C解释器的方法,可以不用反复编译和下载程序,解释执行发送的脚本代码,对调试程序有一定的帮助。

 

内容有点长,大家先看原文吧。

 

https://www.codeproject.com/Articles/5061494/Run-a-C-Language-Interpreter-on-Your-ESP32

回复评论 (6)

纯英文的,老板!

点赞  2020-4-13 14:43
引用: 兰博 发表于 2020-4-13 14:43 纯英文的,老板!

等有空在翻译了

点赞  2020-4-13 15:45
赞!!这个很不错,谢谢分享
点赞  2020-4-14 07:19
引用: dcexpert 发表于 2020-4-13 15:45 等有空在翻译了

我用有道翻译给大家翻一段:

 

介绍

我在Arduino IDE中花了相当多的时间等待草图的编译和上传,结果发现草图的行为与我预期的不一致,然后我考虑在哪里添加串行。printx语句的草图,再次等待编译和上传,并失去头发试图得到我想要的结果。还有什么比输入一个if (j==3 && k>11) Debug()更好的呢?当变量满足条件要求时,能够从程序中获得调试信息?

所以…我为基于ESP32的委员会准备了一个C语言解释器,它允许我使用他们的内置文件系统进行持久的程序存储,在一个浏览器页面中编辑和解释我的程序,而不需要编译和上传周期。更好的是,我还内置了对常用I/O Arduino功能的支持,如模拟写、数字读/写等,并提供了高精度的伺服定位功能。但是,最好的部分可能是我添加了一个调试器到解释器中,它支持条件调试跟踪,并在程序执行时报告变量值的条件监视函数。本文感谢那些为我的解释器构建工具的人,并解释了如何在ESP32上使用它。

 

背景

关于解释代码和编译代码以及每种方法的优缺点的讨论还在继续。可以这样说,解释后的代码运行起来要比编译后的代码慢,而且许多解释器提供的错误描述也不够出色。但是解释器以其作为原型工具的价值而闻名,并提供了快速的代码环境。另一个有用的解释器特性是,它可以很容易地向新手介绍如何创建有用的程序。

Zik Saleeba创建了picoc解释器,其源代码可以从https://gitlab.com/zsaleeba/picoc获得。这是一个C语言解释器的坚实基础,我对他的创造表示敬意。

大部分的web界面都是受Michael Molinari的esp8266 Basic的启发,并大量复制他的工作成果,可从https://github.com/esp8266/Basic获得。

 

使用的代码

本文顶部的参考资料是编译和将解释器上传到ESP32所需要的文件。当你在Arduino IDE中使用它的时候,你首先会注意到的是,我敢打赌,你从来没有见过Arduino草图上有这么多的标签。这在很大程度上是由于在Arduino IDE中保留了picoc解释器的文件结构,并简化了C和c++代码部分的隔离。好消息是,网络服务器的草图提供了一个非常全面的锻炼Arduino对象,一个完全透明的译员,演示了如何使用C语言代码在Arduino IDE,并可以提供无数个小时的代码浏览看看这是如何工作的。

但是,我希望您不是来这里了解C解释器的内部原理的。我认为您阅读本文是因为您想了解如何在ESP32上运行C解释器。口译员的使用记录在以下各段。如果您想了解更多的细节,您可以查询esp32_picoc_c_language_interpretation .pdf。

在将草图上传到ESP32板之前,使用Tools/ESP32草图数据上传菜单项将草图文件夹中的数据目录的内容放到ESP32板上。您还需要编辑ESP32Program/data/data/WIFIname.dat和WIFIpass.dat文件,然后才能上传,以匹配您的WiFi环境。当您将ESP2Program sketch上传至ESP32板时,它将以500,000波特的速度在串口上运行。在板子复位后,咨询串行监视器将给你板子正在使用的IP地址。ESP32Program。zip文件中包含的ino文件在开头有几个重要的#define语句。

 

普通的C代码我觉得就不用翻译了。一般的文字,结合着原文,差不多能看明白了。

点赞  2020-4-14 09:45
引用: 兰博 发表于 2020-4-14 09:45 我用有道翻译给大家翻一段:   介绍 我在Arduino IDE中花了相当多的时间等待草图的编译和 ...

机器翻译效果还可以,基本都说清楚了。

点赞  2020-4-14 10:13

好东西 谢谢分享!

点赞  2020-4-14 11:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复