瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE圖形處理器。RK3568支持4K解碼和1080P編碼,支持SATA/PCIE/USB3.0外圍接口。RK3568內(nèi)置獨(dú)立NPU,可用于輕量級(jí)人工智能應(yīng)用。RK3568支持安卓11和linux系統(tǒng),主要面向物聯(lián)網(wǎng)網(wǎng)關(guān)、NVR存儲(chǔ)、工控平板、工業(yè)檢測(cè)、工控盒、卡拉OK、云終端、車載中控等行業(yè)。
?
嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)(驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇_全新升級(jí))_基于RK3568
迅為RK3568開發(fā)板瑞芯微Linux安卓鴻蒙ARM核心板人工智能AI主板

進(jìn)階7向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用
在上個(gè)章節(jié)中我們學(xué)習(xí)了系統(tǒng)調(diào)用的概念,本章節(jié)我們以實(shí)踐的形式向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用。
7.1內(nèi)核添加自定義服務(wù)
我們?cè)诨A(chǔ)篇-第8章 將驅(qū)動(dòng)編譯進(jìn)內(nèi)核實(shí)驗(yàn)的基礎(chǔ)上進(jìn)行本章節(jié)的實(shí)驗(yàn)。我們修改helloworld.c驅(qū)動(dòng),如下所示,并確保helloworld驅(qū)動(dòng)編譯進(jìn)了內(nèi)核源碼中。

#include
#include
SYSCALL_DEFINE0(helloworld){
printk("This is helloworld syscall\n");
return 0;
}
AI寫代碼
Cpp
7.2添加系統(tǒng)調(diào)用號(hào)
然后在Linux源碼kernel/include/uapi/asm-generic/unistd.h文件中添加系統(tǒng)調(diào)用號(hào)。如下圖所示:

最后,重新編譯內(nèi)核源碼,燒寫內(nèi)核鏡像。
7.3系統(tǒng)調(diào)用測(cè)試
本應(yīng)用程序?qū)?yīng)的網(wǎng)盤路徑為:iTOP-RK3568開發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開發(fā)板】指南教程\02_Linux驅(qū)動(dòng)配套資料\04_Linux驅(qū)動(dòng)例程\53_SYSCALL。
編寫完成的應(yīng)用程序syscall.c代碼如下所示:

#include
#include
#include
#include
#include
#include
#include
#define __NR_helloworld 435
int main(int argc,char **argv){
syscall(__NR_helloworld);
return 0;
}
AI寫代碼
cpp
下面進(jìn)行應(yīng)用程序編譯,因?yàn)闇y(cè)試APP是要在開發(fā)板上運(yùn)行的,所以需要aarch64-linux-gnu-gcc來編譯,輸入以下命令,編譯完成以后會(huì)生成一個(gè)app的可執(zhí)行程序,如下圖(圖143-2)所示:
aarch64-linux-gnu-gcc syscall.c -o syscall

編譯好的內(nèi)核鏡像boot.img在iTOP-RK3568開發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開發(fā)板】指南教程\02_Linux驅(qū)動(dòng)配套資料\04_Linux驅(qū)動(dòng)例程\53_SYSCALL”目錄下。燒寫內(nèi)核鏡像,啟動(dòng)開發(fā)板。
然后將編譯好的syscall程序拷貝到開發(fā)板上,然后運(yùn)行程序,如下圖所示:

如上圖所示,在運(yùn)行應(yīng)用程序之后,打印“This is helloworld syscall” 成功調(diào)用自定義的系統(tǒng)調(diào)用,至此,向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用實(shí)驗(yàn)結(jié)束。
-
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1918瀏覽量
86955 -
soc
+關(guān)注
關(guān)注
38文章
4392瀏覽量
222839 -
RK3568
+關(guān)注
關(guān)注
5文章
585瀏覽量
6435
發(fā)布評(píng)論請(qǐng)先 登錄
RT-Thread驅(qū)動(dòng)開發(fā)指南進(jìn)階篇-動(dòng)手驅(qū)動(dòng)先楫未適配的外設(shè)LCD

迅為RK3568開發(fā)板驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)

迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能

文檔更新 | 迅為RK3568驅(qū)動(dòng)指南-第十七篇(串口)
迅為iTOP-RK3568開發(fā)板驅(qū)動(dòng)開發(fā)指南-第十八篇 PWM
iTOP-RK3568開發(fā)板驅(qū)動(dòng)指南第五篇-中斷
更新 | 持續(xù)開源 迅為RK3568驅(qū)動(dòng)指南第十一篇-pinctrl子系統(tǒng)
USB HID設(shè)備應(yīng)用(進(jìn)階篇)
RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階8 內(nèi)核運(yùn)行ko文件總結(jié)

RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)

RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)

迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)

迅為RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法

評(píng)論