飛凌嵌入式OK113i-S開發(fā)板上市一段時間以來收獲了很多關(guān)注,也成為了許多客戶項目選型的優(yōu)質(zhì)之選。在實際的項目開發(fā)中,工程師朋友們可能會需要在文件系統(tǒng)中移植一些工具或協(xié)議,那么該如何進(jìn)行移植操作呢?
我們可以通過添加package包配置的方式在OK113i-S開發(fā)板的Buildroot中移植新功能。本篇文章,小編就以在Buildroot移植MQTT協(xié)議為例為大家介紹。
Part 1、配置文件介紹
首先了解一下在Buildroot中移植功能時涉及到的配置文件。
查看飛凌嵌入式OK113i-S開發(fā)板源碼中已有的配置文件,可以看到在路徑?buildroot/buildroot-201902/package/mosquitto?里邊包括以下幾個文件:
Config.in
mosquitto.mk
mosquitto.hash
mosquitto.service
S50mosquitto
① Config.in
Config.in文件通過?BR2_PACKAGE_**?作為開關(guān)來告知Buildroot需要哪個包參與編譯,開關(guān)在?buildroot/buildroot-201902/configs/?下面的?OK113I_linux_defconfig?配置文件中賦值,類似于內(nèi)核中的Kconfig文件。
例如:
package/Config.in中寫了調(diào)用關(guān)系
source "package/mosquitto/Config.in";
package/mosquitto/Config.in中寫了
BR2_PACKAGE_MOSQUITTO信息。
② demo.mk
這個文件中聲明一些包的信息,比如:指定包的版本、包源碼下載鏈接、存放路徑、編譯規(guī)則、工具鏈等。編譯時會按照這個文件中的下載地址和版本下載源碼包到指定路徑并進(jìn)行編譯和文件拷貝,相當(dāng)于Makefile文件。
例如:mosquitto.mk
文件開頭先寫了軟件包版本和下載地址,我們在瀏覽器訪問該地址可以找到對應(yīng)版本的軟件包。編譯時,如果源碼中沒有該文件,就會自動下載。
mosguitto-1.5.8.tar.gz
mosguitto-1.5.8.tar.gz.asc
除此之外文件中還定義了其他的編譯規(guī)則,包括文件拷貝路徑等內(nèi)容。
③ demo.hash
這個文件會記錄下載的源碼包的hash校驗碼,防止下載的源碼包出錯。
④ demo.service
此文件是為systemd服務(wù)
,systemd開機(jī)后會依據(jù)此文件啟動demo服務(wù),在demo.mk中會指定此文件的源路徑已經(jīng)安裝路徑。目前OK113i-S開發(fā)板沒有使用該服務(wù),因此可以不用管它。
⑤ S50demo
此文件類是demo.service,是目前OK113i-S開發(fā)板在使用的開機(jī)服務(wù)類型。
在以上5種文件中Config.in和demo.mk是必須的,其他文件按需配置即可。具體配置內(nèi)容可參考已有文件或根據(jù)實際情況進(jìn)行書寫。Mosquitto已經(jīng)有寫好的配置文件,可以直接用,一般配置文件由項目的維護(hù)者或開發(fā)者提供,如果自己移植的文件沒有配置文件,可以參考已有配置文件寫一個。
Part 2、執(zhí)行
我們需要在buildroot/buildroot-201902中執(zhí)行
make
OK113I_linux_defconfig
然后執(zhí)行make
menuconfig ARCH=arm
在圖形配置界面進(jìn)行配置(如果執(zhí)行報錯,請先安裝該指令:sudo
apt-get update?和?sudo
apt-get install
ncurses)。
進(jìn)入圖形配置界面后輸入“/”搜索要配置的功能,如圖搜索Mosquitto看到的信息,按提示選“1”可進(jìn)入目標(biāo)選項,按“空格”選擇后保存并退出。
配置完成后,在當(dāng)前目錄下執(zhí)行 ./build.sh對文件系統(tǒng)進(jìn)行編譯,編譯完成后可查看文件系統(tǒng)中是否已經(jīng)有對應(yīng)文件。(注:如果沒有網(wǎng)絡(luò),則編譯時不能自動下載源碼包,需要到下載地址手動下載源碼包并放到源碼包存放路徑中。)
Part 3、MQTT的測試驗證
修改OK113i-S開發(fā)板的?/etc/mosquitto/mosquitto.conf?文件,在#user
mosquitto后加一行user
root,重啟服務(wù)或者開發(fā)板。也可以殺掉進(jìn)程并重新執(zhí)行:
/usr/sbin/mosquitto
-c /etc/mosquitto/mosquitto.conf
然后進(jìn)行測試——
訂閱test主題:
mosquitto_sub
-t test &
發(fā)布test主題:
mosquitto_pub
-t test -m "hello world"
能看到返回的?hello
world?字樣,就說明移植成功了。
以上就是在飛凌嵌入式OK113i-S開發(fā)板的Buildroot中移植MQTT協(xié)議的方法,供屏幕前的工程師小伙伴參考。如果您還有其他想要了解的內(nèi)容,歡迎在文末留言。點擊下圖進(jìn)入飛凌嵌入式官網(wǎng),即可查看OK113i-S開發(fā)板的更多產(chǎn)品詳情。