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

寻找石家庄网站建设襄樊seo

寻找石家庄网站建设,襄樊seo,超级ppt市场免费模板,青浦建设机械网站linux驱动开发与裸机开发的区别 裸机直接操作寄存器#xff0c;有些mcu提供了库#xff0c;但还是很底层 1、linux驱动开发直接操作寄存器很麻烦不现实#xff0c;主要是根据linux驱动框架进行开发#xff08;就是有很多操作都是一样的#xff0c;我们只需要对一个程序模… linux驱动开发与裸机开发的区别 裸机直接操作寄存器有些mcu提供了库但还是很底层 1、linux驱动开发直接操作寄存器很麻烦不现实主要是根据linux驱动框架进行开发就是有很多操作都是一样的我们只需要对一个程序模板进行一些修改就可以实现不同驱动的开发 2、驱动最终的表现就是/dev/xxx这样的一个文件应用程序打开驱动文件或者关闭驱动文件 3、内核支持设备树文件一个dts文件文件描述了板子的设备信息使用了哪些引脚引脚是高电平还是低电平地址是多少之类的 三大驱动分类 字符驱动 从最简单的点 灯到 I2C、SPI、音频等都属于字符设备驱动的类型 块驱动 所谓的块设备驱动就是存储器设备的驱动比如 EMMC、NAND、SD 卡和 U 盘等存储 设备因为这些存储设备的特点是以存储块为基础因此叫做块设备 网络设备驱动 就是网络驱动不管是有线的还是无线的都属于网络设备驱动的范畴。一个设备可以 属于多种设备驱动类型比如 USB WIFI其使用 USB 接口 字符设备驱动实验 在单片机中驱动与应用是在一个文件中但是linux中驱动与应用程序是分开的 驱动获得外设、或者传感器数据控制外设然后提交给应用程序 应用程序运行在用户空间驱动程序运行在内核空间用户空间的程序无法直接访问内核空间的数据一般有三种方法 1、系统调用比如应用函数使用一个open函数*c语言库函数然后open函数就会调用内核中的open驱动对应的函数 2、异常中断 3、陷入· 我的第一个linux驱动实验 字符设备驱动框架 字符设备驱动的编写主要就是驱动对应的open、close、read。。。其实就是 file_operations结构体的成员变量的实现 驱动模块的加载与卸载 Linux驱动程序可以编译到kernel里面也就是zImage也可以编译为模块.ko。测试的时候只需要加载.ko模块就可以 加载驱动会用到加载命令insmod移除驱动使用命令rmmod。 驱动模块加载成功以后可以使用lsmod查看一下。 三、字符设备的注册与注销 1、我们需要向系统注册一个字符设备使用函数register_chrdev。 2、卸载驱动的时候需要注销掉前面注册的字符设备使用函数unregister_chrdev注销字符设备。 四、设备号 1Linux内核使用dev_t。 typedef __kernel_dev_t       dev_t; typedef __u32 __kernel_dev_t; typedef unsigned int __u32; 2、Linux内核将设备号分为两部分主设备号和次设备号。主设备号占用前12位次设备号占用低20位。 主设备号表示某一个具体的驱动次设备号表示使用这个驱动的各个设备 3、设备号的操作函数或宏 从dev_t获取主设备号和次设备号MAJOR(dev_t)MINOR(dev_t)。也可以使用主设备号和次设备号构成dev_t通过MKDEV(majorminor) 五、file_operations的具体实现 file_operation就是驱动的操作函数 struct file_operations {struct module *owner;loff_t (*llseek) (struct file *, loff_t, int);ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);int (*iterate) (struct file *, struct dir_context *);unsigned int (*poll) (struct file *, struct poll_table_struct *);long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);long (*compat_ioctl) (struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, struct vm_area_struct *);int (*mremap)(struct file *, struct vm_area_struct *);int (*open) (struct inode *, struct file *);int (*flush) (struct file *, fl_owner_t id);int (*release) (struct inode *, struct file *);int (*fsync) (struct file *, loff_t, loff_t, int datasync);int (*aio_fsync) (struct kiocb *, int datasync);int (*fasync) (int, struct file *, int);int (*lock) (struct file *, int, struct file_lock *);ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);int (*check_flags)(int);int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);int (*setlease)(struct file *, long, struct file_lock **, void **);long (*fallocate)(struct file *file, int mode, loff_t offset,loff_t len);void (*show_fdinfo)(struct seq_file *m, struct file *f); #ifndef CONFIG_MMUunsigned (*mmap_capabilities)(struct file *); #endif }; 六、字符设备驱动框架的搭建 七、chrdevbase虚拟设备驱动的完善
http://www.hkea.cn/news/14535290/

相关文章:

  • 浙江省建设厅网站如何查安全员东莞专业的网站建设网络推广
  • 嘉兴网站制作套餐网店美工课本
  • 滕州网站架设镇江网站建设个
  • 俄文企业网站建设飞行时代网站建设
  • 华为云建站怎么样网站开发语言wap是什么
  • 网站建设需要具备有网站模板怎么做网站
  • 成都网站建设 3e家具建设网站
  • 天津响应式网站设计深圳网站设计专业乐云seo
  • 企业网站备案名称窍门网站维护 代码
  • 石家庄做网站建设的公司排名flashxml网站模板
  • 平面设计师作品网站ps 做儿童摄影网站首页
  • 浦江做网站直播网站
  • 电子商务网站建设指导书永川网站建设公司
  • 广东省网站备案注销农技推广
  • 三好街做网站的怎么做网站上做电子书
  • 免费php网站源码百度公司招聘条件
  • 舟山网站建设免费咨询网站开发与应用论文
  • 建设学分银行网站策划书网站建设常用字体
  • 做字幕网站外贸出口网
  • 深圳市建设设计院网站做网站费用上海
  • 济南网站优化收费网站优化公司谷歌优化
  • 河南省住建局官方网站网站开发绩效考核与薪酬
  • 如何在腾讯云建设网站中国核工业第二三建设有限公司
  • 高端网站建设哪家公司好贺州住房和城乡建设部网站
  • 400网站建设价格tomcat wordpress
  • 网站设计的公司叫什么便宜自适应网站建设
  • 做网站开发 甲方提供资料济南网站建设市场
  • 成都做个网站珠海市住房建设局网站
  • 如何做阿语垂直网站传奇手游平台
  • django做视频网站微信手机版登录入口