亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux 嵌入式驅動開發hello world的示例分析

發布時間:2021-10-22 10:30:50 來源:億速云 閱讀:169 作者:柒染 欄目:互聯網科技

Linux 嵌入式驅動開發hello world的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

1、代碼編寫,只有一個文件,內容如下

文件名為:mini2440_hello_module.c

#include <linux/kernel.h>
#include <linux/module.h>

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");

注解:

A、兩個頭文件是必須的,不要問為什么

B、mini2440_hello_module_init() 驅動加載函數,也是必須的

C、mini2440_hello_module_cleanup()驅動卸載函數,也是必須的

D、module_init(mini2440_hello_module_init) 你想讓你的驅動運行起來,就必須有這個

E、module_exit(mini2440_hello_module_cleanup) 和 module_init 的意義剛好相反

B、MODULE_LICENSE("GPL"); 用于聲明模塊的許可證

2、驅動安裝

驅動程序的安裝有兩種方式,第一種是模塊方式,第二種是直接編譯進內核

       這里我就講講如何修改相應的配置文件,增加內核的配置菜單選項吧。這里涉及到兩個文件一個是makefile和kconfig,makefile的作用就是編譯,具體的來說就是寫好一個程序你就必須寫好它的makefile文件。kconfig的作用就是使得寫好的驅動能增加到圖形配置菜單中,簡單來說,就是你想在內核配置菜單中看到你的內核選項,你就必須修改kconfig文件。

      ,下面我們就來講講如何修改makefile文件以及kconfig文件吧。假如我們寫好了一個驅動程序,然后呢放在了drivers/char目錄下,而且文件名為mini2440_hello_module.c。首先,我們先修改同目錄下的makefile文件吧,如何修改呢?很多時候一打開一看怎么密密麻麻的呢,其實沒關系的,你沒看到嗎?大部分的格式其實是一摸一樣的,這就簡單了,我們也依葫蘆畫瓢吧,我們加這一句: obj-$(CONFIG_MINI2440_HELLO)  += mini2440_hello_module.o

對于這個語句是什么意思,我也不想在這里說的太詳細了,最右邊那個是我們的驅動文件的文件名,至于右邊那個CONFIG是必須的,而那個MINI2440_HELLO呢,是我們等一下在Kconfig文件中要用到的。接著我們修改同目錄下的Kconfig文件,找到menu“Character devices”在這下面開始添加吧,添加的內容如下:

config MINI2440_HELLO
	tristate "MINI2440 BOARD HELLO TEST"
	depends on ARCH_S3C2440
	default m if ARCH_S3C2440
	help
	  MINI2440 Board First module test.

在這里我也簡單講解一下上面這幾條語句吧,最上面的config是必須的,這是它的格式這樣說吧。下面一句呢,是它在內核配置單上顯示的文字了,下面的那句是它的依賴,也就是說只有ARCH_S3C2440配置好了,我們才能配置這一驅動。最后的是它的幫助信息,以后你按照它的格式照著寫就好了。懂了吧! 

     接著就是照著之前講的如何編譯內核編譯一下內核了。輸入:make menuconfig,將剛剛的模塊選擇為M吧,然后編譯內核,把內核鏡像燒進開發板。最后使用命令make SUBDIR=drivers/char/

modules再編譯。得到mini2440_hello_module.ko這個就是我們要的驅動模塊了,我們把它加到開發板,加載的方式有很多種,我一般是用串口加進開發板的。在開發板的lib目錄下輸入rz即可下載了。  

  ok,假如你已經成功下載驅動模塊到開發板了,這時候你需要做的是加載驅動模塊了,為了形象生動點,我就截圖了吧:

注意:在執行make menuconfig,圖形化界面中

Device Drivers -->....Character devices -->

下可能不會出現

MINI2440 BOARD HELLO TEST

選項,

需要進行以下動作,則會出現此選項

 #make menuconfig命令進入內核配置界面,進入到“System Type”選項配置菜單,將S3C2440 Machines選項下做如下選擇:只選擇SMDK2440和SMDK2440 withS3C2440 CPU module兩個選項。

Linux 嵌入式驅動開發hello world的示例分析

Linux操作系統中模塊操作相關命令解釋
lsmod  查看已經安裝好的模塊, 也可以查看/proc/modules文件的內容. 實際上,lsmod讀命令就是通過查看/proc/modules的內容來顯示模塊信息的.
modinfo 顯示模塊信息
modprobe  不需要指定路徑,它會到默認路徑下尋找模塊。模塊也存在依賴性問題: 比如你要加載msdos.ko, 需要先加載fat.ko. modprobe查看/lib/module/version/modules.dep得知模塊的依賴關系
rmmod 卸載模塊,但是內核會認為卸載模塊不安全,可以添加命令強制卸載。
depmod 檢查系統中模塊之間的依賴關系,并把依賴關系信息存于/lib/modules/2.6.18-1.2798/modules.dep中。 一般加載模塊后,要命令行下先執行 depmod -a后,在系統加載模塊時候會查看modules.dep中模塊依賴及路徑信息,這樣子才可以成功加載需要模塊。
insmod 加載模塊,需要指定完整的路徑和模塊名字。

注:本人遇到的問題

模塊需要上傳到:

/lib/modules/2.6.32.2

下,rmmod命令才會起作用,【2.6.32.2】為linux kernel版本號

如圖

Linux 嵌入式驅動開發hello world的示例分析

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会宁县| 茶陵县| 贡嘎县| 长顺县| 阿拉善右旗| 大埔区| 稻城县| 芜湖市| 江安县| 吕梁市| 聊城市| 黔西| 逊克县| 竹山县| 尉犁县| 武乡县| 方城县| 云阳县| 平南县| 平利县| 泸水县| 白玉县| 三明市| 汪清县| 阿勒泰市| 宣汉县| 即墨市| 达拉特旗| 松原市| 华池县| 漳平市| 石家庄市| 康马县| 诸城市| 巴马| 苍山县| 高雄市| 铜陵市| 平乐县| 宁陕县| 盖州市|