QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1337|回复: 3

请教一下arm linux中端口读写的方法

[复制链接]
发表于 2005-7-10 23:16:35 | 显示全部楼层 |阅读模式
在arm上跑linux系统,现在想从arm的一IO口(此IO口是绝对空闲的)中读取数据,
假设此IO口所占的地址是0x12345,0x12346,0x12347,0x12348连续的地址.且此IO口是16位的.
我写的程序是:
(在write的入口函数中)

int error_io;

error_io=check_region(0x12345,4);

if(error_io<0)
{
return error_io;
}

request_region(0x12345,4,"PORT G");

outw(0xffff,0x12345);

...

但是运行的时候出现了错误:
Unable to handle kernel paging request at virtual address 0x12345
pgd = c3e14000
*pgd = 00000000, *pmd = 00000000
Internal error: Oops: ffffffff
CPU: 0
...
Segmentation fault

但是用cat /proc/ioports查看,得到12345-12348 : PORT G
应该是可以操作端口了,为什么还不行?
各位的任何意见我都感谢啊!
发表于 2005-7-11 09:40:13 | 显示全部楼层
字没对齐,0  4  8  c  0,ARM好象只能这样对齐字的
回复

使用道具 举报

 楼主| 发表于 2005-7-11 10:43:00 | 显示全部楼层

是的.应该字对齐.但还是不行的样子

二楼说得对,是应该字对齐得
我换了端口地址为0x12348接着的连续4位
但还是出现了同样的状况
Unable to handle kernel paging request at virtual address
....
回复

使用道具 举报

发表于 2005-7-14 22:00:38 | 显示全部楼层
linux运行起来后,进行了内存映射,也就是说一个寄存器在手册中的地址是:0xXXXX;
但不是在内存的这个地址上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-23 10:21 , Processed in 0.048305 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表