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

建设网站火车票预订短视频拍摄

建设网站火车票预订,短视频拍摄,泰安网站建设工作室,给公司建立网站吗一、字符设备驱动开发 1.1 字符设备驱动简介 字符设备是 Linux 驱动中最基本的一类设备驱动#xff0c;字符设备就是一个一个字节#xff0c;按照字节流进行读写操作的设备#xff0c;读写数据是分先后顺序的。比如我们最常见的点灯、按键、IIC、SPI#xff0c;LCD 等等都…一、字符设备驱动开发 1.1 字符设备驱动简介 字符设备是 Linux 驱动中最基本的一类设备驱动字符设备就是一个一个字节按照字节流进行读写操作的设备读写数据是分先后顺序的。比如我们最常见的点灯、按键、IIC、SPILCD 等等都是字符设备这些设备的驱动就叫做字符设备驱动。 1.2 驱动模块加载和卸载 1、字符设备驱动模块加载和卸载函数模板 /* 驱动入口函数 */ static int __init xxx_init(void) {/* 入口函数具体内容 */return 0; }/* 驱动出口函数 */ static void __exit xxx_exit(void) {/* 出口函数具体内容 */ }/* 将上面两个函数指定为驱动的入口和出口函数 */ module_init(xxx_init); module_exit(xxx_exit);驱动编译完成以后扩展名为.ko有两种命令可以加载驱动模块insmod和 modprobe推荐使用modprobe此命令用于加载指定的.ko 模块比如加载 drv.ko 这个驱动模块命令如下 modprobe drv.ko驱动模块的卸载使用命令“rmmod”即可比如要卸载 drv.ko使用如下命令即可 rmmod drv.ko1.3 驱动模块注册与注销 字符设备的注册和注销函数原型如下所示: static inline int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops) static inline void unregister_chrdev(unsigned int major, const char *name) /* register_chrdev 函数用于注册字符设备此函数一共有三个参数这三个参数的含义如下 major主设备号Linux 下每个设备都有一个设备号设备号分为主设备号和次设备号两 部分关于设备号后面会详细讲解。 name设备名字指向一串字符串。 fops结构体 file_operations 类型指针指向设备的操作函数集合变量。 unregister_chrdev 函数用户注销字符设备此函数有两个参数这两个参数含义如下 major要注销的设备对应的主设备号。 name要注销的设备对应的设备名。 */一般字符设备的注册在驱动模块的入口函数 xxx_init 中进行字符设备的注销在驱动模块的出口函数 xxx_exit 中进行。内容如下所示 static struct file_operations test_fops;/* 驱动入口函数 */ static int __init xxx_init(void) {/* 入口函数具体内容 */int retvalue 0;/* 注册字符设备驱动 */retvalue register_chrdev(200, chrtest, test_fops);if(retvalue 0){/* 字符设备注册失败,自行处理 */}return 0; }/* 驱动出口函数 */ static void __exit xxx_exit(void) {/* 注销字符设备驱动 */unregister_chrdev(200, chrtest); }/* 将上面两个函数指定为驱动的入口和出口函数 */ module_init(xxx_init); module_exit(xxx_exit);1.4 实现设备具体操作函数 file_operations 结构体就是设备的具体操作函数 /* 打开设备 */ static int chrtest_open(struct inode *inode, struct file *filp) {/* 用户实现具体功能 */return 0; }/* 从设备读取 */ static ssize_t chrtest_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt) {/* 用户实现具体功能 */return 0; }/* 向设备写数据 */ static ssize_t chrtest_write(struct file *filp, const char __user *buf,size_t cnt, loff_t *offt) {/* 用户实现具体功能 */return 0; }/* 关闭/释放设备 */ static int chrtest_release(struct inode *inode, struct file *filp) {/* 用户实现具体功能 */return 0; }static struct file_operations test_fops {.owner THIS_MODULE, .open chrtest_open,.read chrtest_read,.write chrtest_write,.release chrtest_release, };/* 驱动入口函数 */ static int __init xxx_init(void) {/* 入口函数具体内容 */int retvalue 0;/* 注册字符设备驱动 */retvalue register_chrdev(200, chrtest, test_fops);if(retvalue 0){/* 字符设备注册失败,自行处理 */}return 0; }/* 驱动出口函数 */ static void __exit xxx_exit(void) {/* 注销字符设备驱动 */unregister_chrdev(200, chrtest); }/* 将上面两个函数指定为驱动的入口和出口函数 */ module_init(xxx_init); module_exit(xxx_exit);1.5 添加LICENSE信息 MODULE_LICENSE() //添加模块 LICENSE 信息 MODULE_AUTHOR() //添加模块作者信息加入 LICENSE 和作者信息完成以后的内容如下 /* 打开设备 */ static int chrtest_open(struct inode *inode, struct file *filp) { /* 用户实现具体功能 */ return 0; } ....../* 将上面两个函数指定为驱动的入口和出口函数 */ module_init(xxx_init); module_exit(xxx_exit);MODULE_LICENSE(GPL); //采用GPL协议 MODULE_AUTHOR(hsd); //添加作者名字1.6 设备号的分配 int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) /* 函数 alloc_chrdev_region 用于申请设备号此函数有 4 个参数 dev保存申请到的设备号。 baseminor次设备号起始地址alloc_chrdev_region 可以申请一段连续的多个设备号这 些设备号的主设备号一样但是次设备号不同次设备号以 baseminor 为起始地址地址开始递 增。一般 baseminor 为 0也就是说次设备号从 0 开始。 count要申请的设备号数量。 name设备名字。 注销字符设备之后要释放掉设备号设备号释放函数如下*/ void unregister_chrdev_region(dev_t from, unsigned count) /* 此函数有两个参数 from要释放的设备号。 count表示从 from 开始要释放的设备号数量。 */1.7 物理内存与虚拟内存转换函数 1、ioremap 函数 #define ioremap(cookie,size) __arm_ioremap((cookie), (size), MT_DEVICE)/* cookie要映射给的物理起始地址。 size要映射的内存空间大小。 */2、iounmap 函数 void iounmap (volatile void __iomem *addr) 1.8 IO内存访问函数 1、读操作函数 u8 readb(const volatile void __iomem *addr) u16 readw(const volatile void __iomem *addr) u32 readl(const volatile void __iomem *addr)2、写操作函数 void writeb(u8 value, volatile void __iomem *addr) void writew(u16 value, volatile void __iomem *addr) void writel(u32 value, volatile void __iomem *addr)遇见问题 1、uboot下载系统失败以前都能成功突然不能下载怎么解决 首先保证正个网段内开发板的IP地址和ubuntu的IP地址是唯一的测试哪个IP地址有冲突比如ubuntu的192.168.1.66有被其他设备占用如果有占用就改一个没被占用的IP地址。
http://www.hkea.cn/news/14328169/

相关文章:

  • 女性做网站wordpress 支持 手机
  • 手机网站源码下载查网站服务器所在地
  • 天猫网站建设目的网页制作和网站建设的区别
  • 哪个门户网站做推广好深圳做网站公司有那些
  • 如何建外贸网站查询网站建设时间
  • 免费网站最新域名域名备案查询系统工信部
  • 外贸网站怎么规划vue配合什么做网站比较好
  • 网站后台管理系统摘要怎么写wordpress单击右键提示
  • 北京高端网站建设图片大全产品营销网站建设
  • 变白网站制作源码抚州做网站价格多少
  • 云南省网站备案网站制作策划书
  • 个人网站备案简介免费网络游戏排行榜
  • 简历在线制作网站免费wordpress post 属性
  • 做网站数据库广州万网网站
  • 微信后台怎么做微网站青海seo关键词排名优化工具
  • 网站不备案做seo没用手机网站排名
  • 十度网站建设成都百度公司在哪里
  • 做偏门网站深圳制作网站多少费用
  • 网站建设设计规划书免费软件app下载大全正能量网站
  • 一级a做爰片免费网站神马电影自我介绍网站html
  • 营销型网站价格实惠win8式网站后台模板
  • 机构类网站有哪些百度小说搜索风云榜排行榜
  • 做网站界面的软件用动易建设网站教程
  • 深圳网站关键词优化wordpress 金融模板
  • seo网站设计就业前景邹城网站网站建设
  • 网站建设制作方式有哪些wordpress用户爆破
  • 2021没封的网站uc有限责任公司如何承担债务
  • 济南网站建设兼职口碑好的龙岗网站建设
  • 网站开发 项目介绍中国建设银行官网站贺岁产品
  • 某鲜花网站的数据库建设wordpress 错误500