Tidak Ada Deskripsi

alienwalker 7307922912 增加724的编译框架,由于GCC太大,现在压缩上传,需要解压后编译 5 tahun lalu
.github 460746d67a 修ci 5 tahun lalu
bsp 7307922912 增加724的编译框架,由于GCC太大,现在压缩上传,需要解压后编译 5 tahun lalu
docs f4d94ce250 update: 更新一下内存分析工具的想法 5 tahun lalu
lua 7307922912 增加724的编译框架,由于GCC太大,现在压缩上传,需要解压后编译 5 tahun lalu
luat 7307922912 增加724的编译框架,由于GCC太大,现在压缩上传,需要解压后编译 5 tahun lalu
mind 4428df04ce update: 更新xmind文件, LuatOS整体 5 tahun lalu
script ba05968a46 move: 把顶层目录的demo移到bsp/air640w目录下 5 tahun lalu
tools 23426ca38b 更新 ctiot 文档 5 tahun lalu
.gitignore 7307922912 增加724的编译框架,由于GCC太大,现在压缩上传,需要解压后编译 5 tahun lalu
.gitmodules 5ea3860db8 remove: 移除子模块w60x.已经合并到bsp/air640w/rtt目录 5 tahun lalu
LICENSE 9c31f22d78 Initial commit 6 tahun lalu
Makefile.inc d4dff93211 增加第三方的heap管理函数 5 tahun lalu
README.md 4c3642b58b update: lua版本是5.3.6了,更新一下说明 5 tahun lalu
docs.md 70771e41fe add: 添加原型代码 6 tahun lalu
logo.jpg 144f1c9868 update: 更新README 6 tahun lalu
luatos.code-workspace 7307922912 增加724的编译框架,由于GCC太大,现在压缩上传,需要解压后编译 5 tahun lalu
system.jpg 0bd008a963 add: 添加已经完成的文档 6 tahun lalu
tool.lua 6f4af11a71 update: uart回调改成直接调用函数 6 tahun lalu

README.md

LuatOS logo

license rtt-w60x ci qemu ci stm32f103re ci issue

LuatOS是运行在嵌入式硬件的实时操作系统,只需要少量内存的flash空间就能运行,用户编写lua代码就可完成各种功能

Lua base RTOS, build for many embedded systems

  1. 基于Lua 5.3.6
  2. 低内存需求, 最低32kb, 96kb flash空间
  3. 硬件抽象层兼容M3/arm/risc-v等
  4. 可测试,可模拟(qemu)
  5. 在线升级
  6. 可裁剪,可扩展

QQ群: 1061642968

LuatOS@码云

LuatOS@github


总体架构

总体架构

代码示例节选

详细代码请查阅 script/app/playit/main.lua

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() then
            sys.wait(1000)
            local temp = (sensor.ds18b20(28) or "")
            http.get("http://site0.cn/api/w60x/report/ds18b20?mac=" .. wlan.get_mac() .. "&temp=" .. tostring(temp), {}, function()
                log.info("network", "http complete, sleep 5s", code, body)
                sys.publish("HTTP_DONE")
            end)
            display_str("Temp: " .. temp  .. " rssi:" .. tostring(wlan.rssi()))
            sys.waitUntil("HTTP_DONE", 5000)
        else
            log.warn("main", "wlan is not ready yet")
            sys.waitUntil("WLAN_READY", 30000)
        end
    end
end)

-- 主循环, 必须加
sys.run()

资源


使用到的开源项目

授权协议

MIT License