色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

北京迅為電子 ? 2024-02-20 14:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內(nèi)置獨立NPU,可用于輕量級人工智能應(yīng)用。RK3568 支持安卓 11 和 linux 系統(tǒng),主要面向物聯(lián)網(wǎng)網(wǎng)關(guān)、NVR 存儲、工控平板、工業(yè)檢測、工控盒、卡拉 OK、云終端、車載中控等行業(yè)。

迅為RK3568開發(fā)板:

wKgZomXUQe2AHEs6AAFHcI66r1k035.png

?

進(jìn)階5 自定義實現(xiàn)insmod命令實驗

5.1 實驗程序的編寫

在本章節(jié)將會實現(xiàn)第二種方法實現(xiàn)insmod命令。

5.1.1 驅(qū)動程序編寫

本實驗對應(yīng)的網(wǎng)盤路徑為:iTOP-RK3568開發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開發(fā)板】指南教程\02_Linux驅(qū)動配套資料\04_Linux驅(qū)動例程\52_module02\01_module。

編寫完成的helloworld.c代碼如下所示。

#include

#include

static int __init helloworld_init(void) //驅(qū)動入口函數(shù)

{

dump_stack();

return 0;

}

static void __exit helloworld_exit(void) //驅(qū)動出口函數(shù)

{

printk(KERN_EMERG "helloworld_exit\r\n");

}

module_init(helloworld_init); //注冊入口函數(shù)

module_exit(helloworld_exit); //注冊出口函數(shù)

MODULE_LICENSE("GPL v2"); //同意 GPL 開源協(xié)議

MODULE_AUTHOR("topeet"); //作者信息

該驅(qū)動程序就是最簡單的helloworld驅(qū)動程序,只是在第6行添加了dump_stack()函數(shù),用來在內(nèi)核中輸出當(dāng)前調(diào)用堆棧信息,在這里使用該函數(shù)的目的是驗證在app中的init_module系統(tǒng)調(diào)用是否生效。

5.1.2 編寫測試 APP

本應(yīng)用程序?qū)?yīng)的網(wǎng)盤路徑為:iTOP-RK3568開發(fā)板【底板V1.7版本】\03_【iTOP-RK3568開發(fā)板】指南教程\02_Linux驅(qū)動配套資料\04_Linux驅(qū)動例程\52_module02\02_app。

編寫完成的應(yīng)用程序app.c代碼如下所示:

#include

#include

#include

#include

#include

#include

#include

#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)

int main(int argc, char **argv)

{

int fd; // 文件描述符

int ret; // 返回值

struct stat statbuf; // 存儲文件信息的結(jié)構(gòu)體

size_t image_size; // 文件大小

char *image; // 文件內(nèi)容緩沖區(qū)

fd = open(argv[1], O_RDONLY | __O_CLOEXEC); // 以只讀方式打開文件

if (fd < 0)

{

printf("open error \n"); // 打開文件失敗

return -1;

}

fstat(fd, &statbuf); // 獲取文件信息

image_size = statbuf.st_size; // 獲取文件大小

image = malloc(image_size); // 為文件內(nèi)容分配內(nèi)存空間

read(fd, image, image_size); // 讀取文件內(nèi)容到緩沖區(qū)

ret = init_module(image, image_size, ""); // 調(diào)用系統(tǒng)調(diào)用初始化內(nèi)核模塊

if (ret < 0)

{

printf("error \n"); // 內(nèi)核模塊初始化失敗

}

else

{

printf("ok \n"); // 內(nèi)核模塊初始化成功

}

free(image); // 釋放內(nèi)存空間

return ret; // 返回結(jié)果

}

該應(yīng)用程序的重點在30行,使用init_module系統(tǒng)調(diào)用加載模塊到內(nèi)核。

5.2運行測試

5.2.1 編譯驅(qū)動程序

在上一小節(jié)中的helloworld.c代碼同一目錄下創(chuàng)建 Makefile 文件,Makefile 文件內(nèi)容如下所示:

export ARCH=arm64#設(shè)置平臺架構(gòu)

export CROSS_COMPILE=aarch64-linux-gnu-#交叉編譯器前綴

obj-m += helloworld.o #此處要和你的驅(qū)動源文件同名

KDIR :=/home/topeet/Linux/linux_sdk/kernel #這里是你的內(nèi)核目錄

PWD ?= $(shell pwd)

all:

make -C $(KDIR) M=$(PWD) modules #make操作

clean:

make -C $(KDIR) M=$(PWD) clean #make clean操作

對于Makefile的內(nèi)容注釋已在上圖添加,保存退出之后,來到存放helloworld.c和Makefile文件目錄下,如下圖(圖5-1)所示:

wKgZomXUQfuARt71AACYCaDbMd0958.png

然后使用命令“make”進(jìn)行驅(qū)動的編譯,編譯完成:

編譯完生成platform_led.ko目標(biāo)文件:

wKgZomXUQg-ADe7sAACyJt9ZejA322.png

至此驅(qū)動模塊就編譯成功了。

5.2.2 編譯應(yīng)用程序

下面進(jìn)行應(yīng)用程序編譯,因為測試APP是要在開發(fā)板上運行的,所以需要aarch64-linux-gnu-gcc來編譯,輸入以下命令,編譯完成以后會生成一個app的可執(zhí)行程序,如下圖(圖141-4)所示:

aarch64-linux-gnu-gcc myinsmod.c

下面進(jìn)行驅(qū)動程序的測試。

5.2.3運行測試

本次測試要使用上面編譯的helloworld.ko驅(qū)動文件和a.out可執(zhí)行文件,所以需要先將兩個要用到的文件拷貝到開發(fā)板上。

開發(fā)板啟動之后,使用以下命令加載helloworld.ko驅(qū)動,如下圖所示:

./a.out helloworld.ko

dump_stack函數(shù)會打印調(diào)用的一系列函數(shù),這些函數(shù)的具體調(diào)用已經(jīng)在進(jìn)階第一章講解過了,這里的重點為紅色框中的倒數(shù)第二行,調(diào)用了init_module函數(shù)加載了helloworld驅(qū)動。

然后繼續(xù)使用以下命令查看驅(qū)動的加載情況,打印如下圖(141-6)所示:

lsmod

可以看到helloworld驅(qū)動成功加載上了,最后可以使用以下命令進(jìn)行驅(qū)動的卸載,

rmmod

wKgZomXUQheAEDEIAAAc4QBhlQw571.png

至此,內(nèi)核是如何運行KO文件的_insmod實驗就完成了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19890

    瀏覽量

    235098
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    52492

    瀏覽量

    440639
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1916

    瀏覽量

    86910
  • RK3568
    +關(guān)注

    關(guān)注

    5

    文章

    584

    瀏覽量

    6401
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

    RK3568驅(qū)動指南|第十二 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法
    的頭像 發(fā)表于 06-03 11:32 ?522次閱讀
    <b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>|第十二<b class='flag-5'>篇</b> GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法

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

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?451次閱讀
    迅為<b class='flag-5'>RK3568</b>開發(fā)板<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

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

    迅為電子RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng) GPIO操作函數(shù)實驗
    的頭像 發(fā)表于 05-28 15:24 ?405次閱讀
    迅為<b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>GPIO子系統(tǒng) GPIO操作函數(shù)<b class='flag-5'>實驗</b>

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗
    的頭像 發(fā)表于 05-26 15:39 ?818次閱讀
    迅為<b class='flag-5'>RK3568</b>開發(fā)板<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>GPIO子系統(tǒng)三級節(jié)點操作函數(shù)<b class='flag-5'>實驗</b>

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

    RK3568驅(qū)動指南|第十二 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實驗
    的頭像 發(fā)表于 05-23 13:47 ?359次閱讀
    <b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>|第十二<b class='flag-5'>篇</b> GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合<b class='flag-5'>實驗</b>

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

    迅為RK3568驅(qū)動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復(fù)用功能
    的頭像 發(fā)表于 05-22 14:27 ?860次閱讀
    迅為<b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>GPIO子系統(tǒng)實戰(zhàn):<b class='flag-5'>實現(xiàn)</b>動態(tài)切換引腳復(fù)用功能

    迅為RK3568開發(fā)板實操-HDF驅(qū)動配置UART-修改HCS配置

    、deviceMatchAttr = \"rockchip_rk3568_uart_7\"; 16、} 17、device5 :: deviceNode { 18、policy = 2; 19
    發(fā)表于 05-22 11:32

    RK3568驅(qū)動指南驅(qū)動基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個系統(tǒng)調(diào)用

    RK3568驅(qū)動指南驅(qū)動基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個系統(tǒng)調(diào)用
    的頭像 發(fā)表于 05-21 14:15 ?281次閱讀
    <b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>|<b class='flag-5'>驅(qū)動</b>基礎(chǔ)<b class='flag-5'>進(jìn)階篇</b>-<b class='flag-5'>進(jìn)階</b>7 向系統(tǒng)中添加一個系統(tǒng)調(diào)用

    itop-3568開發(fā)板驅(qū)動開發(fā)指南-實驗程序的編寫

    實驗對應(yīng)的網(wǎng)盤路徑為:iTOP-RK3568 開發(fā)板【底板 V1.7 版本】\\\\03_【iTOP-RK3568開發(fā)板】指南教程\\\\02_Linux
    發(fā)表于 05-19 10:26

    RK3568驅(qū)動指南|第三-并發(fā)與競爭-第19章 并發(fā)與競爭實驗

    RK3568驅(qū)動指南|第三-并發(fā)與競爭-第19章 并發(fā)與競爭實驗
    的頭像 發(fā)表于 02-24 16:26 ?573次閱讀
    <b class='flag-5'>RK3568</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>|第三<b class='flag-5'>篇</b>-并發(fā)與競爭-第19章 并發(fā)與競爭<b class='flag-5'>實驗</b>

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

    迅為RK3568開發(fā)板驅(qū)動指南Linux中通用SPI設(shè)備驅(qū)動
    的頭像 發(fā)表于 01-23 11:02 ?2822次閱讀
    迅為<b class='flag-5'>RK3568</b>開發(fā)板<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>Linux中通用SPI設(shè)備<b class='flag-5'>驅(qū)動</b>

    迅為RK3568開發(fā)板SPI驅(qū)動指南-mcp2515驅(qū)動編寫:讀寄存器函數(shù)

    迅為RK3568開發(fā)板SPI驅(qū)動指南-mcp2515驅(qū)動編寫:讀寄存器函數(shù)
    的頭像 發(fā)表于 01-20 14:43 ?1048次閱讀
    迅為<b class='flag-5'>RK3568</b>開發(fā)板SPI<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>-mcp2515<b class='flag-5'>驅(qū)動</b>編寫:讀寄存器函數(shù)

    瑞芯微RK3568 USB驅(qū)動

    瑞芯微RK3568 USB驅(qū)動程序
    發(fā)表于 11-11 14:18 ?11次下載

    迅為iTOP-RK3568開發(fā)板驅(qū)動開發(fā)指南-第十八 PWM

    自定義實現(xiàn)insmod命令實驗 進(jìn)階6 內(nèi)核運行ko文件
    發(fā)表于 10-29 10:13

    文檔更新 | 迅為RK3568驅(qū)動指南-第十七篇(串口)

    進(jìn)階1 編譯進(jìn)內(nèi)核的驅(qū)動系統(tǒng)是如何運行的? 進(jìn)階2 讓驅(qū)動快一點被加載實驗 進(jìn)階3
    發(fā)表于 09-24 10:42
    主站蜘蛛池模板: 亚欧洲乱码视频一二三区 | 2021乱码精品公司 | 美女隐私黄www视频 美女议员被泄裸照 | 精品久久久爽爽久久久AV | 99国产精品综合AV无码 | 欧美大片免费 | 国产在线精品视频二区 | 亚洲一级毛片免费在线观看 | 亚洲AV午夜福利精品香蕉麻豆 | asian极品呦女xx农村 | 国产免费麻传媒精品国产AV | 调教玩弄奶头乳夹开乳震动器 | 手机在线成人精品视频网 | 伊人22222| 成人国产精品视频频 | 久久精品国产亚洲AV天美18 | 国产乱码一区二区三区 | 欧美一级黄色影院 | 护士日本ⅹxxx丰满hd | 国产精品色无码AV在线观看 | 芳草地在线观看免费观看 | 日本高清不卡一区久久精品 | 欧美人与动牲交A精品 | 美女被免费喷白浆视频 | 晓雪老师我要进你里面好爽 | 免费观看成人毛片 | 国产免费看片 | 中文字幕亚洲欧美日韩2019 | 香蕉鱼视频观看在线视频下载 | 帅哥男男GV在线1080P | 爆乳啪啪无码成人二区亚洲欧美 | 欧美囗交xx bbb视频 | 久久国产乱子伦精品免费M 久久国产露脸老熟女熟69 | 又长又大又粗又硬3p免费视频 | 视频一区视频二区在线观看 | 火影忍者高清无码黄漫 | 亚洲欧美自拍清纯中文字幕 | 日韩高清一区二区三区不卡 | 国产性色AV内射白浆肛交后入 | 日韩欧无码一区二区三区免费不卡 | 狠狠色丁香婷婷久久综合 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品