




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
現(xiàn)在嵌入式設計的要求,比以前要求更高了,這個時候還是建議大家要掌握一套或多套軟件框架,以便隨時派上用場。今天就來分享一個開源的輕量級的嵌入式設計框架:mr-library.mr-library簡介MR
框架是專為嵌入式系統(tǒng)設計的輕量級框架。充分考慮了嵌入式系統(tǒng)在資源和性能方面的需求。通過提供標準化的設備管理接口,極大簡化了嵌入式應用開發(fā)的難度,幫助開發(fā)者快速構(gòu)建嵌入式應用程序??蚣転殚_發(fā)者提供了標準化的開啟(open)、關閉(close)、控制(ioctl)、讀(read)、寫(write)等接口。它將應用程序與底層硬件驅(qū)動進行解耦。應用程序無需了解驅(qū)動的實現(xiàn)細節(jié)。當硬件發(fā)生改變時,只需要適配底層驅(qū)動,應用程序就可以無縫遷移到新硬件上。這大大提高了軟件的可重用性和應對新硬件的可擴展性。項目結(jié)構(gòu)圖關鍵特性標準化的設備訪問接口應用程序和驅(qū)動開發(fā)解耦簡化底層驅(qū)動和應用程序開發(fā)輕量易上手,資源占用低模塊化設計,各部分解耦合并獨立開發(fā),極低的硬件遷移成本支持在裸機環(huán)境和操作系統(tǒng)環(huán)境下使用主要組成設備框架:提供設備訪問標準接口內(nèi)存管理:動態(tài)內(nèi)存管理工具:鏈表、隊列、平衡樹等常用數(shù)據(jù)結(jié)構(gòu)各類功能組件標準化設備接口設備的所有操作都可通過以下接口實現(xiàn):接口描述mr_dev_register注冊設備mr_dev_open打開設備mr_dev_close關閉設備mr_dev_ioctl控制設備mr_dev_read從設備讀取數(shù)據(jù)mr_dev_write向設備寫入數(shù)據(jù)示例:struct
mr_spi_dev
spi_dev;
int
main(void)
{
/*
注冊SPI10設備(CS低電平有效)到SPI1總線上
*/
mr_spi_dev_register(&spi_dev,
"spi1/spi10",
0,
MR_SPI_CS_ACTIVE_LOW);
/*
打開SPI1總線下的SPI10設備
*/
int
ds
=
mr_dev_open("spi1/spi10",
MR_OFLAG_RDWR);
/*
發(fā)送數(shù)據(jù)
*/
uint8_t
wr_buf[]
=
{0x01,
0x02,
0x03,
0x04};
mr_dev_write(ds,
wr_buf,
sizeof(wr_buf));
/*
接收數(shù)據(jù)
*/
uint8_t
rd_buf[4]
=
{0};
mr_dev_read(ds,
rd_buf,
sizeof(rd_buf));
/*
關閉設備
*/
mr_dev_close(ds);
}配置工具MR
提供
Kconfig
可視化配置工具,開發(fā)者無需深入了解源代碼即可進行配置。Kconfig
會根據(jù)配置文件自動生成配置選項界面。開發(fā)者可以通過簡單的操作來選擇需要啟用的功能組件和設置相關參數(shù)。配置工具配置工具1通過修改參數(shù),快速裁剪所需功能。配置完成后通過
Python
腳本自動生成配置文件。目錄結(jié)構(gòu)名稱描述bsp板級支持包components組件device設備文件document文檔driver驅(qū)動文件include庫頭文件source庫源文件Kconfig配置文件kconfig.py自動配置腳本LICENSE許可證開始使用配置
Kconfig
環(huán)境注:Kconfig
并非必須的,但是推薦使用(安裝和配置非??旖荩罄m(xù)教程也是以應用
Kconfig
為例)。驗證系統(tǒng)是否安裝Python環(huán)境。在命令行中運行
python--version
檢查Python版本(Kconfig
依賴于
python,若無
python環(huán)境請自行安裝)。在命令行中使用所示命令安裝
Kconfigpython-mpipinstallwindows-curses
python-mpipinstallkconfiglib在命令行中運行
menuconfig-h
驗證安裝是否成功。將框架導入工程1.從
Gitee
或
Github
倉庫下載最新版本源碼到本地。將源碼導入到您工程所在的目錄。以STM32工程為例:工程目錄如使用的芯片已經(jīng)做了
BSP
適配請參考芯片對應
BSP
中的配置教程,完成
BSP
配置。移除不需要的文件
bsp、document、module
目錄(如不需要GIT也可以移除.git文件刪除)。完成后,目錄結(jié)構(gòu)如下所示:工程目錄1將文件加入到IDE中(大部分IDE都能自動識別工程路徑下的文件,無需進行此步驟)。以
keil
為例:工程目錄Keil添加
source、device、driver
目錄下的所有文件。配置菜單選項在
mr-library
目錄下打開命令行工具,運行
menuconfig
進行菜單配置。.工程目錄2注:當添加對應芯片驅(qū)動的后,將顯示
Deviceconfigure
和
Driverconfigure。對應
Driverconfigure
請參考
BSP
下教程。選中
Deviceconfigure
回車進入菜單,按照需要配置功能。工程目錄3配置完成后,按
Q
退出菜單配置界面,按Y
保存配置。生成配置文件在
mr-library
目錄下打開命令行工具,運行
pythonkconfig.py,自動生成配置文件
mr_config.h。添加包含路徑在編譯器中添加
mr-library
的包含路徑,以
keil
為例:工程目錄4配置自動初始化(GCC環(huán)境),查找您工程下以
.ld
為后綴的連接腳本文件(通常為
link.ld),在腳本文件中添加代碼:注:如果您的是在
keil
等,能夠自動生成鏈接腳本的環(huán)境下,請?zhí)^此步驟。/*
mr-library
auto
init
*/
.
=
ALIGN(4);
_mr_auto_init_start
=
.;
KEEP(*(SORT(.auto_init*)))
_mr_auto_init_end
=
.;示例:工程目錄配置GNU語法。如果您使用的是非
GCC
編譯器,請使能GNU語法。以
keil
為例:AC5:工程目錄6AC6:工程目錄7在您的工程中引入
#include"include/mr_lib.h"。在
main
函數(shù)中添加
mr_auto_init();
自動初始化函數(shù)。先來點個燈吧#include
"include/mr_lib.h"
/*
定義LED引腳(PC13)*/
#define
LED_PIN_NUMBER
45
int
main(void)
{
/*
自動初始化
*/
mr_auto_init();
/*
打開PIN設備
*/
int
ds
=
mr_dev_open("pin",
MR_OFLAG_RDWR);
/*
設置到LED引腳
*/
mr_dev_ioctl(ds,
MR_CTL_PIN_SET_NUMBER,
mr_make_local(int,
LED_PIN_NUMBER));
/*
設置LED引腳為推挽輸出模式
*/
mr_dev_ioctl(ds,
MR_CTL_PIN_SET_MODE,
mr_make_local(int,
MR_PIN_MODE_OUTPUT));
while(1)
{
/*
點亮LED
*/
mr_dev_write(ds,
mr_make_local(uint8_t,
MR_PIN_HIGH_LEVEL),
sizeof(uint8_t));
mr_delay_ms(500);
mr_dev_write(ds,
mr_make_local(uint8_t,
MR_PIN_LOW_LEVEL),
sizeof(uint8_t));
mr_delay_ms(500);
}
}HelloWorld#include
"include/mr_lib.h"
int
main(void)
{
/*
自動初始化
*/
mr_auto_init();
/*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 港口碼頭建設安全施工方案及措施
- 汽車制造項目經(jīng)理部各崗位職責他
- JL1901年度供應鏈管理內(nèi)部審核計劃
- 熱力管網(wǎng)施工安全文明施工措施
- 三年級上冊地方課程教學計劃推進他
- 2025年度幼兒園團支部團隊建設計劃
- 物流運輸警示教育懺悔錄心得體會
- 護理質(zhì)量安全事件調(diào)查職責
- 教師信息技術教學方法創(chuàng)新計劃
- 期貨模擬交易心得體會及技術應用
- 2025年 珠海市市直專職人民調(diào)解員招聘筆試考試試卷附答案
- 2025年 物業(yè)管理師三級考試練習試題附答案
- 肺動脈高壓講課件
- 2024年滁州市機電工程學校招聘筆試真題
- 2025至2030中國大蔥產(chǎn)品行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資報告
- 絲織品微生物防治-洞察及研究
- 2025江蘇農(nóng)牧科技職業(yè)學院工作人員招聘考試真題
- 2025至2030年中國生產(chǎn)工業(yè)控制類軟件行業(yè)市場運行格局及戰(zhàn)略咨詢研究報告
- 九師聯(lián)盟2024-2025學年高二下學期6月摸底聯(lián)考語文試題(含答案)
- 公司設備設施管理制度
- 2025年保安人員職業(yè)資格考試試題及答案
評論
0/150
提交評論