這個國產操做系統不但開源,並且全用 lua 腳本開發

一說到國產操做系統,可能不少同窗會以爲根本就沒有這種東西。可是實際上,國內有不少優秀的國產操做系統,雖然有些並非供普通消費者使用的,可是它們都各有特點,而且有些系統在其專業細分領域使用率已經很高了,今天推薦的 LuatOS 就是這樣一款物聯網操做系統。git

項目名稱:LuatOS
項目做者:Wendal
開源許可協議:MIT json

LuatOS 是運行在嵌入式硬件的實時操做系統,只須要少許內存的 flash 空間就能運行,用戶編寫 lua 代碼就可完成各類功能。api

  • 基於Lua 5.3.5
  • 低內存需求, 最低32kb, 96kb flash空間
  • 硬件抽象層兼容M3/arm/risc-v等
  • 可測試,可模擬(qemu)
  • 在線升級
  • 可裁剪,可擴展

整體架構


代碼示例節選服務器

local sys = require("sys")

sys.subscribe("WLAN_READY", function ()
    print("!!! wlan ready event !!!")
    -- 立刻進行時間同步
    socket.ntpSync()
end)

disp.init("ssd1306")
display_str("Booting ...")

-- 配網回調
sys.subscribe("WLAN_PW_RE", function(ssid, password)
    if ssid then
        log.info(TAG, "airkiss GOT", ssid, password)
        local conf = {ssid=ssid,password=password}
        json.encodeFile(conf, "/wlan.json")
    else
        log.info(TAG, "airkiss fail")
    end
end)

-- 業務流程, 聯網後定時發送溫度數據到服務器
sys.taskInit(function()
    while 1 do
        if wlan.ready() == 1 then
            sys.wait(1000)
            local temp = (sensor.ds18b20(28) or "")
            display_str("Temp: " .. temp  .. " rssi:" .. tostring(wlan.rssi()))
            local t = {"GET /api/w60x/report/ds18b20?mac=", wlan.get_mac(), "&temp=", temp, " HTTP/1.0\r\n",
                    "Host: site0.cn\r\n",
                    "User-Agent: LuatOS/0.1.0\r\n",
                        "\r\n"}
            socket.tsend("site0.cn", 80, table.concat(t))
            log.info("network", "tsend complete, sleep 5s")
            sys.wait(5000)
        else
            log.warn("main", "wlan is not ready yet")
            sys.waitUntil("WLAN_READY", 30000)
        end
    end
end)

-- 主循環, 必須加
sys.run()

項目地址:https://gitee.com/wendal/LuatOS
若是你想要認識更多國產開源操做系統,能夠點擊下面的連接看看:https://gitee.com/explore/os架構

相關文章
相關標籤/搜索