主题 : 请教:linux驱动如何与硬件打交道的? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 49476
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-06-12
最后登录: 2018-02-08
楼主  发表于: 2011-11-28 13:38

 请教:linux驱动如何与硬件打交道的?

自学了这久的linux驱动程序了,也看了很多设备驱动程序,比如USB、tty、lcd、块设备等都了解一点,
但是只看到设备不停的注册与卸载,对设备的操作与初始化 ,就是没看见哪个函数能实在在的操作某个硬件的寄存器,我是搞单片机的,所以我就一直很疑惑这点?
难道内核中已经把这些操作硬件的函数给封装起来再给驱动调用?如果是这样的话,那么怎么才能从内核中正确找到自己所需要的操作硬件的函数呢?比如说GPIO的操作!!
望大家一起讨论讨论
你是怎么学习驱动的,牛人:赶鸭子上架,结果就入门了
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2011-11-28 21:43
目前,在Linux设备驱动里,GPIO的操作通常是通过gpiolib提供的API(include/linux/gpio.h)实现的。 其实,Linux设备驱动操作硬件的方式和单片机本质上没有什么两样,该怎么读写寄存器的还是怎么读写,该怎么映射IO memory的还是怎么映射,只是通过内核提供的一系列接口来实现。这些在Linux Device Driver第三版(http://www.aiothome.net/read.php?tid-1859.html)的第九章有介绍。当然最好的文档还是源代码本身。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 16811
精华: 0
发帖: 112
金钱: 560 两
威望: 112 点
综合积分: 224 分
注册时间: 2010-03-22
最后登录: 2018-06-27
2楼  发表于: 2011-11-29 09:53
楼上说的对
级别: 新手上路
UID: 49476
精华: 0
发帖: 48
金钱: 240 两
威望: 48 点
综合积分: 96 分
注册时间: 2011-06-12
最后登录: 2018-02-08
3楼  发表于: 2011-11-29 10:11

 回 1楼(kasim) 的帖子

那是不是内核已经帮你做好了,你只需要调用就OK了是么?是不是一般这些函数在内核的这个目录下是么include/linux/
你是怎么学习驱动的,牛人:赶鸭子上架,结果就入门了