GPIO Linux内核编程

一直从事Linux下的开发,大型并发网络通讯和应用服务等软件开发,原来也做过不少Linux内核方面的开发,比如,防火墙计费系统、VPN网络设备等。最近由于公司需要,接触了一些硬件方面的开发,感觉硬件开发其实也不是那么复杂,只要有芯片规范,读懂了就很轻松了。

我们要实践的是一个嵌入式系统硬件环境检测的抽象平台,这个硬件抽象平台是为了上层应用更好更方便地编程。如图:

 

关于设计方面不想太多描述,这里说一些关键技术点。

GPIO是一种通用I/O协议,在读写的时候,需要对特定寄存器进行一些设置,在规范描述的时候,一般会说GPIO 0-12,GPIO 38-43等说法,GPIO和一般的寄存器读写很不一样,因此它是两个号码控制一个状态。

GPIO的一般读写顺序为:

1、首先设置需要进行操作的GPIO范围;

2、在读/写操作前,对GPIO的选择寄存器设置为1/0;

3、读/写寄存器(基地址+偏移)。

由于我进行开发的是Intel公司生产的6300ESB芯片,这个芯片上支持很多PCI设备,我要访问控制的设备位于LPC里,我通过PCI查找函数,获得访问PCI卡的地址,然后再获取GPIO的基地址,其它就很简单了。

CFLAGS += $(shell [ -f /lib/modules/$(shell uname -r)/build/include/linux/modversions.h ] && echo -DEXPORT_SYMTAB -DMODVERSIONS -include /lib/modules/$(shell uname -r)/build/include/linux/modversions.h )

如果不加入上述语句,在执行“depmod -a”命令时,会出现以下错误:
depmod: *** Unresolved symbols in /lib/modules/2.4.21-166-default/misc/xxxxx.o

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值