社区导航

 

搜索
查看: 14926|回复: 40

[原创] 在单片机上跑lua

  [复制链接]

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

发表于 2016-5-26 22:46 | 显示全部楼层 |阅读模式
说到Lua.......
就是个脚本语言,水果说,不就是个命令行么?嗯,我觉得也像,就是个shell bat之类的呗。
只不过shell依赖unix环境,bat依赖 windows

而lua这一类的脚本语言,它最神奇的地方就是,它不依赖任何操作系统。
不过,说实在的,我真的不知道怎么具体解释 Lua是啥。

简单地说,Lua和Python比较类似,就是脚本语言,对于脚本语言,目前我贫乏的大脑里只能联想到bat脚本可以很方便地组合小exe然后定制小软件。

好吧,翻来覆去来来去去还是这么一句,不说了。下面沙发说点正事。


八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

6938

TA的帖子

17

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-5-26 22:47 | 显示全部楼层
已水
training

回复

使用道具 举报

5786

TA的帖子

209

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-5-26 22:47 | 显示全部楼层
本帖最后由 lcofjp 于 2016-5-26 22:50 编辑

二层占楼
在啥平台上跑的?stm32吗,点个灯让吾等膜拜一下。。

点评

stm32f429i 其实啥平台都能,随意~~  详情 回复 发表于 2016-5-26 23:18

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-26 22:52 | 显示全部楼层
先说说怎么跑起来吧。

三句不离本行,我是个搞单片机的,当然就关心怎么在单片机上运行。
以前我就知道了有个专门针对 embed的版本叫 eLua,很良心的是,这次他说的嵌入式,包括stm32这类单片机,而不是动不动就embed linux。
这得益于 Lua真的很小。

有个数据统计是,在PC上,全功能的Lua编译出来大概是120K,与之相比,python是八九百K,而Perl是1.1M。
但是,其实我玩了一下后感觉,其实Lua内核其实很小,为什么捏。
因为这个Elua融合了很多其他库,但它全部加起来也就40K.

所以一开始我非常happy地想从elua开始。

可是,我瞅了好几次,始终是它认识我,我不认识它......
没办法了。

我最后想,既然Lua这么小,还有人说直接从源码编译,我突然想起以前我编译 单元测试框架 Unity的事情,于是我想,不就是一个C库么,得,我自己玩。

于是跑到Lua官网,最后看了一圈,下了一份代码回来自个加入一个我之前玩的 stm32f429i的工程里。编译,调用一下,没什么大问题。

其实唯一注意的就是,如果你是要融入自己的程序,就是说Lua只是作为一个程序组件,那你就不要加入lua.c luac.c这两个头文件。

关于这两个,下边稍微有点详细解释。

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-26 23:02 | 显示全部楼层
其实去年春节的时候我没事就在家里寂寞空虚冷的玩了一下PC上的lua.
当时跑的是已经在windows下编译好的 LuaDist。
其实说实在的,我当时跑着跑着的感觉,就觉得自己是在玩cmd命令行而已。
又有点像我以前尝鲜玩Python一样。

在它上面可以输入很多很简单的又很像C库的一些命令,比如说
print("xxxx")
真心的连个f都不用写了。
非常接近自然语言,最重要的,丫还不用编译......

但我其实没有怎么玩下去。
所以,直到今天我还不是特别明白这货到底是什么

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-26 23:07 | 显示全部楼层
但是这次,我自个编译 lua了。
虽然我搜百度的时候,有人告诉我要记得 把 lua.c luac.c去掉,可是我很好奇啊。
我就不去试试。

结果就编译失败了——那会我还没下班,没忍住好奇,只是在codeblocks上试着编译一个来玩玩。

于是我发现,问题出在
lua.c luac.c里都各自有了一个main函数。

既然如此,如果再和自己的main函数混在一起那肯定不能通过编译的。

这时候我搜百度,得到的最有用的答案只有六个字。

lua.c编译出来的是 lua解释器,luac.c编译出来的是 lua编译器。
这是个什么鬼?

lua.c编译后跑了一下,得到一个和我以前运行LuaDist一模一样的界面,我在上面试着输入了一句 print("xxx");
一回车果然如此。

这时候我继续搜索 luac.c这个所谓的编译器又是个什么鬼?

其实我以前玩的时候就没搞明白过这个编译器是个什么东西,不是说lua只是个脚本语言么,不是说不要编译么,那这到底是什么玩意?

到最后我还是啥解释都没找到,都基本想买本 lua程序设计回来看了。

但我回想了一下,在搜的过程里,我看到一个这样的唯一有实质性的答案是

用luac.c可以运行 .lua后缀的lua文件。

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-26 23:10 | 显示全部楼层
所以我也基本放弃了继续无谓的搜索。
我发现不仅百度问不出啥,就是直接搜yahoo还是没有。

所以说,很可能是这个问题,问的就有点问题。

于是我感觉了一下这个答案。
可以运行lua文件。

于是我综合了一下,心理大致有了一个理解:

所谓解释器,应该就是类似于shell或者cmd窗口,它们可以接受命令,并解释执行。
而编译器,它的意思应该是可以理解 lua这种语言特有的文件,其后缀就是 .lua
正如c语言其后缀就是.c

而lua文件构成的必然也是 那些可以在 lua解释器里 运行的语句,命令。

这个过程,可以打个非常具体的比喻就是

lua的解释器就相当于windows下的cmd窗口,编译器就类似于可以执行bat的cmd程序;
在linux下,解释器相当于 终端,编译器相当于 shell脚本工具 sh

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-26 23:15 | 显示全部楼层
本帖最后由 辛昕 于 2016-5-27 10:24 编辑

至于lua栽到 单片机上能干嘛,这也是我下一步在想的事情

目前,我对于lua的唯一想法就是 脚本,然后可以用字符串描述要调用的C函数......
除此以外,真心我贫乏的大脑再无第二种想象。

当然,像elua那样我也看着觉得挺累,没啥意思,看来我去中心化的倾向真是太重了。
我从来没想过让lua当一个单片机程序的主控,我只是希望使用lua的一些方便特性而已

好了,11点了,洗澡撤了~~~

回头慢慢玩吧。
lua有份教程有中文版本,回头我捣鼓上来,边看边想想可以怎么玩。
[url=【Lua】中文教程 http://bbs.eeworld.com.cn/forum. ... 1192&fromuid=115166 (出处: 电子工程世界-论坛)]已发帖上传了这份pdf[/url]

因为我突然该死的觉得,假使现在没有lua,我也好像知道怎么实现 这种通过字符串调用函数的方法了。

我以前一直觉得这是个很神奇,甚至涉及了编译连接过程的事情,谁知道它丫的这么偷鸡.......
不过想想也是,lua本来就是一门很小很简洁的语言,既然都是纯C,那还能有什么别的神奇手段,还不是我以前自己想多了.........

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-26 23:18 | 显示全部楼层
lcofjp 发表于 2016-5-26 22:47
二层占楼
在啥平台上跑的?stm32吗,点个灯让吾等膜拜一下。。

stm32f429i
其实啥平台都能,随意~~

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

1万

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2016-5-26 23:19 | 显示全部楼层
等续集。

回复

使用道具 举报

2940

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2016-5-27 07:51 | 显示全部楼层
求助怎么在DOS下执行bat程序?我这边有个bat程序要升级。另外Qt也是多平台的,我感觉比lua好,但看到很多都是嵌入式应用,没用它来编程

点评

dos,你说的是cmd窗口吧? 直接输入那个bat的名字啊,当然你得设置好路径找到它。要么去它的文件夹下执行  详情 回复 发表于 2016-5-27 09:09
直接点击那个bat文件啊......  详情 回复 发表于 2016-5-27 09:08

回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-27 09:08 | 显示全部楼层
suoma 发表于 2016-5-27 07:51
求助怎么在DOS下执行bat程序?我这边有个bat程序要升级。另外Qt也是多平台的,我感觉比lua好,但看到很多都 ...

直接点击那个bat文件啊......

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-27 09:09 | 显示全部楼层
suoma 发表于 2016-5-27 07:51
求助怎么在DOS下执行bat程序?我这边有个bat程序要升级。另外Qt也是多平台的,我感觉比lua好,但看到很多都 ...

dos,你说的是cmd窗口吧?
直接输入那个bat的名字啊,当然你得设置好路径找到它。要么去它的文件夹下执行

点评

好的我试一下,这边有个固件升级  详情 回复 发表于 2016-5-27 22:47

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

1364

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-5-27 10:02 | 显示全部楼层
F7discovery全力支持楼主,期待楼主无脑教程

点评

怎么无脑了  详情 回复 发表于 2016-5-27 10:19

W_X订阅号:DLGG创客DIY


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-27 10:19 | 显示全部楼层
lidonglei1 发表于 2016-5-27 10:02
F7discovery全力支持楼主,期待楼主无脑教程

怎么无脑了

点评

SORRY,我表述有问题,我喜欢无脑的教程,希望您能把教程整的简单易懂一些,要不我跟不上  详情 回复 发表于 2016-5-27 10:46

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

1364

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-5-27 10:46 | 显示全部楼层

SORRY,我表述有问题,我喜欢无脑的教程,希望您能把教程整的简单易懂一些,要不我跟不上

点评

嘿嘿,其实我知道的,逗你玩呢 最爱这种无脑教程了,每次我看到一些教程我无从下手我就想抽死丫的去,真的是,欺负我没玩过怎么回事..........  详情 回复 发表于 2016-5-27 11:49

W_X订阅号:DLGG创客DIY


回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-27 11:49 | 显示全部楼层
lidonglei1 发表于 2016-5-27 10:46
SORRY,我表述有问题,我喜欢无脑的教程,希望您能把教程整的简单易懂一些,要不我跟不上

嘿嘿,其实我知道的,逗你玩呢
最爱这种无脑教程了,每次我看到一些教程我无从下手我就想抽死丫的去,真的是,欺负我没玩过怎么回事..........

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

2940

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2016-5-27 22:47 | 显示全部楼层
辛昕 发表于 2016-5-27 09:09
dos,你说的是cmd窗口吧?
直接输入那个bat的名字啊,当然你得设置好路径找到它。要么去它的文件夹下执 ...

好的我试一下,这边有个固件升级

回复

使用道具 举报

1211

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2016-5-28 11:50 | 显示全部楼层
其实lua就是解释型语言(好像是这么叫的吧),类似我们小时候学的basic语言。

我一直有一点搞不清楚,如果用lua,保密性怎么解决?

点评

神马安全性? 对了,其实我现在反而不觉得lua是一门语言,我更倾向于它是一个 程序库。 当然,这可能与我对lua还不够了解所致  详情 回复 发表于 2016-5-28 16:00

回复

使用道具 举报

7913

TA的帖子

54

TA的资源

裸片初长成(中级)

Rank: 11Rank: 11Rank: 11Rank: 11

荣誉会员勋章

 楼主| 发表于 2016-5-28 16:00 | 显示全部楼层
yang_alex 发表于 2016-5-28 11:50
其实lua就是解释型语言(好像是这么叫的吧),类似我们小时候学的basic语言。

我一直有一点搞不清楚,如 ...

神马安全性?

对了,其实我现在反而不觉得lua是一门语言,我更倾向于它是一个
程序库。

当然,这可能与我对lua还不够了解所致

点评

保密性! 我的意思是别人是否可以轻易读出你的程序?  详情 回复 发表于 2016-5-30 19:23

八年一梦,洗尽铅华,重头再来


回复

使用道具 举报

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

关闭

站长推荐上一条 1/6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-1 07:43 , Processed in 0.562636 second(s), 40 queries , Gzip On, MemCache On.

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