内核空间:
我用的linux-2.6.24内核#include
获取寄存器的值
at91_get_gpio_value(AT91_PIN_PAXX);
设置寄存器的值
at91_set_gpio_value(AT91_PIN_PAXX,val);
还有其他的几个函数设置输入,设置输出等等
用户空间:
用户空间不能直接访问寄存器,需要通过驱动程序来访问.
部分驱动程序代码
在驱动里面加入ioctl调用:
QUOTE: |
int at_ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg) { long val; switch(cmd){ case 0x0001: val=at91_get_gpio_value(AT91_PIN_PXXX); put_user(val,(long *)arg);break; case 0x0002: val=at91_get_gpio_value(AT91_PIN_PXXX); put_user(val,(long *)arg);break; : : } |
应用程序部分代码:
QUOTE: |
#include fd=("/dev/at",O_RDONLY); ioctl(fd,0x0001,&i);{....} |