電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 16|回復: 0
收起左側(cè)

分享一套面向MCU的前后臺系統(tǒng)

[復制鏈接]

235

主題

235

帖子

1119

積分

三級會員

Rank: 3Rank: 3

積分
1119
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 昨天 11:46 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)注+星標公眾,不錯過精彩內(nèi)容

來源 | 網(wǎng)絡

MCU如果裸機奔跑的話,可能在后期升級、維護就變得有點難。所以,一般建議要上要一個RTOS或者一套框架之類的。

今天給大家分享一個面向MCU的小型前后臺系統(tǒng):JxOS
簡介 JxOS面向MCU的小型前后臺系統(tǒng),提供消息、事件等服務,以及軟件定時器,低功耗管理,按鍵,led等常用功能模塊。
在此基礎(chǔ)上實現(xiàn)了基于433的簡單無線網(wǎng)絡功能。此項目的設(shè)計思想是:功能模塊與硬件高度解耦,提高代碼模塊的可復用性;不使用復雜的數(shù)據(jù)結(jié)構(gòu)和語法以提高不同硬件平臺和編譯器之間的兼容性,實現(xiàn)工程在不同MCU之間的快速移植;提供實用穩(wěn)定常用的功能模塊,實現(xiàn)項目的快速開發(fā);定義標準應用開發(fā)框架,減輕應用開發(fā)的工作量和難度。
已使用此系統(tǒng)用于開發(fā)項目的硬件平臺有:N76E003、STM8S103K、PC、KF8TS2716
Software Architecture


JxOS
├───demo_code    參考代碼,未整理代碼

├───jxos     jxos
│   ├───bsp     過時分類,將逐步歸類到 driver 和 lib 中
│   ├───kernel    內(nèi)核,提供系統(tǒng)內(nèi)核功能:任務、事件、消息、公告板、郵箱、管道、注冊、內(nèi)存分配……
│   ├───driver    使用 靜態(tài) 初始化的功能代碼模塊,使用config.h文件進行配置;此目錄下的代碼大部分與硬件相關(guān),如:傳感器、按鍵掃描、屏幕…… (driver 與 lib 有時并沒有清晰的界限,如driver:led_blink 就有可能抽象成 lib:sw_pwm)
│   ├───lib     使用 動態(tài) 初始化的功能代碼模塊,使用初始化函數(shù)進行配置;此目錄下的模代碼大部分與硬件無關(guān),如:環(huán)形緩沖區(qū)、crc16、棧、軟件定時器……
│   ├───sys_service   基于任務實現(xiàn)的系統(tǒng)服務,如:低功耗管理、軟件定時器、打印輸出……(只有對外接口,不發(fā)出對外消息)
│   └───std_app    基于任務實現(xiàn)的常用標準應用,如獨立按鍵掃描、按鍵多次點擊、指示燈閃爍……(此類模塊和user app屬于同一級別,只不過已經(jīng)標準化;此類模塊發(fā)出對外消息,也有對外接口,用于兼容不能支持消息功能的硬件平臺)

├───platform
│   ├───N76E003    ┐
│   ├───N76E003    ├───  基于 jxos 實現(xiàn)的,使用不同平臺硬件的具體項目
│   └───STM8S103K3 ┘

├───JSnet   ┐
├───....    ├───   基于 jxos 實現(xiàn)的功能模塊
└───SRTnet  ┘
kernel        提供系統(tǒng)內(nèi)核功能:任務、事件、消息、公告板、郵箱、管道、注冊、內(nèi)存分配……driver        使用 靜態(tài) 初始化的功能代碼模塊,使用config.h文件進行配置;此目錄下的代碼大部分與硬件相關(guān),如:傳感器、按鍵掃描、屏幕…… (driver 與 lib 有時并沒有清晰的界限,如driver:led_blink 就有可能抽象成 lib:sw_pwm)lib           使用 動態(tài) 初始化的功能代碼模塊,使用初始化函數(shù)進行配置;此目錄下的模代碼大部分與硬件無關(guān),如:環(huán)形緩沖區(qū)、crc16、棧、軟件定時器……sys_service   基于任務實現(xiàn)的系統(tǒng)服務,如:低功耗管理、軟件定時器、打印輸出……(只有對外接口,不發(fā)出對外消息)std_app       基于任務實現(xiàn)的常用標準應用,如獨立按鍵掃描、按鍵多次點擊、指示燈閃爍…… (此類模塊和user app屬于同一級別,只不過已經(jīng)標準化;此類模塊發(fā)出對外消息,也有對外接口,用于兼容不能支持消息功能的硬件平臺)platform           基于 jxos 實現(xiàn)的,使用不同平臺硬件的具體項目在某些編譯器環(huán)境下可能出現(xiàn)以某些限制(不支持函數(shù)指針,不支持中斷處理函數(shù)中調(diào)用其他函數(shù),不支持函數(shù)指針帶參數(shù),不支持結(jié)構(gòu)體),因此 std_app 提供的消息可能無法使用,作為補充std_app 也會同時提供全局變量來傳出信息和函數(shù)接口來傳入信息為提高代碼的兼容性;盡量不要使用函數(shù)指針為提高代碼的可復用性,std_app 中的功能盡量在 driver 和 lib 中實現(xiàn),std_app 中的代碼僅作為提供系統(tǒng)tick和統(tǒng)一對外接口的功能模塊和 std_app 可以提供多個不同實現(xiàn)方法的文件,但保持對外接口的統(tǒng)一對外提供兩套接口方案 jxos_public.h 提供高級接口(消息 事件等),jxos_public_lite.h 提供低級接口(全局變量, 函數(shù))[/ol]Instructions 導入 jxos_public.h 即可調(diào)用系統(tǒng)所有的對外接口每個項目通過 jxos_init_config.c 和 jxos_config.h 對系統(tǒng)進行配置,即每個項目有獨立配置文件在 jxos_init_config.c 實現(xiàn)需要硬件支持的系統(tǒng)模塊硬件初始化,以及用戶任務的初始化順序在 jxos_config.h 配置系統(tǒng)模塊的參數(shù)和使能event 用于任務內(nèi)部的信號同步,主要是將中斷信號傳遞到任務msg 用于任務之間的消息傳遞,使用 jxos_msg_get_handle 可通過消息名(字符串)獲取消息句柄[/ol]如何建立新項目:
獲取 Jxos 所有文件和目錄結(jié)構(gòu)
在 \platform 目錄下建立當前工程的目錄(platform\芯片型號\工程命名\)
在 \工程名稱 目錄下新建工程文件(keil、iar 等IDE的newproject)
在 \工程名稱 目錄下新建 \config 目錄,增加 jxos_config.h type.h 系統(tǒng)配置文件
在 \config 目錄下增加工程用到的功能模塊的配置文件 (如 button_config.h sim_timer_config.h ...)
在 \工程名稱 目錄下新建 \framework 目錄
在 \framework 目錄下增加 main.c ,實現(xiàn)main函數(shù),在main函數(shù)中調(diào)用jxos_run() ( void main(void) {jxos_run();} )
在 \framework 目錄下增加 isr.c ,實現(xiàn)工程需要的中斷處理函數(shù)
在 \framework 目錄下增加 callback_handler.c ,實現(xiàn)工程用到的功能模塊的callback函數(shù)
建議在 \工程名稱 目錄下新建 \app 目錄,實現(xiàn)用戶功能任務
建議在 \芯片型號 目錄下增加芯片需要用到的庫文件目錄
在IDE的新工程中導入 jxos.c
在IDE的新工程中導入需要的Jxos模塊的文件(kernel、sys_service ...)
在IDE的新工程中導入 main.c, isr.c, callback_handler.c
在IDE的新工程中導入用戶任務文件 (\工程名稱\app\)
在IDE的新工程中增加include目錄,包括:\joxs,\platform\芯片型號\工程命名\config
在IDE的新工程中增加其他的include目錄,如芯片庫文件的頭文件
按照框架實現(xiàn)用戶任務
如何配置與使用 kernel
如何配置與使用 sys_service
如何配置與使用 std_app
如何使用標準框架的 driver 模塊
如何使用標準框架的 lib 模塊
最后,附上開源地址:
  • https://gitee.com/jeremyceng/JxOS/
    聲明:本文素材來源網(wǎng)絡,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我聯(lián)系刪除。----------- END ------------

    ●專欄《嵌入式工具●專欄《嵌入式開發(fā)》●專欄《Keil教程》●嵌入式專欄精選教程
    關(guān)注公眾號回復“加群”按規(guī)則加入技術(shù)交流群,回復“1024”查看更多內(nèi)容。點擊“閱讀原文”查看更多分享。
  • 回復

    使用道具 舉報

    發(fā)表回復

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表