深圳做网站的网络公,网站被k是什么表现,wordpress 七牛上传,重庆价格低建设网站公司【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 树莓派4b上面还支持驱动代码的编写#xff0c;这是我没有想到的。这里驱动#xff0c;更多的是一种框架的编写#xff0c;不一定是编写真正的驱…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 树莓派4b上面还支持驱动代码的编写这是我没有想到的。这里驱动更多的是一种框架的编写不一定是编写真正的驱动代码比如说reserve一块内存又或者是做一些防止程序被copy或者不同进程的通信这些都是可以的。不一定说是真正地去驱动某个硬件。大家可以根据自己的需求灵活去进行处理和选择就好了。 1、准备测试代码hello.c
#include linux/init.h
#include linux/sched.h
#include linux/module.hMODULE_LICENSE(GPL);
MODULE_AUTHOR(feixiaoxing);
MODULE_DESCRIPTION(This is just a hello module!\n);static int __init hello_init(void)
{printk(KERN_EMERG hello, init\n);return 0;
}static void __exit hello_exit(void)
{printk(KERN_EMERG hello, exit\n);
}module_init(hello_init);
module_exit(hello_exit); 2、准备编写Makefile 有了hello.c文件下面就可以编写Makefile内容如下所示
ifneq ($(KERNELRELEASE),)
obj-m : hello.oelse
PWD : $(shell pwd)
KVER : $(shell uname -r)
KDIR : /lib/modules/$(KVER)/build
all:$(MAKE) -C $(KDIR) M$(PWD) modules
clean:rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif 3、编译和加载 有了hello.c以及makefile下面直接输入make就可以。不出意外的话我们会看到一个hello.ko文件生成。利用sudo insmod hello.ko我们就可以在sudo dmesg 看到相关的内容
[ 8693.530556] hello, init4、删除驱动 删除驱动和加载驱动不一样不需要ko这个后缀直接输入sudo rmmod hello就可以了。同样我们也可以在dmesg看到对应的打印
[ 8771.999743] hello, exit5、一个利用驱动的实际案例 刚才我们说过可以通过编写驱动的格式不让自己的app程序在客户的其他开发板运行起来。其中一个方法就是检测当前的设备有没有对应的自定义节点或者是自定义数据这一点可以通过编写驱动代码来完成。这样程序被转移到非当前kernel、当前compiler的板子上是运行不起来的。 当然如果客户想自己买树莓派4b来窃取程序这一点就要通过其他的方法来解决了比如说在上位机和嵌入式设备之间做一个激活绑定等等。