日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

mini2440:最简单的嵌入式linux驱动程序模块,mini2440:最简单的嵌入式Linux驱动程序模块 解决找不到mini2440……sample...

發(fā)布時(shí)間:2023/12/4 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mini2440:最简单的嵌入式linux驱动程序模块,mini2440:最简单的嵌入式Linux驱动程序模块 解决找不到mini2440……sample... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文:http://myswirl.blog.163.com/blog/static/5131864220109143331356/

注意:開發(fā)Arm平臺(tái)的驅(qū)動(dòng),需要Arm平臺(tái)的源碼樹;

注意:ARM平臺(tái)的linux內(nèi)核源碼需要先編譯,否則無法編譯驅(qū)動(dòng);第一種方式:編譯進(jìn)內(nèi)核,共6步

第1步:建立源碼樹

解壓安裝Linux 內(nèi)核源代碼在工作目錄/opt/FriendlyARM/mini2440 中執(zhí)行:

#cd /opt/FriendlyARM/mini2440

#tar xvzf /tmp/linux/linux-2.6.32.2-mini2440-20100106.tar.gz

將創(chuàng)建生成linux-2.6.32.2 目錄,里面包含了完整的Linux-2.6.32.2 內(nèi)核源代碼說明:20100106 是我們的發(fā)行更新日期標(biāo)志,請(qǐng)以光盤中實(shí)際日期尾綴為準(zhǔn)。

第2步:編輯驅(qū)動(dòng)源文件

mini2440_hello_module.c

該文件所在目錄:/opt/FriendlyARM/mini2440/linux-2.6.32.2/drivers/char/

*********************************************************************************************

#include

#include

static int __init mini2440_hello_module_init(void)

{

printk("Hello, Mini2440 module is installed !\n");

return 0;

}

static void __exit mini2440_hello_module_cleanup(void)

{

printk("Good-bye, Mini2440 module was removed!\n");

}

module_init(mini2440_hello_module_init);

module_exit(mini2440_hello_module_cleanup);

MODULE_LICENSE("GPL");

*********************************************************************************************

第3步:編輯配置文件linux-2.6.32.2/drivers/char/Kconfig

增加如下字段,如圖所示:

保存退出,這時(shí)在

linux-2.6.32.2

目錄“/opt/FriendlyARM/mini2440/linux-2.6.32.2"位置運(yùn)行一下

#cp config_mini2440_t35 .config???? ;t35后面有個(gè)空格,然后有個(gè)“.”開頭的config

#make menuconfig

就可以在Device Drivers---> Character devices 菜單中看到剛才所添加的選項(xiàng)了,按下空格鍵將會(huì)選擇為,此意為要把該選項(xiàng)編譯為模塊方式;再按下空格會(huì)變?yōu)?#xff0c;意為要把該選項(xiàng)編譯到內(nèi)核中,在此我們選擇,如圖:

第4步:編輯linux-2.6.32.2/drivers/char/Makefile 通過上一步,我們雖然可以在配置內(nèi)核的時(shí)候進(jìn)行選擇,但實(shí)際上此時(shí)執(zhí)行編譯內(nèi)核還是不能把mini2440_hello_module.c 編譯進(jìn)去的,還需要在Makefile 中把內(nèi)核配置選項(xiàng)和真正的源代碼聯(lián)系起來,打開 linux-2.6.32.2/drivers/char/Makefile,如圖添加并保存退出:

第5步:編譯驅(qū)動(dòng)模塊

這時(shí)回到linux-2.6.32.2 源代碼根目錄位置

/opt/FriendlyARM/mini2440/linux-2.6.32.2

#make modules

就可以生成我們所需要的內(nèi)核模塊文件mini2440_hello_module.ko 了,如圖:

至此,我們已經(jīng)完成了模塊驅(qū)動(dòng)的編譯。

第6步:加載驅(qū)動(dòng)模塊

將把編譯出的mini2440_hello_module.ko下載到板子中,并把它移動(dòng)到/lib/modules/2.6.29.4-FriendlyARM目錄,然后在板子中現(xiàn)在執(zhí)行

#modprobe mini2440_hello_module

可以看到該模塊已經(jīng)被裝載了(注意:使用modprobe 命令加載模塊不需要加“ko”尾綴),再執(zhí)行以下命令,可以看到該模塊被卸載

#rmmod mini2440_hello_module

注意:要能夠正常卸載模塊,必須把模塊放入開發(fā)板的/lib/modules/2.6.29.4-FriendlyARM 目錄

注意:內(nèi)核有時(shí)會(huì)升級(jí)更新,如果內(nèi)核版本已經(jīng)改變,請(qǐng)依照具體的內(nèi)核版本重新建立一個(gè)模塊存放目錄,在此為/lib/modules/2.6.29.4-FriendlyARM。

第二種方式:動(dòng)態(tài)加載

內(nèi)核驅(qū)動(dòng)模塊的結(jié)構(gòu)hello.c

#include#includestaticinthello_init(void){printk(KERN_ALERT"Hello, World!\n");return0;}staticvoidhello_exit(void){printk(KERN_ALERT"Goodbye, cruel world!\n");}module_init(hello_init);module_exit(hello_exit);

MODULE_LICENSE("Dual BSD/GPL");

源文件hello.c同目錄下一個(gè)簡單的Makefile文件:

KERNELDIR=/opt/FriendlyARM/mini2440/linux-2.6.32.2

PWD:=$(shell pwd)

INSTALLDIR =/lib/modules/2.6.29.4-FriendlyARM

CROSS_COMPILE=arm-linux-

CC=$(CROSS_COMPILE)gcc

obj-m:=hello.o

.PHONY:modules modules_install clean

modules:

$(MAKE)-C$(KERNELDIR)M=$(PWD)modules

modules_install:

cp hello.ko $(INSTALLDIR)

clean:

rm-rf*.o*~core.depend.*.cmd*.ko*.mod.c.tmp_versions

總結(jié)

以上是生活随笔為你收集整理的mini2440:最简单的嵌入式linux驱动程序模块,mini2440:最简单的嵌入式Linux驱动程序模块 解决找不到mini2440……sample...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。