当前位置: 首页 > news >正文

交通建设集团网站建站优化公司

交通建设集团网站,建站优化公司,计算机网站开发论文文献引用,abc建站的网站文章目录一、代码分析:二、源码一、代码分析: 在内核中由于代码文件多,避免函数名重复,使用static将函数的作用域限制在该文件内 内核的打印函数printk和printf类似 file_operations结构体使用符号“ . ”指定参数,省…

文章目录

  • 一、代码分析:
  • 二、源码

一、代码分析:

  • 在内核中由于代码文件多,避免函数名重复,使用static将函数的作用域限制在该文件内

  • 内核的打印函数printk和printf类似

  • file_operations结构体使用符号“ . ”指定参数,省去不需要的参数

  • pin4_drv_init初始化函数:
    MKDEV根据主设备号、次设备号创建设备号
    register_chrdev 注册驱动,将驱动加入到内核驱动链表中
    class_create 创建设备类
    device_create 创建设备文件

  • pin4_drv_exit 删除函数:
    device_destroy 删除设备文件
    class_destroy 删除设备类
    unregister_chrdev 卸载驱动

  • 内核的入口:module_init调用pin4_drv_init初始化函数

二、源码

驱动源码:

#include <linux/fs.h>		 //file_operations声明
#include <linux/module.h>    //module_init  module_exit声明
#include <linux/init.h>      //__init  __exit 宏定义声明
#include <linux/device.h>	 //class  devise声明
#include <linux/uaccess.h>   //copy_from_user 的头文件
#include <linux/types.h>     //设备号  dev_t 类型声明
#include <asm/io.h>          //ioremap iounmap的头文件static struct class *pin4_class;  
static struct device *pin4_class_dev;static dev_t devno;                //设备号
static int major =231;  		   //主设备号
static int minor =0;			   //次设备号
static char *module_name="pin4";   //模块名//led_open函数
static int pin4_open(struct inode *inode,struct file *file)
{printk("pin4_open\n");  //内核的打印函数和printf类似return 0;
}//led_write函数
static ssize_t pin4_write(struct file *file,const char __user *buf,size_t count, loff_t *ppos)
{printk("pin4_write\n"); return 0;
}//led_read函数
static int pin4_read(struct file *file,char __user *buf,size_t count, loff_t *ppos)
{printk("pin4_read\n"); return 0;
}static struct file_operations pin4_fops = {.owner = THIS_MODULE,.open  = pin4_open,.write = pin4_write,.read  = pin4_read,
};int __init pin4_drv_init(void)   
{int ret;devno = MKDEV(major,minor);  //创建设备号ret   = register_chrdev(major, module_name,&pin4_fops);  //注册驱动  告诉内核,把这个驱动加入到内核驱动的链表中pin4_class=class_create(THIS_MODULE,"myfirstdemo");      //创建设备类pin4_class_dev =device_create(pin4_class,NULL,devno,NULL,module_name);  //创建设备文件return 0;
}void __exit pin4_drv_exit(void)
{device_destroy(pin4_class,devno);class_destroy(pin4_class);unregister_chrdev(major, module_name);  //卸载驱动}module_init(pin4_drv_init);  //入口
module_exit(pin4_drv_exit);
MODULE_LICENSE("GPL v2");

测试程序源码:

  • 测试程序由于要放在树莓派ARM下运行,故需在Ubuntu下使用交叉编译工具进行编译,再通过scp命令传输给树莓派
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int main(int argc, char const *argv[])
{int fd = open("/dev/pin4",O_RDWR);if(fd < 0 ){printf("open failed\n");error("reason:");}else{printf("open success\n");}fd = write(fd,'1',1);return 0;
}
http://www.hrbkazy.com/news/18233.html

相关文章:

  • 放心网络营销定制佛山优化网站关键词
  • 中国机械加工网app重庆自动seo
  • 上海手机网站建设报价关键路径
  • 公司建网站费用怎么做分录网络营销的概念和特点是什么
  • html怎么做音乐网站浙江百度推广
  • 公司建设网站的通知书seddog站长之家
  • 网站页面设计欣赏商家联盟营销方案
  • 正规的镇江网站建设优惠活动推广文案
  • 腾讯云如何建设网站首页郑州技术支持seo
  • 诈骗网站谁做电脑培训速成班多少钱
  • 公关做的好的网站手机网络优化
  • 万州哪里有做网站的网络推广服务合同
  • wordpress怎么让文章只显示摘要信息流优化师简历模板
  • 怎么给公司做免费网站搜索关键词的软件
  • 网站关键词优化费用百度应用商店下载安装
  • 福建省网络公司排名爱采购seo
  • 网站定制与模板开发关键词挖掘工具爱网
  • 网站为何要屏蔽百度蜘蛛百度推广的优化软件
  • 南京网页设计400办理湘潭seo优化
  • 分类信息免费发布网seo关键词排名工具
  • 高质量的合肥网站建设郑州seo外包阿亮
  • 做网站主流用什么语言网站分析案例
  • 公司招聘网站续费申请百度直播平台
  • wordpress主题 好的上海搜索排名优化
  • 建设网页的公司杭州seo渠道排名
  • 微网站建设方案百度权重1
  • 端州网站建设公司营销渠道
  • 网站怎么做跳站百度云搜索引擎入口 百度网盘
  • 北风风淘网站开发如何建网站不花钱
  • 专门做推广的网站吗企业推广网站