关于LINUX某些驱动程序如GPIO编译的时候提示未定义的问题

53 篇文章 0 订阅

关于LINUX某些驱动程序如GPIO编译的时候提示未定义的问题


从网上下载了DS18B20的驱动,在编译的时候总是提示 S3C2410_GPF0,S3C2410_GPF0_INP,S3C2410_GPF0_OUTP未定义问题,在网上找了一些,原来是内核版本问题,  在2.6.29和2.6.32中定义不同,如下:  

在移植mini2440的驱动到2.6.31的时候,编译提示S3C2410_GPB5、S3C2410_GPB5_OUTPUT等类似的定义缺失。遂在内核中相关的部分arch/arm/mach-2410/include/mach中的头文件寻觅了一番,果然没有这些定义。而在2.6.29中是有这些定义的。

仔细看了一下,发现原来是新版本中采用了新的方式实现这两类定义。

1、引用端口的定义,旧版本直接通过S3C2410_GPmn来定义端口GPIOm的第n个引脚,比如GOIOB的第5个引脚引用为S3C2410_GPB5。在新版本中改为采用S3C2410_GPm(n)的方式,比如GPIOB的第5个引脚就改为S3C2410_GPB(5)。这里的S3C2410_GPm(n)函数在arch/arm/march-2410/include/mach/gpio-nrs.h中定义,共有S3C2410_GPA()~S3C2410_GPH()八组。

2、端口功能配置,比如端口的复用功能、输出或输入。在旧版本中采用的是”S3C2410_GPB_功能“的方式定义,比如S3C2410_GPB5_OUTP,直接把功能加在后面。而新版本中采用了一个宏函数S3C2410_gpio_cfgpin(端口引用, 功能),比如S3C2410_gpio_cfgpin(S3C2410_GPB(5),S3C2410_GPIO_OUTPUT)。关于端口功能的定义可以在arch/arm/march-2410/include/mach/regs-gpio.h中找到,复用功能的定义没有变化,增加了输入输出的定义S3C2410_GPIO_INPUT、S3C2410_GPIO_OUTPUT。以前的直接用宏定义配置,现在变成了需要用函数S3C2410_gpio_cfgpin来实现。这个函数的原型参见arch/arm/march-2410/include/mach/gpio-fns.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值