Chinaunix首页 | 论坛 | 博客
  • 博客访问: 970999
  • 博文数量: 214
  • 博客积分: 10173
  • 博客等级: 上将
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-18 13:48
文章分类

全部博文(214)

文章存档

2012年(1)

2010年(13)

2009年(5)

2008年(98)

2007年(97)

分类: LINUX

2010-12-01 18:07:57

内核空间:
我用的linux-2.6.24内核,
#include
获取寄存器的值
at91_get_gpio_value(AT91_PIN_PAXX);
设置寄存器的值
at91_set_gpio_value(AT91_PIN_PAXX,val);
还有其他的几个函数设置输入,设置输出等等
用户空间:
用户空间不能直接访问寄存器,需要通过驱动程序来访问.
部分驱动程序代码,
在驱动里面加入ioctl调用:
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;
:
:
}
应用程序部分代码:
#include
fd=("/dev/at",O_RDONLY);
ioctl(fd,0x0001,&i);{....}
本文来自: () 详细出处参考:
阅读(1593) | 评论(0) | 转发(0) |
0

上一篇:编译make2yaffsimage

下一篇:iperf ARM移植

给主人留下些什么吧!~~