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

网站域名可以改么广东省网站设计师

网站域名可以改么,广东省网站设计师,高端网页建设,网站建设哪家服务周到字符设备驱动程序简介  linux系统中万物皆文件#xff0c;驱动程序加载后会在/dev目录下生成一 个对应的文件#xff0c;如/dev/led。应用程序就是先用open打开该文件#xff0c; 用write控制led的亮灭#xff0c;用read读取led的亮灭#xff0c;用完之后用close 关闭该…字符设备驱动程序简介  linux系统中万物皆文件驱动程序加载后会在/dev目录下生成一 个对应的文件如/dev/led。应用程序就是先用open打开该文件 用write控制led的亮灭用read读取led的亮灭用完之后用close 关闭该文件。 这里需要注意的是应用程序运行在用户空间驱动程序运行 在内核空间。应用程序必须使用一个叫做“系统调用”的方法 来实现从用户空间“陷入”到内核空间这样才能实现对底层 驱动的操作。一个open函数执行的过程如下 字符设备驱动编写 linux源码中字符设备驱动程序存放在driver/char目录下我们也可以将我们自己的驱动程序保存在该目录下 在driver/char下创建源文件first_driver.c并在文件中填入如下代码 模块加载使用 __init 函数 模块卸载使用 __exit函数 字符设备驱动注册函数int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops) 1. unsigned int major主设备号这里就不得不提一下linux中的 设备号了。一个字符设备或者块设备都有一个主设备号和次 设备号。主设备号和次设备号统称为设备号。主设备号用来 表示一个特定的驱动程序。次设备号用来表示使用该驱动程 序的设备。简单来说linux需要一个数来管理某个驱动程序 和使用这个驱动程序的设备。很明显这个设备号具有唯一 性。我们可以使用cat /proc/devices命令即可查看当前系统中 所有已经使用了的设备号。在接下来的程序中我们可以设 置一个静态的主设备号比如200。设置时一定要注意不能使 用已经用了的主设备号。 2. const char *name为你的驱动程序起一个名字 3. struct file_operations *fops这是一个指向file_operations结构 体变量的指针这个结构体里面的成员绝大多数都是函数的 指针。这些函数的指针指向一个我们编写的函数每个函数 都有着各自的作用。file_operations fops 该函数成员有以下一些 其中我们驱动编写需要用到的参数有 ①open 函数用于打开设备文件 ② release 函数用于释放(关闭)设备文件与应用程序中的close 函数对应 ③ read 函数用于读取设备文件 ④write 函数用于向设备文件写入(发送)数据 ⑤ owner 拥有该结构体的模块的指针一般设置为 THIS_MODUL为了调用注册字符设备驱动函数不得不先准备一个file_operations结构体变量而这个结 构体变量中必要的成员必须提前准备几个函数 在init__中调用注册函数 编译字符设备驱动程序 这种方法需要我们的驱动源码就放在driver/char目录中恰好我 们就是这么做的。步骤如下 1.打开drivers/char/Kconfig 文件并添加如下内容 在这里就可以找到自己刚才添加的设备了 2.打开drivers/char/Makefile并添加下面内容 ![请添加图片描述](https://i-blog.csdnimg.cn/direct/ 编写驱动程序的调用 正如之前所提到的驱动程序的调用是通过应用程序的文件IO 实现的。所以调用驱动程序就是编写一个简单的文件IO程序。这里open中打开的就是/dev/你的设备名称在驱动自己设置的如上面代码中我写的“led”。 到这里基本驱动就已经完成了但是我们并没有真正控制一个led的亮灭这就需要我们对硬件对应的寄存器进行操作 LED标准驱动程序s3c2440 在编写驱动之前我们必须知道寄存器的地址是什么但是我们并不能通过寄存器的物理地址去直接访问它在此不得不使用MMU这个工具内存管理单元。 1.完成虚拟空间到物理空间的映射 2.内存保护设置存储器的访问权限设置虚拟存储空间的缓冲特性我们重点来看一下第①点也就是虚拟空间到物理空间的映射也叫做 地址映射。首先了解两个地址概念虚拟地址(VA,Virtual Address)、物 理地址(PAPhyscical Address)。对于32 位的处理器来说虚拟地址范 围是2^324GB我们的开发板上有64MB 的SDRAM这64MB 的内存 就是物理内存经过MMU 可以将其映射到整个4GB 的虚拟空间 那么换句话说就是由于linux启动时启用了MMU所以在编写程序时用 到的都是虚拟内存而不是物理内存。但是操作led必须使用物理内存 Led驱动程序 可以在keil4/5中查看对应寄存器的物理地址在此我们需要用到的寄存器有GPBCON0x56000010和GPBDAT0x56000014但是我们在机器中直接访问系统会认为我们输入的是虚拟地址而无法控制我们想要控制的寄存器所以我们必须完成一次虚拟映射以获取它们的虚拟地址 #define ioremap(cookie,size) …… 在cookie中输入寄存器的物理地址 在size中输入地址字节数大小 第53-55行为GPIO设置和裸机设置一样 地址常量和寄存器变量定义如下 可以看出REG_GPBCON和REG_GPBDAT就是两个普通的指针设置寄 存器需要使用指针的间接访问 在驱动程序被卸载的时候也需要取消映射 led驱动程序不要应用程序“读取”只需要编写写入函数就行 之前的代码中在注册字符设备驱动的时候我们使用了一个静态的主设备 号200很明显200这个主设备号如何已经被使用了那么我们就无法 完成注册。最好的办法就是由系统给我们提供一个合法的设备号 申请设备号的函数int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) 参数dev的数据类型是dev_t,这个数据类型就是linux设备号的数据类型 需要注意的是这个数据类型的本身就是unsigned int型其中包括了 主设备号和次设备号。主设备号占高12位次设备号占20位。l很明显 主设备号从0~4095次设备号虽然占20位但是它的有效范围是从 0~256。l系统提供了两个宏分别用于从一个设备号中提取主设备号和 次设备号MAJOR和MINOR。这个参数就是需要我们定义一个dev_t变 量函数将获得的设备号通过这个参数传递出来。 dev:传递一个dev_t类型的变量地址 baseminor此设备号的起始值次设备号count申请几个此设备 name设备名 返回0表示成功负数表示不成功在led驱动中添加全局变量static dev_t dev_num并调用 alloc_chrdev_region函数申请合法的设备号 设备号与驱动程序关联 int cdev_add(struct cdev *p, dev_t dev, unsigned count); 1.该函数需要一个cdev结构体变量的地址struct cdev结构体中包含了 dev_t和struct operations所以它能够把dev_t和驱动程序联系在一 起 2. dev参数就是之前申请到的设备号 3.申请的次设备号的个数在调用cdev_add函数之前还需要把我们定义的cdev变量初始化一下 这里调用 void cdev_init(struct cdev *cdev, const struct file_operations *fops); cdev变量的地址 2.文件操作结构体变量地址 操作如下 自动添加节点 创建class使用带参宏#define class_create(owner, name) 其实这个宏又调用了__class_create(owner, name, __key)函数 1. owenr指向模块的指针这里只需传THIS_MODULE 2. name为该设备的类型起个名字 3.该函数返回struct class *用宏IS_ERR判断是否合法创建device使用函数 struct device *device_create(struct class *class, struct device *parent,dev_t devt, void *drvdata, const char *fmt, …) class参数之前获得的指针parent设备的父设备指针传NULLdevt设备号drvdata驱动需要的额外参数这里传NULLfmt将来在/det目录下生成的文件名 模块卸载
http://www.hkea.cn/news/14384714/

相关文章:

  • 水利建设专项收入在什么网站上申报微信定制开发
  • 网站域名建设艾纳网站建设
  • 北京企业建站公司网站开发所需资料
  • 可以做问卷的网站有哪些用dw做红米网站
  • 济南网站建设方案书范文天津做网站推广的公司
  • 网站建设报告模板wordpress 微商
  • 网站标题 关键字怎么设置代码高端网站开发
  • 城乡建设部网站首页深圳 赢客创想网络技术股份有限公司 网站建设
  • 做游戏推广网站ppt免费下载的网站有哪些
  • 找人做网站网站wordpress同步微信素材
  • wordpress+做仿站服装设计自学软件
  • 甘肃手机版建站系统信息郑州市经开区建设局网站
  • 做电子外贸网站建设网站建设3a模型是什么意思
  • 澄海建网站网站首页布局自适应
  • 建立网站的软件网络规划设计师教程第二版电子书
  • 响应式网站改为自适应世赛网站开发
  • 温州建设管理处网站壹财富 网站开发
  • vps 网站能打开现在ui做的比较好的网站
  • php部署网站企业查询系统官网
  • 网站设计公司苏州网站建设现在市场大不大
  • 微网站开发协议wordpress速度快不快
  • vue做单页面网站宝安设备网站设计
  • 南宁网站开发价格网站建设及推广方案ppt模板
  • 中国网站备案取消公司名称变更通知函
  • 广州外贸网站推广电子商务专业网站
  • win2012 iis 部署网站口碑营销经典案例
  • 常德网站建设费用东莞品牌网站制作
  • 廊坊网站自助建站网站推广工作是在网站发布之后开展的
  • 佛山百度网站排名优化网页设计的要点有哪些
  • 北海 网站建设seo管理员