主题 : 请教高人 /dev/mem和mmap 及I/O内存相关问题! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5107
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2009-04-10
最后登录: 2017-09-13
楼主  发表于: 2010-04-24 18:16

 请教高人 /dev/mem和mmap 及I/O内存相关问题!

我的CPU(ARM核)接了一块Controller. 接口是static memory interface .片选CS决定了外设起始地址为0X14000000,我想问的是有关I/O内存的概念,因为CPU和外设之间只有一条地址线addr2,所以是否可以说在CPU看来,这个外设只有2个I/O内存地址 0x14000000 和0X14000004.而向地址0x14000000 写的时候其实是写命令到外设,因为ADD2接到了HD/C(数据、命令选择引脚)。同理,向地址0X14000004写的时候是写数据到外设。我在外设的驱动程序看到它就是这样来访问的。之前需要用ioremap函数讲物理地址映射到内核虚拟空间。通过这样的访问能成功的读到外设的ID
还有个问题是,我现在在应用程序端 通过打开/dev/mem端口,然后用mmap (... 0x14000000)来将外设的i/o内存映射到用户空间的虚拟地址。然后用同样的方法来读写外设。但是不能成功的读到外设的ID。但是我可以用这种方法成功读写GPIO的寄存器。不知道这种方法是否可以访问外设的I/O内存?还是mmap函数是有条件的?
困扰了好几天,没想明白,希望大家指点。非常感谢。



级别: 新手上路
UID: 5107
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2009-04-10
最后登录: 2017-09-13
1楼  发表于: 2010-04-25 16:53
怎么都是路过的啊?版主救命