Lua是一個小巧的腳本語言。作者是巴西人。該語言的設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴展和定制功能。
Lua腳本能夠非常easy的被C/C++ 代碼調(diào)用,也能夠反過來調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中能夠被廣泛應(yīng)用。不只作為擴展腳本,也能夠作為普通的配置文件,取代XML,Ini等文件格式,而且更easy理解和維護。
Lua的目標是成為一個非常easy嵌入其他語言中使用的語言。大多數(shù)程序猿也覺得它的確做到了這一點。
非常多應(yīng)用程序使用LUA作為自己的嵌入式腳本語言,以此來實現(xiàn)可配置性、可擴展性。這當中包含魔獸世界、博德之門、憤慨的小鳥、VOCALOID3 等。
MDK下lua移植到stm32
移植lua
- l 加入?lua源代碼到MDK,把lua.c 和luac.c刪除。
l 改動堆棧大小:堆最小為5.5kb,棧最小是1.5kb。lua的空間分配在堆空間。16kb的內(nèi)存建議分配是堆11Kb,棧4Kb,留1Kb給全局變量。
在startup_stm32f10x_md.s文件里
; stack size 0x1000 == 4Kb
Stack_Size EQU 0x00001000
; heap size 0x2c00 == 11Kb
Heap_Size EQU 0x00002C00
- l 重寫標準庫底層函數(shù)
typedef int FILEHANDLE;
#pragma import(__use_no_semihosting_swi)
#pragma import(_main_redirection)
const char __stdin_name[150];
const char __stdout_name[150];
const char __stderr_name[150];
FILEHANDLE _sys_open(const char *name, intopenmode)
{
return0;
}
int _sys_close(FILEHANDLE fh)
{
return 0;
}
int _sys_write(FILEHANDLE fh, constunsigned char *buf, unsigned len, int mode)
{
return0;
}
int _sys_read(FILEHANDLE fh, unsigned char*buf, unsigned len, int mode)
{
return0;
}
- //檢查句柄是否為終端
int _sys_istty(FILEHANDLE fh)
{
return0;
}
int _sys_seek(FILEHANDLE fh, long pos)
{
return0;
}
- //刷新句柄關(guān)聯(lián)的緩沖區(qū)
int _sys_ensure(FILEHANDLE fh)
{
return0;
}
- //返回文件當前長度
long _sys_flen(FILEHANDLE fh)
{
return0;
}
void _sys_exit(int status)
{
//while(1);
}
int _sys_tmpnam(char *name, int fileno, unsignedmaxlength)
{
return0;
}
- //將一個字符寫入控制臺
void _ttywrch(int ch)
{
}
int remove(const char *filename)
{
return0;
}
char *_sys_command_string(char *cmd, intlen)
{
return NULL;
}
- C語言與lua交互
static int lua_led_on(lua_State *L)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
return1;
}
文章整合自:cnblogs
編輯:ymf
-
單片機
+關(guān)注
關(guān)注
6041文章
44615瀏覽量
637350 -
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137378 -
腳本語言
+關(guān)注
關(guān)注
0文章
48瀏覽量
8248
發(fā)布評論請先 登錄
相關(guān)推薦
評論