【Linux】【驅動】驅動框架以及掛載驅動
- 緒論
- 1.配置開發環境
- 2. 編寫驅動文件
- 3. 編譯Makefile文件
- 4.編譯
- 5. 掛載驅動
- 注意:有些開發板打開了或者禁止了printk信息,導致你看到的實驗現象可能不一樣,
- 此時已經將文件移動到了開發板中,開發板查看文件
緒論
一個驅動可以編譯成驅動模塊然后掛載到驅動中去,也可以編譯到系統中去,下面演示第一種方法
1.配置開發環境
配置全局變量為ARM
export ARCH=arm
看是否配置成功
make menuconfig
如下圖表示已經修改成功了
配置gcc編譯環境
export CROSS_COMPILE=arm-linux-gnueabihf-
2. 編寫驅動文件
驅動文件名稱 chrdevbase.c
#include <linux/init.h>
#include <linux/module.h>//drivers for init
static int hello_init(void)
{printk("Hello init \n");return 0;
}//drivers for exit
static void hello_exit(void)
{printk("Hello exit \n");}module_init(hello_init);
module_exit(hello_exit);MODULE_LICENSE("GPL");
3. 編譯Makefile文件
KERNELDIR := /home/book/100ask_imx6ull_mini-sdk/Linux-4.9.88
CURRENT_PATH := $(shell pwd)
obj-m := chrdevbase.obuild: kernel_moduleskernel_modules:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
KERNELDIR :表示你Linux內核源碼的位置
obj-m := chrdevbase.o :表示你編譯的文件的名稱
4.編譯
make clean
清除編譯的代碼
make
//編譯代碼
5. 掛載驅動
掛載nfs網盤
mount -t nfs -o nolock,vers=3 192.168.5.18:/home/book/nfs_rootfs /mnt
進入目錄
cd /nfs
查看目錄
ls /mnt
將當前路徑下的chrdevbase.ko 文件移動到/home/book/nfs_rootfs/路徑
cp chrdevbase.ko /home/book/nfs_rootfs/
刪除文件
rm -f + chrdevbase.ko
注意:有些開發板打開了或者禁止了printk信息,導致你看到的實驗現象可能不一樣,
執行如下命令禁止內核打印printk信息:
echo "1 4 1 7"> /proc/sys/kernel/printk
執行如下命令使能內核打印printk信息:
echo "7 4 1 7"> /proc/sys/kernel/printk
此時已經將文件移動到了開發板中,開發板查看文件
加載驅動
insmod chrdevbase.ko
列出加載的驅動
lsmod
移除驅動
rmmod chrdevbase
執行后如圖所示