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

文化馆的网站怎么建设网站功能及报价

文化馆的网站怎么建设,网站功能及报价,网站栏目列表,郑州做网站网络公司1 字符设备驱动框架 1.1字符设备 定义#xff1a;只能以一个字节一个字节的方式读写的设备#xff0c;不能随机的读取设备中中的某一段数据#xff0c;读取数据需要按照先后顺序。#xff08;字符设备是面向字节流的#xff09; 常见的字…1 字符设备驱动框架         1.1字符设备             定义只能以一个字节一个字节的方式读写的设备不能随机的读取设备中中的某一段数据读取数据需要按照先后顺序。字符设备是面向字节流的             常见的字符设备鼠标 键盘 串口 控制台              块设备可以从设备的任意位置读取一定长度数据的设备。             常见的块设备硬盘 磁盘 光盘 U盘 SD卡 tf卡。。         1.2字符设备驱动框架             init流程--》HelloModule                 {                     1 申请设备号静态申请 动态申请                     2 创建一个字符设备                     3 初始化字符设备                     4 将设备号和字符设备关联起来                 }             exit流程--》HelloExit                 {                     1 删除字符设备                     2 删除设备号                    }                  买车             1 申请车牌号静态申请 动态申请 陕U.88888             2 买车             3 将车牌号和车关联起来         卖车             1 卖车             2 注销车牌号                  1.2.1设备号             定义设备号是设备在内核中的身份和标识是内核区分不同设备的唯一信息设备号是由主设备号和次设备号构成主设备号表示一类设备次设备号表示该类设备中的某一个设备。             设备号是一个32bit的无符号整数高12bit是主设备号低20bit是次设备号。             《linux/kdev_t.h》             #define MINORBITS    20             #define MINORMASK    ((1U MINORBITS) - 1)             #define MAJOR(dev)    ((unsigned int) ((dev) MINORBITS))             #define MINOR(dev)    ((unsigned int) ((dev) MINORMASK))             #define MKDEV(ma,mi)    (((ma) MINORBITS) | (mi))         1.2.2申请设备号             申请设备号有两种方式静态申请 动态申请             静态申请设备号             int register_chrdev_region(dev_t from, unsigned count, const char *name)                     作用静态申请设备号                     from设备号由主次设备号构成                     count子设备个数                     *name设备名称                     返回值0 成功 非0 失败 void unregister_chrdev_region(dev_t from, unsigned count)                     作用从内核中移除设备号                     from设备号由主次设备号构成                     count子设备个数             动态申请设备号             int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,             const char *name)                 作用动态申请设备号                 *dev:指向设备号的指针                 baseminor子设备的第一个编号                 count子设备个数                 *name设备名称                 返回值0 成功 非0 失败         1.2.3创建字符设备             struct cdev *cdev_alloc(void)                 作用创建一块用于存放字符设备的空间                 返回值是指向创建成功的字符设备的指针                 在Linux内核中用struct cdev来描述一个字符设备         struct cdev {             struct kobject kobj;--》内嵌的内核对象             struct module *owner;--》该字符设备所在的内核模块的对象指针             const struct file_operations *ops;--》指向操作字符设备的方法集             struct list_head list;--》用来将已向内核注册的所有字符设备形成链表             dev_t dev;--》设备号由主设备号和次设备号构成             unsigned int count;--》隶属于同一个主设备号的次设备个数             };             void cdev_del(struct cdev *p)                 作用删除字符设备                 *p指向字符设备的指针         1.2.4初始化字符设备--》绑定驱动方法         void cdev_init(struct cdev *cdev, const struct file_operations *fops)                 作用初始化字符设备                 *cdev指向字符设备的指针                 *fops指向操作字符设备的函数集的指针         1.2.5将字符设备和设备号关联             int cdev_add(struct cdev *p, dev_t dev, unsigned count)             作用将字符设备和设备号关联并将字符设备添加到内核中             *p指向字符设备的指针             dev设备号             count子设备的个数             返回值成功为0   失败非0 测试步骤             1 sudo insmod hello.ko             2 dmesg |tail --250 0             3 cat /proc/devices--查看设备号   250 0             4 sudo mknod /dev/haha0 c 250 0             5 ls -l /dev/haha*---查看创建字符设备文件             6 sudo ./test--open hahao ok!             7 dmesg |tail--helloopen/helloClose             8 sudo rmmod hello.ko             9 sudo rm /dev/haha0 区分字符设备驱动框架中使用的三个结构体             struct file:代表内核中一个打开的文件。系统中每个打开的文件在内核中都有一个关联的struct file。             struct inode:用来记录文件在物理上的信息。它和打开文件struct file结构不同一个文件可以对应多个struct file但是只有一个struct inode.             struct file_operations:是内核给用户提供的驱动接口函数集用户可以定义函数集中的任何驱动方法。对于不支持的一般不写   字符设备文件--》250 0--字符设备(helloopen/helloclose)             mice-----------鼠标             sudo cat mice                       2 实现用户空间和内核空间的数据拷贝         用户代码对字符设备的任何操作最终都要落实到设备对应的底层操作函数上         内核空间--》用户空间     read--HelloRead         用户空间--》内核空间     write--》HelloWrite 应用层 fdopen(/dev/haha0)                    read(fd,)                     close(fd)        驱动层             增加HelloRead             ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);         char g_buf[]hellotest----;         ssize_t HelloRead(struct file *pFile,char __user *buf,size_t count,loff_t *p)             {                 copy_to_userbuf,g_buf,count;             } unsigned long copy_to_user(void __user *to, const void *from,                                          unsigned long n)                     作用从内核空间向用户空间拷贝数据                 *to用户空间指针                 *from内核空间指针数据源                 n拷贝的字节数 copy_from_user               测试步骤:             1 sudo insmod hello.ko             2 dmesg |tail             3 sudo mknod /dev/haha0 c 250 0             4 ls -l /dev/hah*             5 sudo ./test--查看是否读到数据             6 sudo rmmod hello             7 sudo rm /dev/haha0
http://www.dnsts.com.cn/news/4058.html

相关文章:

  • 什么网站可以做特价活动网站建站的标准
  • 网站设计技能培训网站搭建分站需要多少钱
  • 手机网站与pc网站的区别阿里云的云服务器做网站用哪种
  • 建网站的好处直播网站建设项目策划书
  • 举报企业网站用个人信息备案网站开发方向行业现状
  • 广州建设网站技术android 登录wordpress
  • 做网站的市场wordpress 关闭功能
  • 建设网站程序下载15个常见关键词
  • 外贸网站官网怎么做广安网站开发
  • 专门做牛肉的网站网站建设产品图
  • 中国网站建设市场排名安徽合肥做网站的公司有哪些
  • 上海做网站的价格软件开发工具属于哪种类型的软件
  • 门户网站的优点怎么注册个人工作室
  • 做推广的网站微信号域名可以绑定网站吗
  • 微信的企业网站模板wordpress文章新窗口
  • 大型网站技术架构:核心原理与案例分析怎么做淘宝网站教程
  • 公司网站的管理和维护强化网站建设
  • 电子商务网站建设分析论文企业微信开发者
  • 重庆网站推广怎么样wordpress漂浮插件
  • 网站头尾一样的怎么做最好南宁seo优化公司
  • 云南建投第七建设有限公司网站市场体系建设司在官方网站
  • 网站设计师工作室网络组建管理与维护
  • 做水产的都用什么网站网站集约化建设要求
  • 抽奖网站怎么做qq说说赞在线自助下单网站
  • asp跳转到别的网站wordpress设置阅读权限
  • 摄影网站建设方案上海市新闻发布会
  • 凡科网站为什么免费做网站制作手机网站工具
  • 一手房发帖网站怎样做如何做psd的模板下载网站
  • 青岛网站建设技术托管小企业网站模板
  • 公司网站建设方案设计昆山网站建设网站建设