91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LuatOS-Air轉(zhuǎn)LuatOS常見故障排查手冊

青山老竹農(nóng) ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2026-01-13 19:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當(dāng)LuatOS-Air腳本在LuatOS環(huán)境中運行失敗,問題往往集中在幾個關(guān)鍵模塊:任務(wù)調(diào)度、外設(shè)驅(qū)動、網(wǎng)絡(luò)配置和固件版本匹配。本文以故障排查的邏輯為主線,列出常見報錯現(xiàn)象、可能原因及快速修復(fù)方案,打造一份實用的“不翻車”操作指南。

一、lua版本不一樣


LuatOS-Air使用的是lua5.1版本,本身不支持位移運算符。

LuatOS使用的是lua5.3版本,取消了module(..., package.seeall)這種形式的跨文件調(diào)用。


二、api不同


首先說明,core和腳本有所不同,用戶可以理解為,core是安卓/ios系統(tǒng),腳本為一個又一個的app,只有core+腳本,才能支撐起完整的一個二次開發(fā)項目。

LuatOS-Air的api:

在https://doc.openluat.com/wiki/21?wiki_page_id=2068這里,又分為了5.1原生接口,提供的額外接口兩種。

在額外的接口其中,又分為了底層接口和二次封裝接口,底層接口叫做core api,二次封裝接口叫做script lib api,下面會簡稱為lib層api。

core api實現(xiàn)過程不可見,封裝在了core里,受限于和RDA的協(xié)議,這部分實現(xiàn)過程不開源,而lib層的api,實現(xiàn)過程可見,用戶可以自行修改。

lib層api一般是將底層提供的接口進行合并與封裝,更加的簡單與易用,也有部分lib層api是直接給core發(fā)送AT指令然后處理AT指令的返回值,并且以函數(shù)返回值的形式返回給調(diào)用該api的位置。

LuatOS的api:

在https://docs.openluat.com/osapi/這里,和LuatOS-Air一樣,分為了5.3原生接口和提供的額外接口兩種。

在額外的接口其中,又分為了核心庫接口和擴展庫接口,核心庫接口叫做core api,擴展庫接口叫做script lib api,下面會簡稱為lib層api。

core api實現(xiàn)過程不可見,封裝在了core里,這部分實現(xiàn)過程不開源,而lib層的api,實現(xiàn)過程可見,用戶可以自行修改。

LuatOS 核心庫是在底層實現(xiàn)的功能庫,調(diào)用核心庫無需代碼使用 require 操作;

LuatOS 擴展庫是用 Lua 腳本實現(xiàn)的功能庫,必須用 requre 調(diào)用才能夠使用擴展庫。

三、跨文件調(diào)用方式不同


LuatOS-Air跨文件調(diào)用方式

LuatOS-Air在每一個非main.lua的文件頭部,第一行可執(zhí)行代碼永遠是module(..., package.seeall),主要作用是將該文件中所有的全局變量/全局函數(shù),加入到一張名為 _G的table中方便其他.lua文件調(diào)用,在這里不做過多講解,能有轉(zhuǎn)移需求的客戶,基本都會LuatOS-Air的跨文件調(diào)用方法。

luatos跨文件調(diào)用方式

luatos跨文件調(diào)用方式有兩種,一種和LuatOS-Air類似,不過是在文件第一行,新建一個和文件名相同的table,文件結(jié)尾處return這個table,接下來舉個例子

首先封裝一個函數(shù)

wKgZO2lmJLWAKu8bAAFwYM2G-SA233.png

我們新建一個文件叫tools.lua,把這個函數(shù)放進去,現(xiàn)在,整個文件如下面這樣:

wKgZPGlmH4SAVMEPAAAdZ3zZFlI871.png

wKgZPGlmJGuAO-jjAAH4oeicbEc615.png

現(xiàn)在,我們封裝的這個函數(shù)就能在其他文件(例如main.lua)里被調(diào)用了,具體代碼如下:

wKgZPGlmJXiAPx9xAAB3HYnwGAs922.png

當(dāng)調(diào)用了require接口后,Lua虛擬機會自動加載你調(diào)用的文件,執(zhí)行文件的內(nèi)容,然后返回你文件里return的結(jié)果。

為了更好地理解這段話,我們可以看下面兩個文件,其中main.lua是被運行的那個入口文件,

wKgZPGlmIEmAbid1AAAcS1zkoR0941.pngwKgZO2lmJcyAN3u2AAI1coDF6J0495.png

wKgZO2lmII2ADeHZAAAa-syHKac083.pngwKgZPGlmJmSAVOcVAAO3GV3LH0E924.png

此處為第一種調(diào)用方法,簡單來說,被調(diào)用文件頭部,將module(..., package.seeall)換成文件名={},文件末尾處加return {本文件中寫的函數(shù)名=本文件中寫的函數(shù)名},有多個函數(shù)的時候,可以添加多個元素名= 元素名進table里。

第二種調(diào)用方法依舊是在文件開頭寫上文件名={},不同的是,需要被調(diào)用的函數(shù)名,可以寫成文件名.函數(shù)名的形式,最后的return不需要return一個很長的table了,只需要return 文件名,例如:

需要在main.lua 中調(diào)用test.lua的test函數(shù),那么除了固定格式以外的main.lua可以寫成

wKgZO2lmJruAAh4nAAD0W6D6yws770.png

具體可參考https://gitee.com/openLuat/LuatOS/tree/master/script/libs這里所有的demo

四、實例

uart的demo為例,筆者將帶著用戶,將LuatOS-Air uart的demo,移植到luatos上(僅講解uart1的移植過程,其他串口通用),除去無關(guān)本次移植過程的部分,LuatOS-Air的uart1完整demo如下,是一個自發(fā)自收的測試demo,luatos完整的demo也會放在最后,方便用戶對比。

LuatOS-Air_uart.zip

開始移植

main.lua的改造

wKgZPGlmIRaAO57PAAC00UF5fh0626.png

PROJECT和VERSION這兩個參數(shù)不變,下載時候需要這兩個參數(shù)

require "log"這句可以刪除,底層已經(jīng)寫好了log庫,并提供了和LuatOS-Air lib層api幾乎一致的core api,查看對應(yīng)的 luatos log庫api https://docs.openluat.com/osapi/core/log/

后得知,幾種日志模式的常量有所不同,所以LOG_LEVEL = log.LOGLEVEL_TRACE這句,可以改成LOG_LEVEL = log.LOG_INFO,再添加一句log.setLevel(LOG_LEVEL )

因為主邏輯都在testUart1文件中,不需要在main.lua中調(diào)用,所以保持 require "testUart1" 原樣即可,為了用戶更直觀的看出跨文件調(diào)用的不同,所以我在testUart1中又寫了一個名為function_name的函數(shù),然后在main.lua中進行循環(huán)調(diào)用。sys.init函數(shù)不需要,直接刪去即可

完成上述步驟以后,main.lua就被我們改造成了下面這樣

wKgZPGlmIZ6ATNlfAADrIEaVs-s833.png

testUart1.lua的改造

接下來進入testUart1.lua中

wKgZPGlmIhOAc8A3AACu6oloN5g476.png

module(...,package.seeall)改為 testUart1 ={},pm和utils兩個庫,utils不需要,直接刪除,pm庫底層提供了,無需require,也刪除。

接下來會先將proc、read、write、writeOk和我剛剛寫的function_name這幾個函數(shù)會加載到內(nèi)存中,但是還沒有執(zhí)行,接下來執(zhí)行的是pm.wake("testUart"),查看luatos的pm接口(https://docs.openluat.com/osapi/core/pm/),可以看到luatos沒有wake接口,但是有不休眠模式,所以先設(shè)置下不休眠,也就是將pm.wake("testUart")換成pm.request(pm.NONE)

然后執(zhí)行的是uart.on兩個注冊函數(shù),當(dāng)時串口有接收事件產(chǎn)生時候,會去執(zhí)行read函數(shù),當(dāng)串口有發(fā)送事件產(chǎn)生時,會執(zhí)行writeOK函數(shù),對比luatos的注冊串口收發(fā)事件(https://docs.openluat.com/osapi/core/uart/#45-uartonid-event-func),可以看出,這兩個芯片收發(fā)事件函數(shù)一致,無需更改。

最后執(zhí)行的是串口設(shè)置指令,LuatOS-Air和luatos有很大不同,LuatOS-Air的uart設(shè)置接口如下(https://doc.openluat.com/wiki/21?wiki_page_id=2250#uartsetup_id_baud_databits_parity_stopbitsmsgmodetxDoneReportflowcontrolpriority_33)

luatos的uart設(shè)置接口如下(https://docs.openluat.com/osapi/core/uart/#41-uartsetupid-baud_rate-data_bits-stop_bits-partiy-bit_order-buff_size-rs485_gpio-rs485_level-rs485_delay-debug_enable-error_drop)

這兩個接口,LuatOS-Air的和luatos最大區(qū)別就是,LuatOS-Air將485半自動收發(fā)控制分開了,單獨寫了一個uart.set_rs485_oe

而luatos將其寫在了一起,用戶在使用該接口時,一定要注意不同接口之間參數(shù)的位置。

當(dāng)有串口接收事件產(chǎn)生時,模塊會進入read函數(shù),在read函數(shù)里,打印了data原始數(shù)據(jù)和轉(zhuǎn)成hex以后的數(shù)據(jù)后,便進入了proc函數(shù)中,并且將串口來的數(shù)據(jù)傳入給proc函數(shù),進行處理。

值得注意的是,read函數(shù)里有將串口來的數(shù)據(jù)通過uart.read函數(shù)賦值給data變量這個操作,但是luatos截至當(dāng)前文章完成時,uart.read函數(shù)的第二個參數(shù),只能填number,意為每次接收的字節(jié)數(shù),也就是需要將代碼中的uart.read(UART_ID,"*l")換成uart.read(UART_ID,1024)后面這個1024,為uart.setup的第7個參數(shù),串口緩沖區(qū)你設(shè)置的大小,未設(shè)置默認(rèn)為1024字節(jié),如果需要用戶自行設(shè)置,則最小512,最大4096

而當(dāng)有串口發(fā)送事件產(chǎn)生時,模塊會進入writeOk函數(shù),該函數(shù)比較簡單,就打印了下發(fā)送成功字樣。

最后一行因為有跨文件調(diào)用,所以需要return 文件名,也就是加一句return testUart1

最后整個testUart1.lua就被我們改造成了這樣

wKgZPGlmIqWAAxKWAAM6TjRMeec811.png


至此 整個改造過程結(jié)束,改造后的文件我也放在下面方便用戶對比

luatos_uart.zip

今天的內(nèi)容就分享到這里了~

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    156

    瀏覽量

    2689
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    UPS電源常見故障維修全解析:從排查到修復(fù)的實戰(zhàn)指南

    ?當(dāng)UPS不間斷電源發(fā)生故障時,許多用戶會感到手足無措。它不僅是設(shè)備斷電時的“救命稻草”,其自身的穩(wěn)定運行更是整個系統(tǒng)可靠性的基石。理解常見故障背后的原因并掌握基礎(chǔ)排查方法,能在關(guān)鍵時刻爭取寶貴時間
    的頭像 發(fā)表于 02-05 09:30 ?258次閱讀
    UPS電源<b class='flag-5'>常見故障</b>維修全解析:從<b class='flag-5'>排查</b>到修復(fù)的實戰(zhàn)指南

    輕松掌握——LuatOS socket基礎(chǔ)知識和應(yīng)用開發(fā)

    對于剛接觸LuatOS開發(fā)的工程師而言,實現(xiàn)設(shè)備聯(lián)網(wǎng)往往是第一個重要目標(biāo),而Socket編程正是實現(xiàn)這一目標(biāo)的核心技術(shù)路徑。本文以循序漸進的方式,帶領(lǐng)讀者從最基礎(chǔ)的Socket概念入手,逐步掌握在
    的頭像 發(fā)表于 01-28 20:07 ?160次閱讀
    輕松掌握——<b class='flag-5'>LuatOS</b>  socket基礎(chǔ)知識和應(yīng)用開發(fā)

    解鎖:LuatOS框架的使用(下篇)

    接上一篇 2.3 LuatOS 的定時器(timer) 對于 LuatOS 應(yīng)用程序來說,定時器本質(zhì)上也算是一種特殊的消息,因為定時器太常用了,所以把他單獨拎出來,單獨的一個章節(jié)進行講解
    的頭像 發(fā)表于 01-28 13:18 ?144次閱讀
    解鎖:<b class='flag-5'>LuatOS</b>框架的使用(下篇)

    LuatOS框架的使用(上)

    在資源受限的物聯(lián)網(wǎng)終端設(shè)備中,如何實現(xiàn)快速開發(fā)與穩(wěn)定運行是關(guān)鍵挑戰(zhàn)。LuatOS框架通過將Lua語言與底層硬件抽象層深度融合,提供了一套簡潔高效的開發(fā)范式。本文將圍繞LuatOS框架的使用展開,從
    的頭像 發(fā)表于 01-27 19:38 ?151次閱讀
    <b class='flag-5'>LuatOS</b>框架的使用(上)

    LuatOS-Air腳本移植到LuatOS版本注意事項

    一、lua版本不一樣 LuatOS-Air使用的是lua5.1版本,本身不支持位移運算符。 LuatOS使用的是lua5.3版本,取消了module(..., package.seeall)這種形式
    的頭像 發(fā)表于 01-17 14:48 ?1134次閱讀
    <b class='flag-5'>LuatOS-Air</b>腳本移植到<b class='flag-5'>LuatOS</b>版本注意事項

    警惕兼容性陷阱:LuatOS-Air腳本在LuatOS中的運行異常分析

    即使語法正確的LuatOS-Air腳本,在LuatOS環(huán)境中也可能出現(xiàn)“靜默失敗”——程序無報錯但功能未執(zhí)行。這類問題多與系統(tǒng)事件循環(huán)、模塊加載時機或硬件抽象層調(diào)用方式有關(guān)。本文通過多個真實
    的頭像 發(fā)表于 01-13 19:20 ?147次閱讀
    警惕兼容性陷阱:<b class='flag-5'>LuatOS-Air</b>腳本在<b class='flag-5'>LuatOS</b>中的運行異常分析

    LuatOS下載實戰(zhàn)指南:從流程梳理到常見故障排除

    ?對于初次接觸LuatOS的開發(fā)者而言,成功將固件下載至目標(biāo)設(shè)備是邁向項目實現(xiàn)的第一步。然而,下載過程中常因環(huán)境配置不當(dāng)或操作失誤而中斷。本文將從實際開發(fā)角度出發(fā),系統(tǒng)講解LuatOS下載的完整
    的頭像 發(fā)表于 12-26 18:55 ?140次閱讀
    <b class='flag-5'>LuatOS</b>下載實戰(zhàn)指南:從流程梳理到<b class='flag-5'>常見故障</b>排除

    Keithley吉時利6511常見故障排查及解決方法

    Keithley吉時利6511作為一款精密測量儀器,在長期使用中可能會遇到各種故障。以下是該設(shè)備常見故障排查思路及解決方法,幫助用戶快速定位問題并恢復(fù)設(shè)備正常運行。 ? ? 一、常見故障
    的頭像 發(fā)表于 11-21 18:47 ?893次閱讀
    Keithley吉時利6511<b class='flag-5'>常見故障</b><b class='flag-5'>排查</b>及解決方法

    LuatOSAir8000 AGPS輔助定位教程與實踐

    本教程演示了Air8000在LuatOS中利用AGPS輔助定位實現(xiàn)快速定位的方法,系統(tǒng)講解AGPS原理及開發(fā)應(yīng)用時的注意事項。 ? 一、AGPS 概述 ? AGPS(Assisted GPS,輔助
    的頭像 發(fā)表于 10-31 16:51 ?3086次閱讀
    <b class='flag-5'>LuatOS</b>下<b class='flag-5'>Air</b>8000 AGPS輔助定位教程與實踐

    Task任務(wù):LuatOS實現(xiàn)“任務(wù)級并發(fā)”的核心引擎

    Task任務(wù)通過其強大的并發(fā)處理能力,使LuatOS能夠在單線程環(huán)境中模擬多線程執(zhí)行,通過協(xié)程的掛起與恢復(fù)機制,實現(xiàn)任務(wù)級的并行操作,顯著提升系統(tǒng)效能。 sys核心庫是LuatOS運行框架庫,也是
    的頭像 發(fā)表于 08-28 13:49 ?504次閱讀
    Task任務(wù):<b class='flag-5'>LuatOS</b>實現(xiàn)“任務(wù)級并發(fā)”的核心引擎

    揭秘LuatOS Task:多任務(wù)管理的“智能中樞”

    Task任務(wù)作為LuatOS的核心組成部分,通過智能化的任務(wù)管理機制,實現(xiàn)任務(wù)的創(chuàng)建、調(diào)度與協(xié)同運行,讓復(fù)雜應(yīng)用得以高效并行處理,滿足實時場景下的嚴(yán)苛需求。 sys核心庫是LuatOS運行框架庫
    的頭像 發(fā)表于 08-28 13:48 ?631次閱讀
    揭秘<b class='flag-5'>LuatOS</b> Task:多任務(wù)管理的“智能中樞”

    解碼LuatOS:短信功能的底層運作機制

    短信功能在LuatOS中的運行并非表面所見那么簡單。本文將深入系統(tǒng)底層,解碼其通信協(xié)議、數(shù)據(jù)處理與系統(tǒng)交互,呈現(xiàn)完整的運作圖譜。 我們這期主要拆解airsms.lua文件,講清楚,短信功能
    的頭像 發(fā)表于 06-27 18:05 ?631次閱讀
    解碼<b class='flag-5'>LuatOS</b>:短信功能的底層運作機制

    LuatOS編程基礎(chǔ)教程:手把手帶你入門物聯(lián)網(wǎng)開發(fā)!

    對于渴望進入物聯(lián)網(wǎng)開發(fā)領(lǐng)域的初學(xué)者來說,LuatOS是一個理想的起點。本教程將通過由淺入深的教學(xué)方式,從搭建開發(fā)環(huán)境、理解核心API到編寫簡單應(yīng)用,逐步引導(dǎo)你掌握LuatOS編程的核心技能,開啟智能
    的頭像 發(fā)表于 06-11 13:03 ?764次閱讀
    <b class='flag-5'>LuatOS</b>編程基礎(chǔ)教程:手把手帶你入門物聯(lián)網(wǎng)開發(fā)!

    吉時利2400數(shù)字源表常見故障排查與校準(zhǔn)教程

    。本文將詳細介紹吉時利2400數(shù)字源表的常見故障排查方法、校準(zhǔn)流程及維護注意事項,幫助用戶快速解決常見問題,確保儀器穩(wěn)定運行。 ? 一、常見故障排查
    的頭像 發(fā)表于 06-10 12:02 ?844次閱讀
    吉時利2400數(shù)字源表<b class='flag-5'>常見故障</b><b class='flag-5'>排查</b>與校準(zhǔn)教程

    血淚教訓(xùn)總結(jié):Air780EPM的LuatOS二次開發(fā)——OneWire協(xié)議調(diào)試注意事項

    在物聯(lián)網(wǎng)設(shè)備開發(fā)中,精準(zhǔn)且穩(wěn)定的數(shù)據(jù)傳輸是構(gòu)建智能系統(tǒng)的核心。通過本文,開發(fā)者不僅能掌握規(guī)避常見陷阱的方法,還能學(xué)習(xí)如何利用Air780EPM的硬件特性與LuatOS的靈活A(yù)PI設(shè)計,實現(xiàn)穩(wěn)定可靠
    的頭像 發(fā)表于 03-20 17:52 ?1146次閱讀
    血淚教訓(xùn)總結(jié):<b class='flag-5'>Air</b>780EPM的<b class='flag-5'>LuatOS</b>二次開發(fā)——OneWire協(xié)議調(diào)試注意事項