標籤:stm32f4 elua lua 嵌入式
本文主要介紹elua的背景知識,分為三部分
先介紹lua語言,之後介紹lua的應用,從而引匯出elua,最後介紹elua的硬體平台
什麼是lua
Lua 是一個小巧的指令碼語言。作者是巴西人。該語言的設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充和定製功能。
Lua指令碼可以很容易的被C/C++代碼調用,也可以反過來調用C/C++的函數,這使得Lua在應用程式中可以被廣泛應用。不僅僅作為擴充指令碼,也可以作為普通的設定檔,代替XML,Ini等檔案格式,並且更容易理解和維護。
Lua由標準C編寫而成,代碼簡潔優美,幾乎在所有作業系統和平台上都可以編譯,運行。
一個完整的Lua解譯器不過200k,在目前所有指令碼引擎中,Lua的速度是最快的。這一切都決定了Lua是作為嵌入式指令碼的最佳選擇。
http://www.oschina.net/p/lua
Lua簡明教程 http://coolshell.cn/articles/10739.html
Lua Tutorial http://lua-users.org/wiki/LuaTutorial
lua的應用
- Adobe Photoshop Lightroom uses Lua for its user interface.
- Cisco uses Lua to implement Dynamic Access Policies within theAdaptive Security Appliance.
- Codea 為ios平台下的遊戲開發程式。
- 作為遊戲的指令碼語言
- 暴雪 魔獸世界
- UBI 孤島驚魂
- 網易 大話系列
- 完美 神鬼傳奇
- 金山 劍網3
- 巨人 征途
- minecraft 中的mod
- web 應用:LUCI & openwrt。OpenWrt是適合於嵌入式裝置的一個Linux發行版,現在大多數智能路由器內啟動並執行是openwrt作業系統。LuCI是OpenWrt上的Web管理介面,LuCI採用了MVC三層架構,同時其使用Lua指令碼開發。
http://luci.subsignal.org/
https://openwrt.org/
- 在嵌入式領域:eLua stands for Embedded Lua and theproject offers the full implementation of the Lua Programming Language to theembedded world, extending it with specific features for efficient and portablesoftware embedded development.
http://www.eluaproject.net/overview
eLua的部分特性:
可控制整個平台:因為沒有OS,所以可以使用Lua語言實現整個平台的控制;
源碼可移植:可輕鬆將你的代碼移植到其他架構和平台上;
只需要通過終端或者串口將你的PC和目標板串連起來,開發時PC端不需要安裝額外的開發環境;
高度靈活性的產品:讓你的產品可以利用現代的指令碼語言,實現高適應性、可程式化和重新設定。
eLua不是什嗎?
eLua不是OS;
eLua不是去除Lua的一些東西以適應嵌入式平台,eLua擁有Lua案頭版的全部功能和特性。eLua不是針對特定平台開發的;
eLua不是OS或者RTOS或者特定處理器的一個應用程式,而是自包含的,支援一系列處理器架構;
eLua是開源軟體,基於MIT Liscence,因此你可以在商業產品上使用eLua
引自http://blog.csdn.net/tcpipstack/article/details/8259179
elua的硬體平台
|
CPU |
Architecture |
Platform name |
Supported boards |
Status |
|
LM3S8962 |
Cortex-M3 |
LM3S |
EK-LM3S8962 |
|
|
LM3S6965 |
Cortex-M3 |
LM3S |
EK-LM3S6965 |
|
|
LM3S6918 |
Cortex-M3 |
LM3S |
Eagle 100 |
|
|
LM3S9B92 |
Cortex-M3 |
LM3S |
EK-LM3S9B92 |
|
|
LM3S9D92 |
Cortex-M3 |
LM3S |
EK-LM3S9D92 |
|
|
LM3S1968 |
Cortex-M3 |
LM3S |
EK-LM3S1968 |
|
|
AT32UC3A0512 |
AVR32 |
AVR32 |
ATEVK1100 |
|
|
AT32UC3B0256 |
AVR32 |
AVR32 |
ATEVK1101 |
|
|
AT32UC3A0512 |
AVR32 |
AVR32 |
Mizar32 |
|
|
AT91SAM7X256 |
ARM7TDMI |
AT91SAM7X |
SAM7-EX256 |
|
|
AT91SAM7X512 |
ARM7TDMI |
AT91SAM7X |
None |
|
|
LPC1768 |
Cortex-M3 |
LPC17xx |
mbed |
|
|
LPC2468 |
ARM7TDMI |
LPC24xx |
PUC-Rio Demo |
|
|
LPC2888 |
ARM7TDMI |
LPC288x |
LPC-H2888 |
|
|
STR711FR2 |
ARM7TDMI |
STR7 |
MOD711 |
|
|
STR912FAW44 |
ARM966E-S |
STR9 |
STR9-comStick |
|
|
STR912FAW44 |
ARM966E-S |
STR9 |
STR-E912 |
|
|
STM32F103ZE |
Cortex-M3 |
STM32 |
STM3210E-EVAL |
|
|
STM32F103RE |
Cortex-M3 |
STM32 |
ET-STM32 Stamp |
|
|
i386 |
x86 |
i386 |
PCs/emulators |
|
http://www.eluaproject.net/overview/status
這個部分所介紹的並不完全,在elua的原始碼中可以看到支援的更多的平台。例如:我們將採用的stm32F4discovery
採用這個平台的理由是這個開發板價格便宜90元左右,而且很容易買到,效能強大,featuring a 168Mhz ARM Cortex M4 (STM32F407VGT6) The ARM is programmed via an STLINK/V2 interface connected to a PC‘s USB port. 1M flash 192 KBRAM.
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419?sc=internet/evalboard/product/252419.jsp
不過,我買的一個玩了一周,micro usb就鬆了,而且usb的資料線斷掉了。。。
下一節,我們完整講解在ubuntu 的環境下交叉編譯elua,並燒寫與stm32f4discovery平台之上
學習elua(一)