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,讓萬物互聯更簡單


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM