在以前的文章中,有一篇
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
在那篇文章中,具体可以参考。那时候我使用了简单的字符设备驱动框架,最终的ID号通过read方法可将ID读取出来,但是,这样做就太麻烦啦,有没有更简单的方法呢?其实有,这种方法称作IO地址的映射,而今天我们要说的是IO地址的动态映射方法,静态映射就太简单了,直接调用相应的接口,配置相应的寄...
分类:
其他好文 时间:
2016-05-18 18:51:30
阅读次数:
158
shell脚本的测试与判断1、测试语法:[操作符条件]==test操作符条件1)测试文件级目录文件的类型:f,文件ls-l##只查看字段的第一个字符,文件“-”d,目录ls-ldl,链接文件ls-lc,字符设备ls-l/dev/ttyb,块设备ls-l/dev/sda1s,套接字文件,一般服务使用mysqlls-l/tmp/mysql.sock..
分类:
系统相关 时间:
2016-05-17 10:00:43
阅读次数:
223
Linux核心思想:一切皆文件块设备:block,存取单位“块”,磁盘字符设备:char,存取单位“字符”,键盘设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信设备号码:主设备号:majornumber,标识设备类型次设备号:minornumber,标识同一类型下的不同设备..
分类:
系统相关 时间:
2016-05-16 17:56:26
阅读次数:
237
设备号设备号由主设备号和次设备号组成。linux下,一切设备皆文件,所有的设备都能在/dev目录下找到相应的文件。这些文件除了名字不一样以外,还每个设备文件都有不一样的设备号;
一般地,主设备号对应一个类型的驱动设备,之所以有次设备号,它是用来驱动同类型的设备。如串口,所有的串口共用一个主设备号,每个串口有不同的次设备号。dev_t类型用来保存设备编号(包含主设备号和次设备号),实际上是一个3...
分类:
系统相关 时间:
2016-05-13 00:18:13
阅读次数:
190
字符驱动编程模型:
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
字符设备的控制
1. 字符设备控制理论
1.1 作用
大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如:改变波特率
1.2 应用程序接口
在用户空间,使用ioctl系统调用来控制设备,原型如下:
int ioctl(int fd, unsigned long cmd, ...)
...
分类:
其他好文 时间:
2016-05-12 18:46:21
阅读次数:
195
首先需要知道的是,设备跟驱动是分开的。设备通过struct device来定义,也可以自己将结构体封装到自己定义的device结构体中: 例如:struct platform_device: platform_device通过向内核注册struct device dev这个结构体来告诉内核加载这个设 ...
分类:
其他好文 时间:
2016-05-10 18:32:38
阅读次数:
262
一、在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下: 可以使用如下宏调用来获得主次设备号:MAJOR(dev_t dev) MINOR(dev_t dev) MKDEV(int major,int minor) //通过主次设备号来生成dev_t 以上宏调用在内核源码中如此定义 ...
分类:
其他好文 时间:
2016-05-08 13:24:25
阅读次数:
161
一、字符设备驱动的结构 1、cdev 结构体 struct cdev { struct kobject kobj; // 内嵌的Kobject对象 struct module *owner; // 所属的模块 const struct file_oper... ...
分类:
其他好文 时间:
2016-05-07 19:40:44
阅读次数:
230