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

進階7向系統中添加一個系統調用
在上個章節中我們學習了系統調用的概念,本章節我們以實踐的形式向系統中添加一個系統調用。
7.1內核添加自定義服務
我們在基礎篇-第8章 將驅動編譯進內核實驗的基礎上進行本章節的實驗。我們修改helloworld.c驅動,如下所示,并確保helloworld驅動編譯進了內核源碼中。

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

最后,重新編譯內核源碼,燒寫內核鏡像。
7.3系統調用測試
本應用程序對應的網盤路徑為:iTOP-RK3568開發板【底板V1.7版本】\03_【iTOP-RK3568開發板】指南教程\02_Linux驅動配套資料\04_Linux驅動例程\53_SYSCALL。
編寫完成的應用程序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
下面進行應用程序編譯,因為測試APP是要在開發板上運行的,所以需要aarch64-linux-gnu-gcc來編譯,輸入以下命令,編譯完成以后會生成一個app的可執行程序,如下圖(圖143-2)所示:
aarch64-linux-gnu-gcc syscall.c -o syscall

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

如上圖所示,在運行應用程序之后,打印“This is helloworld syscall” 成功調用自定義的系統調用,至此,向系統中添加一個系統調用實驗結束。
-
驅動
+關注
關注
12文章
1885瀏覽量
86455 -
soc
+關注
關注
38文章
4316瀏覽量
221456 -
RK3568
+關注
關注
5文章
568瀏覽量
6005
發布評論請先 登錄
RT-Thread驅動開發指南進階篇-動手驅動先楫未適配的外設LCD

評論