LuatOS | 体验全新BSP—基于Win32的LuatOS仿真器

图片
继此前推出的在线模拟器之后,LuatOS再推全新BSP——基于Windows32的LuatOS仿真器。
 

LuatOS@Win32功能简介


LuatOS@Win32仿真器——是一个基于Windows32的LuatOS全新bsp,抛弃硬件限制,电脑可直接编译出luatos.exe执行程序,双击即可使用LuatOS的功能。

目前已涵盖Task、Log、Shell、Json、Crypto、Zbuff、FatFs、Lfs2、LVGL、模拟GPIO、模拟SPI等功能,后续将陆续增加串口、网络等等LuatOS组件。

无需硬件,轻松调试!随时随地学习、应用,开发更便捷。

  • 底层FreeRTOS Kernel V10.4.3;

    源码位于LuatOS\components\freertos

  • 编译环境msys,工具cmake/make/gcc;

  • 文件系统:win32原生文件系统,以工作目录为基点;

  • 默认luavm和rtos内存分配均为1MByte。

 

LuatOS@Win32编译说明


 

2.1 Msys环境设置

 
● 通过官方下载msys,并安装好gcc和make:

https://www.msys2.org/
 
相关命令:

pacman -Sy 更新软件包数据

pacman -Syu 更新所有

pacman -Ss xx 查询软件xx的信息

pacman -S xx 安装软件xx

pacman -S make

pacman -S gcc

pacman -S cmake
 
 
● 也可直接下载集成好的环境,下载后解压到任意盘就可以:

https://pan.baidu.com/share/init?surl=LwAU9t7HPL8kD7sBj3fFZQ

提取码:luat
 
 

2.2 Cmake工具使用

Cmake官网下载独立的Cmake最新版并安装,本文演示以C:\Program Files\CMake目录为例。

Cmake官网:https://cmake.org/

打开解压出来的msys32目录:

图片

双击运行mingw32.exe:
图片

之后cd到你的Win32目录下:

图片
 

2.3 进行LuatOS编译

这里先别着急编译,我们先看看目录下的build_cmake.sh文件:

图片

很简单是不是,只做了指定源码路径和build路径。

如果你的cmake安装在别的目录,在这里修改即可,make -j是并行编译,你的电脑是12核心就可以改成这j12。

echo done表示编译完在屏幕上输出done。

接下来,我们执行./build_cmake.sh开始编译:

图片图片

编译完成,会在build目录下生成luatos.exe,至此编译完成。
 
 

简易使用示例


新建一个目录,并在目录下新建main.lua文件。这就是主代码文件,我们写入以下代码

local sys = require "sys"

log.info("sys", "from win32")

sys.taskInit(function ()
    while true do
          log.info("hi", os.date())        
          log.info("sys", rtos.meminfo("sys"))  

          log.info("lua", rtos.meminfo("lua"))

          sys.wait(1000)    

     end

end)

sys.run()

将luatos.exe拷贝到当前目录下双击即可,可以看到程序运行起来的效果:
图片

local sys = require "sys"

log.info("sys", "from win32")

sys.taskInit(function ()
    sys.wait(1000)        	
   --初始化lvgl,可自定义尺寸如:log.info("lvgl", lvgl.init(480,320))

    log.info("lvgl", lvgl.init())      
   --创建obj以及按键文本

    lvgl.disp_set_bg_color(nil, 0xFFFFFF)    

   local scr = lvgl.obj_create(nil, nil)   

   local btn = lvgl.btn_create(scr)   

   local btn2 = lvgl.btn_create(scr)

    lvgl.obj_align(btn, lvgl.scr_act(),  lvgl.ALIGN_CENTER, 0, 0)
    lvgl.obj_align(btn2, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 50)    

    local label = lvgl.label_create(btn)  

    local label2 = lvgl.label_create(btn2)

    lvgl.label_set_text(label, "LuatOS!")
    lvgl.label_set_text(label2, "Hi")    



    - - 二维码测试

   --local qrcode = lvgl.qrcode_create(scr, 100, 0x3333ff, 0xeeeeff)
    local qrcode = lvgl.qrcode_create(scr, 100)
    lvgl.qrcode_update(qrcode, "https://luatos.com")
    lvgl.obj_align(qrcode, lvgl.scr_act(),     

    lvgl.ALIGN_CENTER, -100, -100)   



    -- gif 加载测试

    local gif = lvgl.gif_create(scr, "/example.gif")    

   if gif then

        lvgl.obj_align(gif, lvgl.scr_act(),   lvgl.ALIGN_CENTER, 100, -100)   

 end


    -- switch组件测试
    local sw = lvgl.switch_create(scr, nil)
    lvgl.obj_align(sw, lvgl.scr_act(), lvgl.ALIGN_CENTER, 100, 0)    



    --显示scr

    lvgl.scr_load(scr)        


    --设置按键回调

    lvgl.obj_set_event_cb(btn, function(obj, event)
        log.info("event", obj, event)   

    end)      

  

    while true do
           lvgl.obj_align(btn2, lvgl.scr_act(), lvgl.ALIGN_CENTER, 0, 50)
           lvgl.switch_toggle(sw, 1)
           sys.wait(500)
           lvgl.obj_align(btn2, lvgl.scr_act(), lvgl.ALIGN_CENTER, 50, 50)
           lvgl.switch_toggle(sw, 1)
           sys.wait(500)   

      end

end)

sys.run()


确保要显示的example.gif在同目录下:

图片

图片

图片

LuatOS提供了丰富的demo示例,可在module_test目录下查看选用,代码直接修改重新编译即可。因为使用cmake,如需增加/删除代码文件,直接修改CMakeLists.txt即可,非常方便。

上海合宙通信模块 - 合宙Luat,让万物互联更简单

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值