概述: register_chrdev与unregister_chrdev配对使用;/*register_chrdev = __register_chrdev_region (一次性256个子设备,这种固定模式不太好,不能比256更多子设备,所以后来开始废除这种模式)+ cdev_add*//* u ...
分类:
其他好文 时间:
2016-05-23 16:53:28
阅读次数:
258
在以前的文章中,有一篇
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
在那篇文章中,具体可以参考。那时候我使用了简单的字符设备驱动框架,最终的ID号通过read方法可将ID读取出来,但是,这样做就太麻烦啦,有没有更简单的方法呢?其实有,这种方法称作IO地址的映射,而今天我们要说的是IO地址的动态映射方法,静态映射就太简单了,直接调用相应的接口,配置相应的寄...
分类:
其他好文 时间:
2016-05-18 18:51:30
阅读次数:
158
字符驱动编程模型:
1. 设备描述结构cdev
1.1 结构定义
1.2 设备号
1.3 设备操作集
在Linux系统中,设备的类型非常繁多,如:字符设备,块设备,网络接口设备,USB设备,PCI设备,平台设备,混杂设备……,而设备类型不同,也意味着其对应的驱动程序模型不同,这样就导致了我们需要去掌握众多的驱动程序模型。那么能不能从这些众多的驱动模型中提炼出...
分类:
其他好文 时间:
2016-05-12 23:09:23
阅读次数:
223
在linux下对上面的文件进行静态编译(考虑到前面开发板上移植的某些库还没有添加进去)生成read-mem目标文件,然后进行反汇编并将反汇编生成的文件导入到当前目录下的dump上去。
这里红箭头指向的两行是比较重要的两行,将3传给r7,然后使用了SVC系统调用指令,这时PC指针会从用户空间进入到内核空间(通过一个固定的入口),第二步会取r7寄存器里面的值3, 然后根据这个值查一个表确定要调用那个系统调用(即对于3的系统调用内核代码)。
系统就是通过固定入口进入内核空间,然后取出系统调用编号,在利用编号查找上...
分类:
系统相关 时间:
2016-05-12 22:53:24
阅读次数:
340
首先需要知道的是,设备跟驱动是分开的。设备通过struct device来定义,也可以自己将结构体封装到自己定义的device结构体中: 例如:struct platform_device: platform_device通过向内核注册struct device dev这个结构体来告诉内核加载这个设 ...
分类:
其他好文 时间:
2016-05-10 18:32:38
阅读次数:
262
一、字符设备驱动的结构 1、cdev 结构体 struct cdev { struct kobject kobj; // 内嵌的Kobject对象 struct module *owner; // 所属的模块 const struct file_oper... ...
分类:
其他好文 时间:
2016-05-07 19:40:44
阅读次数:
230
自动创建设备文件 1.自动创建设备文件的流程 字符设备驱动模块 --》创建一个设备驱动class >创建属于class的device >调用mdev工具(自动完成)--> 生成设备文件 mdev工具会根据/sys下的class找到相对应的device,然后根据device创建设备文件 class / ...
分类:
其他好文 时间:
2016-05-06 19:05:37
阅读次数:
355
第一章: Android移植分为Android应用移植和Android系统移植,在Android系统移植中,linux驱动作为一个重点使其作为基础而运行,在源代码的基础上进行更改或者添加将其实现独有的功能。Linux内核层:Linux内核和驱动模块。Linux的设备驱动有3类,字符设备驱动、块设备驱 ...
分类:
其他好文 时间:
2016-05-04 01:07:24
阅读次数:
138
概念:在Linux系统中,所有设备都被映射成 【设备文件】 来处理,设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。 整理自:(相当不错,建议有时间看下原文) 《第一章 设备驱动简介 1.3.节 设备和模块的分类》 《Linux设备驱动之字符设备驱动》 一般情况下,以 Linux 的设备 ...
分类:
系统相关 时间:
2016-04-11 22:33:21
阅读次数:
254
之前写字符设备驱动,都是使用register_chrdev向内核注册驱动程序中构建的file_operations结构体,之后创建的设备文件,只要是主设备号相同(次设备号不同),则绑定的都是同一个file_operations结构体,应用程序使用的也都是这一个结构体中注册的函数。这就会出现这样的一个弊..
分类:
其他好文 时间:
2016-04-11 18:57:55
阅读次数:
5793