c 做网站后台,深圳10大品牌策划公司,大连建设学校,平面设计师必看的网站【Linux】【驱动】驱动框架以及挂载驱动 绪论1.配置开发环境2. 编写驱动文件3. 编译Makefile文件4.编译5. 挂载驱动注意:有些开发板打开了或者禁止了printk信息#xff0c;导致你看到的实验现象可能不一样#xff0c;此时已经将文件移动到了开发板中#xff0c;开发板查看文… 【Linux】【驱动】驱动框架以及挂载驱动 绪论1.配置开发环境2. 编写驱动文件3. 编译Makefile文件4.编译5. 挂载驱动注意:有些开发板打开了或者禁止了printk信息导致你看到的实验现象可能不一样此时已经将文件移动到了开发板中开发板查看文件 绪论
一个驱动可以编译成驱动模块然后挂载到驱动中去也可以编译到系统中去下面演示第一种方法
1.配置开发环境
配置全局变量为ARM
export ARCHarm看是否配置成功
make menuconfig如下图表示已经修改成功了 配置gcc编译环境
export CROSS_COMPILEarm-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) cleanKERNELDIR 表示你Linux内核源码的位置 obj-m : chrdevbase.o 表示你编译的文件的名称
4.编译
make clean 清除编译的代码
make//编译代码
5. 挂载驱动
挂载nfs网盘
mount -t nfs -o nolock,vers3 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执行后如图所示