3468|2

155

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【Beetle ESP32-C3】四、Luat-OS环境部署 [复制链接]

       本人使用ESP是从8266开始,从安信可的Eclipse开发直接跳到Arduino,当时就听说还有Lua可以开发,虽然后来也购入了NodeMCU,但是拿到手后就直接上的Arduino IDE。

       前一阵子,网络上天天都蹦出来合宙Luat-OS,搞得在下也是心念念。这次也是感谢EEWORLD的Beetle ESP32-C3测评活动,终于有机会体验一下Lua在ESP系列中的开发方式。

1、Luat-OS的一些资料

       搞了一晚上,查询了一些网上资料,将感觉比较有用的整理如下:

 

① 合宙的Luat-OS Wiki,有工具下载、论坛链接、Lua教程、开发板介绍、API手册、内核编译源码等内容。

https://wiki.luatos.com/ 

 

② 合宙的Gitee,里面的仓库不少。

https://gitee.com/openLuat 

 

③ 一位大神的Gitee,里面有构建好的固件(.SOC)。

https://gitee.com/dreamcmi/LuatOS-ESP32/releases 

 

④ 另一位大神的博客,有很多Luat-OS的使用教程,这里给出第一讲链接,本身还包含其它资料的链接。

https://blog.csdn.net/qq_38091632/article/details/122665567 

 

2、编译内核源码

       所谓Luat-OS,在下理解就是一个大号的BootLoader或者像MicroPython这样的解析引擎(也许理解不到位)。

       所以,要做Lua开发,先要得到其内核固件,合宙Wiki中就有完整的教程:https://wiki.luatos.com/develop/compile/ESP32C3.html 。

       第一步是从Gitee上下载源码,这里建议使用git clone,毕竟是国内的站点,网速很快。如果是下载zip包,一定记得解压后目录去掉“-master”的后缀。需要两个仓库:

 

① LuatOS源码:git clone https://gitee.com/openLuat/LuatOS.git 

② LuatOS-ESP32项目源码:git clone https://gitee.com/dreamcmi/LuatOS-ESP32.git

 

       两个仓库下载到统一目录下,文件夹名字不能改变——因为项目的CMakeLists.txt都是固定的路径名。

 

图4-1 两个源码仓库(注意放到同一路径,并保证目录名与图中一致)

 

       第二步,按官网教程要求,检查两个文件是否存在——个人估计教程这样写也是怕用户出现下载不全的问题。

 

图4-2 官网教程说明截图

 

       第三步是IDF编译,如果有朋友还没有建立IDF环境,可以参考本人帖子:https://bbs.eeworld.com.cn/thread-1210470-1-1.html 。

       这里本人按照教程,使用的也是IDF控制台方式,首先打开IDF控制台并进入LuatOS-ESP32路径,然后执行命令“idf.py set-target esp32c3”。

       接着执行命令“idf.py menuconfig”并进入Component config -> ESP System Settings -> Channel for console output 勾上USB Serial/JTAG Controller。

       最后就是“idf.py build”一路编译。build成功后,本人还下意识的idf.py flash,实际上Luat-OS的内核还要经过构建SOC文件的过程。

 

       第四步就是构建SOC文件,控制台继续进入“LuatOS-ESP32/tools”路径,执行命令“pip install -r requirements.txt”,安装需要的依赖包——就两个“esptool 3.2和toml 0.10.2”,再执行命令“http://python esp32v3.py -t esp32c3 -p”就在tools目录下构建好SOC文件。

 

图4-3 构建好的内核

 

3、下载内核并测试闪烁灯

       编译内核出奇的顺利,原来“坑”都留在测试阶段了。

       先是工具的获取:https://luatos.com/luatools/download/last ,得到烧写工具“luatools_v2.exe”,记住要右键“以管理员身份运行”,否则就会报错。

 

图4-4 直接双击打开报错

 

       烧写固件过程,还算顺利,具体如下:

 

 

 

图4-5 luatools下载固件

 

       官方提到ESP32-C3 USB版不能使用Luat IDE(本人后来尝试过,确实没成功,而且感觉便利性也一般),所以用记事本写了一个测试代码,并保存为main.lua——这里也是一个“坑”,项目必须有一个main.lua。

 

PROJECT = "gpiodemo"
VERSION = "1.0.0"

-- 一定要添加sys.lua !!!!
local sys = require "sys"

sys.taskInit(
    function()
        local LED_D4 = gpio.setup(10, 0)
        while 1 do
            LED_D4(0)
            sys.wait(1000)
            LED_D4(1)
            sys.wait(1000)
        end
    end
)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

 

       最后一个大坑来了,就是下载main.lua文件,先来看看错误的提示。

 

图4-6 下载lua文件报错

 

       错误提示文件名不合法,考虑到源程序文件必须是main.lua(因为也报错过),很明显是CORE——也就是固件的文件名命名方法不对,生成SOC的名字后缀看着应该是建立的时间戳,应该改为版本号“_Vxxxx_”,鬼知道是什么呢?

       所以,这里本人重新下载大神提供的现成SOC,名字附带版本号,成功烧录。当然,成功后在下不死心,自己又构建了一次SOC,结果在构建命令完成后看到了版本号输出(前面真是瞎了)。

 

 

图4-7 看到版本号V0004-BETA

 

       接着,修改自己的固件名称,这里还有一个小坑,控制台输出版本号是中横线,必须改为下划线“LuatOS-SoC_ESP32C3_V0004_BETA.soc”。

 

图4-8 案例下载成功

 

4、Lua使用初体验

      先说优点——就是功能完备。Luat-OS集成了绝大部分ESP32支持功能,默认烧写固件也包含这些功能,比如:u8g2和lvgl都是默认包含的。

      当然也可以通过在“..\LuatOS-ESP32\components\luat\include\luat_conf_bsp.h”头文件中对应的宏定义来实现内核功能裁剪。

      这样就可以跳过Arduino和MicroPython方式下载库、IDF方式进行menuconfig配置和加载components的过程。

 

      再说缺点——需要学习Lua语言,当然学习成本初步看来不高,毕竟只是单片机开发不涉及到Web后端之类的。另外就是烧写过程有点繁琐,坑也有点多——尤其是SOC文件名这个要求。

      总体来说,一个晚上搞明白Lua使用过程,外加一个上午写好测评,还是挺开心的。不过后续准备还是先从熟悉的Arduino进行,搞定一个小案例之后,再转向Lua看看。

此帖出自RF/无线论坛

最新回复

还没体验过Lua,以后有机会玩玩。   详情 回复 发表于 2022-8-9 10:18
点赞 关注
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

Lua语言开发配Arduino,应该很好玩,期待楼主下面边测试边分享

此帖出自RF/无线论坛
 
 

回复

6773

帖子

2

TA的资源

版主

板凳
 

还没体验过Lua,以后有机会玩玩

此帖出自RF/无线论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表