openwrt驱动编写

openwrt驱动编写

2023年6月26日发(作者:)

openwrt驱动编写⼀个最简单的驱动包含⼆个⽂件mydrv.c 源码⽂件Makefiile 编译在KO⽂件如下mydrv.c c源码⽂件/**/#include #include #include #include #include /* guess what */#include #include #include #include #include #include #include #include /* For put_user and get_user */static struct class *mydrv_class;/**/static int mydrv_open(struct inode *inode, struct file *file){ return 0;}/**/static const struct file_operations mydrv_fops = { .owner = THIS_MODULE, .open = mydrv_open,};/*⼊⼝函数*/int major;static int __init mydrv_init(void){ printk("module_init--->mydrv_initn"); //1 if(major=register_chrdev(0, "mydrv", &mydrv_fops)) { printk("MYDRV driver: Unable to register drivern"); return 1; } //2 mydrv_class = class_create(THIS_MODULE, "mydrv"); //3 device_create(mydrv_class, NULL, MKDEV(major, 0), NULL, "mydrv"); //4 .初始化 return 0;}module_init(mydrv_init);/*出⼝函数*/static void __exit mydrv_exit(void){ printk("module_exit--->mydrv_exitn"); //1 device_destroy(mydrv_class, MKDEV(major, 0)); //2 class_destroy(mydrv_class); //3 unregister_chrdev(0, "mydrv");}module_exit(mydrv_exit);MODULE_LICENSE("GPL");

Makefile ⽂件KERN_DIR =/home/widora/openwrt_widora/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7688/linux-3.18.29TOOLCHAIN="/home/widora/openwrt_widora/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-uclibc-"all: make -C $(KERN_DIR) ARCH=mips CROSS_COMPILE=$(TOOLCHAIN) M=`pwd` modulesclean: rm -f *.ko rm -f *.o rm -f *.mod.c rm -f *.mod.o rm -f *.order rm -f *.sysversobj-m +=mydrv.o 在linux虚拟机上建⼀个⽬录mydrv,copy 这⼆个⽂件到该⽬录下,运⾏make ⽣成 copy 开发板的/tmp

然后 insmod 会在/sys/class ⾥⾯看到mydrv类 在/dev 看到mydrv设备

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687756722a40043.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信