硬汉嵌入式论坛

 找回密码
 立即注册
查看: 592|回复: 6
收起左侧

[其它] 介绍下我做的C语言解释器

[复制链接]

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2024-3-15 15:25:17 | 显示全部楼层 |阅读模式
非广告,纯技术交流,抛砖引玉。
大家来这个论坛,相信好多网友都和我一样都是因开发人机界面emwin的找到了这里。很佩服硬汉的实力和对技术的狂热!

做解释器的初衷来自看了arduino,micropython,lua等可以简单快速实现一些应用。我想把这思路用到电机控制上,其实电机一旦底层驱动调试好了,剩下的就是定义它的行为,如转多快,转多少圈等。如果能把应用功能和驱动分开,会很方便,即使不懂电机驱动的人也能开发应用功能。
由于是想用在电机控制上,自然想弄清楚这些解释器的全部细节,不然出问题的话电机驱动可能都烧掉了。一方面是个人能力精力有限,难以看懂全部细节,另一方面看着看着感觉这些动态语言不适合电机控制,任何一个变量首先是个对象(一个很复杂的结构体),简单一个加法还要判断加的是数字还是字符串,列表字典这些便利数据类型电机控制用不上,另外还有垃圾回收等太复杂。看了一些开源的东西,我萌生了开发一个C语言解释器的想法,主要是大部分开发单片机的人都熟悉C语言语法,再一个我想搞静态语言,机制越简单可靠性越高。

解释器的目标是将底层驱动与应用功能分离,以便无驱动经验人员开发应用功能。技术路线和python类似,解释器将脚本编译为字节码,单片机内置一个虚拟机解释执行字节码,电机控制或人机界面等驱动封装成系统运行时,以API的形式供脚本程序员调用。

套了一层解释器的壳,可以在PC上开发一个和单片机一样的虚拟机,这样PC和MCU都可以在同样的虚拟机上跑同样的解释器字节码,32bit模式PC和32bitArm单片机虚拟机程序几乎可通用。底层驱动不一样,PC是SDL2实现画点,MCU是LTDC外设画点,但使用同样的API后,可以实现一次编码,PC和MCU都能执行,效果完全一致。无论电机还是人机界面,都能无实体硬件在PC上仿真模拟。脚本程序设计在sram中运行,程序可快速加载或热更新。有了虚拟机,实现多任务也简单了,因为可以多分配几个虚拟机,每个虚拟机执行一个线程,有自己独立的栈。时间片一到,虚拟机就切换到下一个虚拟机(线程)。

后来有一天我看到一个介绍,才知道脚本语言这东西用的最多是游戏行业。自己做编译器、调试器、设计器、IDE等等,好处可以玩各种花样,例如我可以把常规的人机界面和控制器两个工程集成在一个工程里,可共享一个公共的模型数据,还可同时观察二者通信过程。目前我自我感觉成熟度也不够,通用化也欠缺,简单说还糙了点,暂不考虑开源。

搞工控自然离不开人机界面,很快我也开始尝试把解释器用于人界面开发。由于emwin不开源,我自己尝试搞了一套比较菜和粗糙的gui,大部分工控应用不考虑炫酷动画和色彩渲染的话也够用了。

GUI设计器

GUI设计器

IDE调试界面

IDE调试界面

模拟仿真

模拟仿真

真机调试

真机调试



评分

参与人数 2金币 +120 收起 理由
tovinz + 20
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
发表于 2024-3-15 16:05:39 | 显示全部楼层


楼主有可供测试的地址连接没。
回复

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2024-3-15 16:56:32 | 显示全部楼层
666,这是在单片机里运行起来了个编译器啊。

这里还有一个很有意思的开源项目 https://github.com/rswier/c4
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2024-3-15 17:53:55 | 显示全部楼层
厉害,有测试地址吗
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2024-3-15 18:58:31 | 显示全部楼层
之前有个用Lua解释器做PLC的想法,跟LZ有点类似,不过还没有动手写代码,哈哈
C语言解释器有很多比较著名的开源项目,没必要自己写,LZ可以专注框架和组件的实现
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2024-3-19 13:48:26 | 显示全部楼层
厉害了
回复

使用道具 举报

1

主题

83

回帖

86

积分

初级会员

积分
86
发表于 2024-3-19 14:06:47 | 显示全部楼层
论坛可真是卧虎藏龙
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 04:59 , Processed in 0.270448 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表