免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4893 | 回复: 16
打印 上一主题 下一主题

有关Linux LCD驱动源码的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-16 19:16 |只看该作者 |倒序浏览
    这一个多星期主要在搞Linux LCD驱动,期间对内核源码中的drivers/video/s3c2410fb.c文件产生了一些疑惑如下:

   首先请看如下的两张图片
   
   
   
   

    接下来就是我的疑问了:modify_gpio(S3C2410_GPCUP,  mach_info->gpcup,  mach_info->gpcup_mask);中的S3C2410_GPCUP是物理地址啊?怎么能够直接访问呢?不是应该先向操作系统申请,然后再进行虚实地址映射后才可以使用吗?
   不知道我的分析错在哪里了,希望大家能够帮助我解决这个问题。


   

论坛徽章:
0
2 [报告]
发表于 2013-01-19 18:31 |只看该作者
LZ确定S3C2410_GPCUP是物理地址?

论坛徽章:
0
3 [报告]
发表于 2013-01-19 18:48 |只看该作者
嗯,确定,请看我从内核中拷贝的代码:
#define S3C2410_GPCUP           S3C2410_GPIOREG(0x2

#define S3C2410_GPIOREG(x) ((S3C24XX_PA_GPIO + (x)))

#define S3C24XX_PA_GPIO     S3C2410_PA_GPIO

#define S3C2410_PA_GPIO           (0x56000000)

从中可以看出S3C2410_GPCUP为0x56000028 与S3C2440芯片手册上的一样,为物理地址。

论坛徽章:
0
4 [报告]
发表于 2013-01-22 10:55 |只看该作者
readl/writel用的都是虚拟地址, 你代码可能跟的不对

论坛徽章:
0
5 [报告]
发表于 2013-01-22 13:06 |只看该作者
驱动是最底层了,直接对硬件进行操作,不需要向操作系统申请。我是这样理解的,前段时间调试网卡驱动,也是这样的,驱动直接对寄存器操作,没有进行虚拟地址转换,其他模块也是如此吧

论坛徽章:
0
6 [报告]
发表于 2013-02-24 00:39 |只看该作者
回复 5# fedorayang


        。。。访问外设的寄存器一般都通过其它的通信方式去访问的,readl/writel是不行的,你看看读写该寄存器的函数实现是什么就知道了

论坛徽章:
0
7 [报告]
发表于 2013-02-25 09:02 |只看该作者
回复 4# wibnmo
     感谢你的帮助,不好意思啊,在家没有网,所以到现在才回复。我的代码是从Linux内核源码中拷贝来的,并且单独复制出来修改编译成模块,所以代码跟的没有问题。


   

论坛徽章:
0
8 [报告]
发表于 2013-02-25 09:19 |只看该作者
回复 5# fedorayang
    感谢你的帮助,因为在家里没有网,所以到现在才回复。
   现在来说说我的看法。首先,我认为应该先向操作系统申请物理地址。打个比喻,假定物理存在一座房子(相当于物理地址),你(相当于驱动)在不向房管局(相当于操作系统)申请并获得批准的情况下,可以住进去吗?当然可以!但是你不要忘了,此时房管局并不知道你住了该房子,在房管局的信息系统中显示的是该房子没有住人,所以当我(相当于另一个驱动)向房管局提出申请要住你现在的房子的时候,会得到批准,于是我就会与你分享同一间房子(相当于两个驱动同时操控同一个硬件),这是不允许出现的情况。
   其次,物理地址应该虚实地址映射后才可以使用。因为Linux操作系统下都必须使用虚拟地址才能对内存进行合法访问。


   

论坛徽章:
0
9 [报告]
发表于 2013-02-25 09:27 |只看该作者
回复 6# 睡不死
    readl/writel是使用I/O内存地址空间与硬件进行通信的内核老API,现在还在使用。


   

论坛徽章:
0
10 [报告]
发表于 2013-03-16 09:43 |只看该作者
是否LCD子系统在mem子系统之前初始化的?内存管理任务还没启来,所以不能使用虚拟地址?
我猜的,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP