版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
現(xiàn)在嵌入式設(shè)計的要求,比以前要求更高了,這個時候還是建議大家要掌握一套或多套軟件框架,以便隨時派上用場。今天就來分享一個開源的輕量級的嵌入式設(shè)計框架:mr-library.mr-library簡介MR
框架是專為嵌入式系統(tǒng)設(shè)計的輕量級框架。充分考慮了嵌入式系統(tǒng)在資源和性能方面的需求。通過提供標(biāo)準(zhǔn)化的設(shè)備管理接口,極大簡化了嵌入式應(yīng)用開發(fā)的難度,幫助開發(fā)者快速構(gòu)建嵌入式應(yīng)用程序??蚣転殚_發(fā)者提供了標(biāo)準(zhǔn)化的開啟(open)、關(guān)閉(close)、控制(ioctl)、讀(read)、寫(write)等接口。它將應(yīng)用程序與底層硬件驅(qū)動進(jìn)行解耦。應(yīng)用程序無需了解驅(qū)動的實現(xiàn)細(xì)節(jié)。當(dāng)硬件發(fā)生改變時,只需要適配底層驅(qū)動,應(yīng)用程序就可以無縫遷移到新硬件上。這大大提高了軟件的可重用性和應(yīng)對新硬件的可擴(kuò)展性。項目結(jié)構(gòu)圖關(guān)鍵特性標(biāo)準(zhǔn)化的設(shè)備訪問接口應(yīng)用程序和驅(qū)動開發(fā)解耦簡化底層驅(qū)動和應(yīng)用程序開發(fā)輕量易上手,資源占用低模塊化設(shè)計,各部分解耦合并獨立開發(fā),極低的硬件遷移成本支持在裸機(jī)環(huán)境和操作系統(tǒng)環(huán)境下使用主要組成設(shè)備框架:提供設(shè)備訪問標(biāo)準(zhǔn)接口內(nèi)存管理:動態(tài)內(nèi)存管理工具:鏈表、隊列、平衡樹等常用數(shù)據(jù)結(jié)構(gòu)各類功能組件標(biāo)準(zhǔn)化設(shè)備接口設(shè)備的所有操作都可通過以下接口實現(xiàn):接口描述mr_dev_register注冊設(shè)備mr_dev_open打開設(shè)備mr_dev_close關(guān)閉設(shè)備mr_dev_ioctl控制設(shè)備mr_dev_read從設(shè)備讀取數(shù)據(jù)mr_dev_write向設(shè)備寫入數(shù)據(jù)示例:struct
mr_spi_dev
spi_dev;
int
main(void)
{
/*
注冊SPI10設(shè)備(CS低電平有效)到SPI1總線上
*/
mr_spi_dev_register(&spi_dev,
"spi1/spi10",
0,
MR_SPI_CS_ACTIVE_LOW);
/*
打開SPI1總線下的SPI10設(shè)備
*/
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));
/*
關(guān)閉設(shè)備
*/
mr_dev_close(ds);
}配置工具M(jìn)R
提供
Kconfig
可視化配置工具,開發(fā)者無需深入了解源代碼即可進(jìn)行配置。Kconfig
會根據(jù)配置文件自動生成配置選項界面。開發(fā)者可以通過簡單的操作來選擇需要啟用的功能組件和設(shè)置相關(guān)參數(shù)。配置工具配置工具1通過修改參數(shù),快速裁剪所需功能。配置完成后通過
Python
腳本自動生成配置文件。目錄結(jié)構(gòu)名稱描述bsp板級支持包components組件device設(shè)備文件document文檔driver驅(qū)動文件include庫頭文件source庫源文件Kconfig配置文件kconfig.py自動配置腳本LICENSE許可證開始使用配置
Kconfig
環(huán)境注:Kconfig
并非必須的,但是推薦使用(安裝和配置非常快捷,后續(xù)教程也是以應(yīng)用
Kconfig
為例)。驗證系統(tǒng)是否安裝Python環(huán)境。在命令行中運行
python--version
檢查Python版本(Kconfig
依賴于
python,若無
python環(huán)境請自行安裝)。在命令行中使用所示命令安裝
Kconfigpython-mpipinstallwindows-curses
python-mpipinstallkconfiglib在命令行中運行
menuconfig-h
驗證安裝是否成功。將框架導(dǎo)入工程1.從
Gitee
或
Github
倉庫下載最新版本源碼到本地。將源碼導(dǎo)入到您工程所在的目錄。以STM32工程為例:工程目錄如使用的芯片已經(jīng)做了
BSP
適配請參考芯片對應(yīng)
BSP
中的配置教程,完成
BSP
配置。移除不需要的文件
bsp、document、module
目錄(如不需要GIT也可以移除.git文件刪除)。完成后,目錄結(jié)構(gòu)如下所示:工程目錄1將文件加入到IDE中(大部分IDE都能自動識別工程路徑下的文件,無需進(jìn)行此步驟)。以
keil
為例:工程目錄Keil添加
source、device、driver
目錄下的所有文件。配置菜單選項在
mr-library
目錄下打開命令行工具,運行
menuconfig
進(jìn)行菜單配置。.工程目錄2注:當(dāng)添加對應(yīng)芯片驅(qū)動的后,將顯示
Deviceconfigure
和
Driverconfigure。對應(yīng)
Driverconfigure
請參考
BSP
下教程。選中
Deviceconfigure
回車進(jìn)入菜單,按照需要配置功能。工程目錄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設(shè)備
*/
int
ds
=
mr_dev_open("pin",
MR_OFLAG_RDWR);
/*
設(shè)置到LED引腳
*/
mr_dev_ioctl(ds,
MR_CTL_PIN_SET_NUMBER,
mr_make_local(int,
LED_PIN_NUMBER));
/*
設(shè)置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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年煙酒批發(fā)業(yè)務(wù)協(xié)議模板
- 2025年獸用生物制品項目提案報告模板
- 2025年汽車大燈項目規(guī)劃申請報告
- 2025年水電自動化項目提案報告模式
- 開學(xué)軍訓(xùn)心得體會15篇
- 入職的邀請函八篇
- 2021年度社團(tuán)活動個人總結(jié)【十二篇】
- 個人述職報告怎么寫【12篇】
- 昆蟲記讀書筆記6篇
- 活動計劃模板七篇
- 第六單元(整體教學(xué)課件)七年級語文上冊大單元教學(xué)名師備課系列(統(tǒng)編版2024)
- 漢語詞匯與文化智慧樹知到期末考試答案章節(jié)答案2024年浙江師范大學(xué)
- 100道湊十法練習(xí)習(xí)題(含答案)
- 加拿大礦業(yè)政策
- 歌曲簡譜國家成龍
- 客情關(guān)系的建立和維護(hù)
- 2022年合理使用抗生素試題
- Smith圓圖的Matlab實現(xiàn)及應(yīng)用
- 防止機(jī)組非計劃停運措施(鍋爐專業(yè))
- 如何同步同時接收老公老婆微信的實用教程
- 慕安德烈文集
評論
0/150
提交評論