首页 > 代码库 > 学习elua(一)
学习elua(一)
本文主要介绍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(一)