蓝牙物联网

 找回密码
 立即注册
蓝牙物联网
搜索
热搜: 蓝牙 Bluetooth BLE
查看: 384|回复: 0

Lua在单片机中的移植

[复制链接]

15

主题

68

帖子

165

积分

助理工程师

Rank: 2

积分
165
发表于 2017-4-7 23:56:08 | 显示全部楼层 |阅读模式
本帖最后由 zhjrdz 于 2017-4-7 23:58 编辑

第一步:准备源代码

从官网www.lua.org下载Lua源代码,解压后找到src文件夹,这个文件夹里的所有.c和.h文件就是Lua源代码.

第二步:移植

1) 把 lua.c 和 luac.c 删除,这两个文件分别是Lua的解析器和编译器,一般PC才会用到,用于生成解析器Lua.exe和编译器Luac.exe,单片机一般不用。

2) 对内存敏感的项目可以替换掉 lauxlib.c 文件里 l_alloc 函数调用的 free 和 realloc 函数.

3) loslib.c 和系统相关,单片机中最多跑RTOS,所以这个文件可以删除.

4) liolib.c 中使用了标准文件操作fopen、fclose、fread、fwrite等函数。虽然有些单片机支持这些函数,但还是要自己重定向这些函数,而且在单片机中一般也不用文件来操作IO,所以这个文件可以删除.

5) 如果删除了 loslib.c 和 liolib.c,那么在 linit.c 中要把 loadlibs 数组中相关的元素注释掉。这样调用 luaL_openlibs 时就不会加载这两个库了。

6) 在luaconfig.h 中有 luai_writestring 和 luai_writeline 两个宏,这两个宏关系到了 lua 中 print 的输出,需要针对平台重定向,一般定向到调试串口就行。还有个 luai_writestringerrir 宏,定义了 lua 如何报错,可以定义到调试串口,也可以定义到log文件,或者两者兼有.





回复

使用道具 举报

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

本版积分规则

QQ|手机版|蓝嵌科技|蓝牙物联网

GMT+8, 2018-4-26 21:03

蓝牙物联网

© 2001-2015 www.bluetooth-iot.com

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