LoRa ALOHA固件更新

ship_radio_by_darkcapilla-d7450yx.png

Fig 1: 船用電臺CG效果圖,來自BING Image Search

昨天花了一整天去學習ECC背后的數(shù)學,學到懷疑人生。無論是英文、中文教程,里面的數(shù)學概念都讓人舉步維艱。今早換個腦子,來搞搞ALOHA的固件,后面還有客戶等著用呢。


LoRa作為LPWAN的代表產(chǎn)品,長距離、低速率,不太適合運行短距無線電的路由協(xié)議,因為路由協(xié)議本身就是一種消耗。所以這一點上看,更加類似無線電通訊發(fā)展初期的情況,也類似于現(xiàn)在的HAM火腿族的應用情況。從數(shù)據(jù)通訊的MAC層來看,比較適用于簡單的基于競爭的ALOHA協(xié)議(該協(xié)議也在以太網(wǎng)、RFID等其他場景中使用)。周期性定時休眠和喚起,配合RTS/CTS幀可以避免隱藏終端的問題,成為最簡單的S-MAC協(xié)議。

mbed上的AlohaTransceiver例程本質(zhì)上只包括了Radio的PHY/MAC/LL以及最簡單的API,同時也提供了類似STX/ETX的二進制協(xié)議??梢允褂?,但是因為不提供技術(shù)支持,所以即使有Bug,也得不到任何技術(shù)支持。是的,該團隊甚至關(guān)閉了所有的聯(lián)系方式。

所以,我做的事情是:

  1. 嘗試編譯工程,并按照編譯器出錯的提示去修正,先移除一些形式上和類型上的錯誤,缺點是邏輯錯誤都沒有仔細看;
  2. 重新調(diào)整代碼,AlohaTransceiver把Radio的底層歸集成為API,所以我們需要寫的就是整合AlohaTransceiver/SerialInterfaceProtocol兩個模塊,再配合一些LED/BTN之類的輔助IO來構(gòu)建一個main.cpp.
  3. 定義用戶命令,因為SerialInterfaceProtocol實際上也是一組API,所以需要用戶根據(jù)自己的應用來確定最終的用戶命令。并利用Callback回調(diào)整合起來。

SerialInterfaceProtocol的Command變量雖然是8位字節(jié),但協(xié)議中卻是16位的Int類型。擴展余地很大,所以,我目前定義了一個枚舉。

typedef enum{
    NONE = 0,
    USR_SET,
    PSW_SET,
    UNIT_NR_Q,
    SNR_Q,
    FW_VER_Q,
    UPTIME_Q,
    ALARM_Q,
    ONOFF_SET,
    ONOFF_Q,
    RADIO_SET,  // Carrier, Bandwidth, CR, SF, TXP and other params.
    RADIO_Q,
    DIAG_Q,
    MAC_SET,    // MAC layer settings.
    MAC_Q,
    COM_SET,    // Valid in UART, invalid in USB
    COM_Q,
    MSG_SET,    // Message Memory settings.
    MSG_Q,
    MSG_SEND,
    MSG_RECV,    
    LASTCMD
}Command_t;

每個對象都有SET/GET,參數(shù)還有長有短。但是如果添加了IPV6之后,受控對象會增加很多,所以需要仔細規(guī)劃。節(jié)省資源,比如某些對象宜作為虛擬寄存器的方式進行讀寫,這樣大量對象就可以集中到兩個命令中去了,也可以節(jié)省代碼空間。

目前已經(jīng)整合了USB,但沒有填充命令處理函數(shù)的情況下,代碼在58KB。一旦在應用添加了很多命令處理函數(shù),則跳出64KB是大概率事件,所以必須采用CB后綴的MCU,即QFP48/128KB ROM,比如STM32F103CB/072CB/L073CB等。

測試完成后,本人將基于這個代碼提供定制服務,其中用戶命令接口代碼,將使用Python代碼生成器來定制C++和Python主機代碼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,029評論 25 709
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,618評論 30 472
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,286評論 4 61
  • "目錄號: HY-13720A GPCR/G ProteinNeuronal Signaling- Pergoli...
    莫小楓閱讀 230評論 0 0
  • 字字凌亂,句句肺腑 (真不知道當時字寫得怎么那么丑)
    Danieffy閱讀 214評論 0 0

友情鏈接更多精彩內(nèi)容