社区
驱动开发/核心开发
帖子详情
Linux应用程序控制GPIO,给个简单的完整操作范例
dzjsxylmj
2011-06-17 03:37:47
s3c2440 FL开发板,想不写GPIO驱动程序,直接在应用程序中驱动GPIO,求一个简单可行的操作范例,谢谢。我得内核版本是2.6.31.
...全文
1484
11
打赏
收藏
Linux应用程序控制GPIO,给个简单的完整操作范例
s3c2440 FL开发板,想不写GPIO驱动程序,直接在应用程序中驱动GPIO,求一个简单可行的操作范例,谢谢。我得内核版本是2.6.31.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
booboo18
2012-05-05
打赏
举报
回复
楼主的问题不知道解决没有呢?我也想用个驱动GPIO口的应用程序,驱动要是内核带了得话,不是应该写个驱动就行了么?
丰满
2011-07-20
打赏
举报
回复
恩,是可以在应用层做的,有知道gpio的真实的物理地址,映射,呵呵,那还不如自己写个gpio的驱动的了,多简单啊
tian0xin0
2011-07-13
打赏
举报
回复
直接在应用层写驱动,你需要知道控制GPIO灯的寄存器地址。一般的话在开发板的使用手册里面都应该有。下面的代码是研祥工控主板上应用层直接控制GPIO口的代码:
#define INDEX_PORT 0x2E
#define DATA_PORT 0x2F
void GPIOControl::GPIOInitialize()
{
//comment out to test code on platform without GPIO
unsigned char tmp_val;
if(ioperm(INDEX_PORT,2,1))
{
printf("ioperm error!\n");
}
outb(0x87, INDEX_PORT);
outb(0x87,INDEX_PORT);
outb(0x29,INDEX_PORT);
tmp_val = (inb(DATA_PORT )|0x02)&0xfb;
outb(tmp_val, DATA_PORT);
outb(0x2c, INDEX_PORT);
tmp_val = inb(DATA_PORT ) &0x7f;
outb(tmp_val, DATA_PORT);
outb(0x07, INDEX_PORT);
outb( 0x09, DATA_PORT);
outb(0x30 ,INDEX_PORT);
outb(0x03,DATA_PORT);
outb(0xe3, INDEX_PORT);
tmp_val = inb(DATA_PORT) & 0xfc;
outb(tmp_val, DATA_PORT);
outb( 0xf0 ,INDEX_PORT);
tmp_val = (inb(DATA_PORT)& 0x3f) | 0x33;
outb(tmp_val, DATA_PORT);
}
void GPIOControl::Out_Lev(int pin, int lev_val)
{
//comment out to test code on platform without GPIO
GPIOInitialize();
unsigned char oldval;
int pin_val[4] = {36, 37, 20, 21};
unsigned int reg_val[4] = {0xf1, 0xf1, 0xe4, 0xe4};
outb(0x07,INDEX_PORT);
outb(0x09, DATA_PORT);
outb(reg_val[pin - 1] +1,INDEX_PORT);
oldval = inb(DATA_PORT) & ( ~ (0x01 << pin_val[pin -1] % 10));
outb(oldval,DATA_PORT);
outb(reg_val[pin -1],INDEX_PORT);
oldval = inb(DATA_PORT);
oldval = lev_val? oldval|(0x01 << pin_val[pin -1]%10): oldval& (~ (0x01 << pin_val[pin-1] % 10));
outb( oldval,DATA_PORT);
}
hotspring110
2011-07-09
打赏
举报
回复
直接操作不行啊,你可以用汇编写的试试!
皮CaPr
2011-07-09
打赏
举报
回复
不写驱动那还要操作系统做什么。
2440的GPIO驱动三星在内核源码中已经写好。你直接在内核中使用GPIO的通用接口函数啦。
GPIO驱动也提供了用户接口的,在/sys/class/gpio下面,可以在网上的查相关资料看怎么使用。
哥特de忧伤
2011-07-07
打赏
举报
回复
把寄存器的地址映射到用户空间,就可以正常操作了
zheguzai000
2011-07-07
打赏
举报
回复
要想不写驱动就裸机开发
dthxman
2011-07-05
打赏
举报
回复
不可能,楼主别幻想了。
victor0423
2011-07-05
打赏
举报
回复
我想也不太可能,如果这样的话还要驱动干嘛呢。。
embedarmwince
2011-07-03
打赏
举报
回复
找个代码看就可以了,网络上大把
kelsel
2011-07-02
打赏
举报
回复
你的意思是指LINUX系统下,编写应用程序直接控制GPIO口,而不编写对应的驱动?
如果是这样的话,这个应用程序是写不出来的。因为在操作系统层面,我们访问的都是虚拟地址,而GPIO口跟具体硬件相关联,属于物理地址。驱动就是将物理地址映射为虚拟地址,为应用层提供GPIO口的控制操作而存在的。
ZYNQ 7020实现axi_
gpio
驱动(PYNQ_Design实现).zip
AXI
GPIO
驱动程序是软件和硬件之间的一个接口,允许
应用程序
通过
Linux
操作
系统
控制
GPIO
引脚。在ZYNQ 7020中,AXI
GPIO
驱动通常由设备树配置,用于确定
GPIO
端口的映射、方向
控制
和中断处理。在PYNQ_Design实现中,...
LINUX
2.6.26.6内核下的第一个LED驱动程序测试成功!
Linux
内核是
操作
系统的核心部分,它负责管理系统的硬件资源,并提供基本的服务给其他
应用程序
。随着
Linux
的发展,其内核版本也在不断更新,每个版本都有不同的特性和改进。本案例中的内核版本为 2.6.26.6。 ####...
ARM嵌入式
Linux
系统构建与驱动开发
范例
1. **交叉编译环境搭建**:讲解如何在主机上配置和建立针对ARM芯片的交叉编译工具链,以便在非ARM平台上编译出适用于ARM处理器的
Linux
内核和
应用程序
。 2. **
Linux
内核配置与编译**:详细介绍了如何根据具体硬件...
嵌入式
linux
的led灯驱动程序
6. **
范例
应用**:一个
简单
的LED
控制
应用程序
可能包括打开对应LED的sysfs节点,写入特定值来改变LED状态。例如,将`brightness`文件的值设为0表示关闭LED,设为1表示开启LED。此外,还可以通过`trigger`文件选择不同...
EBZA 4203 4205
范例
程序(peta
linux
环境搭建)
9. **测试外设**:通过编写
简单
的
Linux
应用程序
或利用已有的
范例
程序,测试EBZA 4203/4205的各个外设功能。例如,可以使用I2C工具读取传感器数据,或者使用SPI驱动
控制
LED灯。 在压缩包文件"peta
linux
Base"中,可能...
驱动开发/核心开发
21,616
社区成员
21,711
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章