前言 Pico大家玩的都是MicroPython,这一篇我们就玩点不一样的,一直LUA脚本语言。 过程准备源码cd pico/pico-examples/ wget http://www.lua.org/ftp/lua-5.4.4.tar.gz 解压 tar -xvf lua-5.4.4.tar.gz 只保留src的.c和.h文件,删除其他所有的文档和Makefile等。 并添加一个main.c和CMakeLists.txt文件
修改代码pico/pico-examples/CMakeLists.txt中添加一行 add_subdirectory(lua-5.4.4) 将luac.c改个名字为luac.cbak,不参与编译 pico/pico-examples/lua-5.4.4/CMakeLists.txt如下
- file(GLOB SRC_FILES "./*.c")
-
- if (TARGET tinyusb_device)
- add_executable(lua
- ${SRC_FILES}
- )
-
- target_compile_definitions(lua PRIVATE
- PICO_STACK_SIZE=0x1000
- __HEAP_SIZE=0x8000
- )
-
- # pull in common dependencies
- target_link_libraries(lua pico_stdlib)
-
- # enable usb output, disable uart output
- #pico_enable_stdio_usb(lua 0)
- #pico_enable_stdio_uart(lua 1)
-
- # create map/bin/hex/uf2 file etc.
- pico_add_extra_outputs(lua)
-
- # add url via pico_set_program_url
- example_auto_set_url(lua)
- elseif(PICO_ON_DEVICE)
- message(WARNING "not building lua because TinyUSB submodule is not initialized in the SDK")
- endif()
复制代码
pico/pico-examples/lua-5.4.4/lua.c中 main函数改为lua_main Main.c中
- int main() {
- stdio_init_all();
- printf("Hello, LUA!n");
- #if 1
- extern int lua_main (int argc, char **argv);
- while(1)
- {
- char* cmd[4]=
- {
- "lua",
- "-v",
- "-i",
- 0
- };
- lua_main(3,cmd);
- }
- #endif
- while (true) {
- printf("Hello, world!n");
- sleep_ms(1000);
- }
- return 0;
- }
-
复制代码
编译进入目录pico/pico-examples/build export PICO_SDK_PATH="/home/lhj/pico-setup/pico/pico-sdk" && cmake .. make lua 生成的文件位于 ls lua-5.4.4/ CMakeFiles Makefile cmake_install.cmake lua.bin lua.dis lua.elf lua.elf.map lua.hex lua.uf2 cp lua-5.4.4/lua.uf2 /mnt/d 按照接口示意图接到串口0
可以看到串口打印如下
总结LUA移植性很好,移植过程很简单,目前fgets的实现还有点问题,串口没能接收数据,这个后面再解决,然后实现led控制接口,使用LUA脚本控制LED。
|