QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2312|回复: 1

如何修改GPIO寄存器

[复制链接]
发表于 2007-2-9 09:07:49 | 显示全部楼层 |阅读模式
情况是这样的:
我们公司现在在使用PowerPC的CPU,CPU上运行Linux 2.6.13, 现在我想要对GPIO操作,编写了一个程序去写GPIO输出,程序编译是通过了,运行前面的printf之类的语句执行正常,但执行到修改GPIO寄存器时,出现"Segmentation fault"

我估计是操作系统正常运行之后进入保护模式,保护模式下运行的程序无法对CPU的寄存器直接操作,应该怎么办呢?

GPIO地址情况如下:
1.在开发板提供的.h中:
#define GPIO_BASE  0xEF600700
#define GPIO0_OR               (GPIO_BASE+0x0)

我用的就是GPIO0_OR

2.程序:
int main(int argc, char* argv[])
{
    printf("hello,world!\n");  //正常打印
    *(volatile ulong *)GPIO0_OR &= ~0x00000002; //出Segmentation fault错

    return 0;
}
发表于 2007-2-28 14:42:32 | 显示全部楼层
不是只有在kernel模式才能改寄存器。

不知道outb指令和ioperm(2), iopl(2)能不能帮你
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-22 03:57 , Processed in 0.035703 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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