cckj 2008-12-10 15:45
求教,2410 arm9开发板 io 操作
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
main()
{
unsigned int d;
iopl(3);
printf("begin!\n");
d=inb(0x0032);
printf("d=%x\n",d);
printf("Succeed!\n");
}
我刚学习,摸索中,这段程序是想试试 io的操作,因为需要用开发板采集开关量。
编译 通过, 在开发板上运行 不对,出现 ... unhandled page fault at pc=0x400ge81c, lr=0x00008448 (bad address =0x00)...
很长
这代码有什么问题,请教啊, 驱动还不是很懂,比如iopl 和inb 这2个函数也第一次用,谢谢
cckj 2008-12-10 15:46
关于IO操作
在S3c2410的开发板基于arm9的开关量驱动开发简单步骤:
1. 根据你的datasheet看懂开关量的shuxing
2. 找一个标准的字符驱动 改写 留下IOCTL接口, 实现不同开关量的ioctl
3. 创建开关量的设备节点,供你的APP调用也就是 open,然后在用户空间传递不同的参数给你的内核驱动,
4. 内核驱动的ioctrl会根据不同的参数返回或是打印不同的信息。这个调通后就可以更进一步开发你复杂的开关量驱动
说白了,你要创建一个设备节点 来衔接你的用户空间和内核空间,然后就是实现你的开关量驱动。由于时间有限不能给你具体的code参考。