二、linux最小驱动
生活随笔
收集整理的這篇文章主要介紹了
二、linux最小驱动
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、最小驅動源碼
如下圖,最小驅動需要四部分,具體看下面源碼
?源碼mini_linux_module.c如下?:
#include <linux/init.h> // Linux源碼目錄下的include/linux/module.h #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); // 如果你不聲明GPL協(xié)議,你的模塊將無法在Linux 中使用的 MODULE_AUTHOR("JASON"); // 代碼作者static int hello_init(void) {printk(KERN_EMERG "HELLO WORLD enter!\n"); // 打印信息,KERN_EMERG表示緊急信息return 0; }static void hello_exit(void) {printk(KERN_EMERG "HELLO WORLD exit!\n");}module_init(hello_init); // 入口函數(shù) module_exit(hello_exit); // 出口函數(shù)二、驅動模塊的編譯
????????Linux的驅動可以和Linux源碼放在一起編譯,也可以單獨拿出來編譯。–為了理解整個Linux內核編譯過程,可以從學習Linux模塊的編譯入手。
????????單獨編譯驅動需要寫一個Makefile文件,編寫Makefile文件的最好方式是“依葫蘆畫瓢”。
Makefile文件:?
#!/bin/bash #通知編譯器我們要編譯模塊的哪些源碼 #這里是編譯itop4412_hello.c這個文件編譯成中間文件itop4412_hello.o obj-m += mini_linux_module.o #源碼目錄變量,這里用戶需要根據實際情況選擇路徑 #作者是將Linux的源碼拷貝到目錄/home/topeet/android4.0下并解壓的 KDIR := /home/topeet/android4.0/iTop4412_Kernel_3.0#當前目錄變量 PWD ?= $(shell pwd)#make命名默認尋找第一個目標 #make -C就是指調用執(zhí)行的路徑 #$(KDIR)Linux源碼目錄,作者這里指的是/home/topeet/android4.0/iTop4412_Kernel_3.0 #$(PWD)當前目錄變量 #modules要執(zhí)行的操作 all:make -C $(KDIR) M=$(PWD) modules#make clean執(zhí)行的操作是刪除后綴為o的文件 clean:rm -rf *.o注意:all和clean參數(shù)后面的必須添加Tab鍵,否則會報錯“*** missing separator.Stop ”
注意:在make?模塊前,請先編譯好/home/topeet/android4.0/iTop4412_Kernel_3.0目錄下內核源碼。如果編譯報錯,請先執(zhí)行如下:
root@ubuntu:/home/topeet/Android/iTop4412_Kernel_3.0# cp config_for_ubuntu_scp .configroot@ubuntu:/home/topeet/Android/iTop4412_Kernel_3.0# make zImage三、編譯流程分析
編譯會生成KO文件,KO就是驅動模塊。
四、?加載模塊和卸載模塊
1、insmod加載模塊命令
2、lsmod查看模塊命令
3、rmmod卸載模塊命令
總結
以上是生活随笔為你收集整理的二、linux最小驱动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一、linux驱动理论
- 下一篇: linux思考の为何要挂载