当前位置:首页 > 单片机 > 单片机
[导读]开发板:TQ2440内核版本:2.6.321. 硬件链接图 四个输入引脚: EINT0-----( GPF0 )----INPUT---K4 EINT2-----( GPF2 )----INPUT---K3 EINT4-----( GPF4 )----INPUT---K2 EINT1-----( GPF1 )----INPUT---K12. 相关的数

开发板:TQ2440

内核版本:2.6.32

1. 硬件链接图


四个输入引脚:

EINT0-----( GPF0 )----INPUT---K4

EINT2-----( GPF2 )----INPUT---K3

EINT4-----( GPF4 )----INPUT---K2

EINT1-----( GPF1 )----INPUT---K1

2. 相关的数据结构

移植所需要的数据结构位于include/linux/gpio_keys.h中。


#ifndef_GPIO_KEYS_H

#define_GPIO_KEYS_H

structgpio_keys_button{

/*Configurationparameters*/

intcode;/*inputeventcode(KEY_*,SW_*)*/

intgpio;

intactive_low;

char*desc;

inttype;/*inputeventtype(EV_KEY,EV_SW)*/

intwakeup;/*configurethebuttonasawake-upsource*/

intdebounce_interval;/*debounceticksintervalinmsecs*/

};

structgpio_keys_platform_data{

structgpio_keys_button*buttons;

intnbuttons;

unsignedintrep:1;/*enableinputsubsystemautorepeat*/

};

#endif


从名字上我们可以看出:gpio_keys_platform_data 结构体将作为平台设备的数据。


其中buttons字段指向gpio_keys_button结构体,nbuttons表示有多少个gpio_keys_button结构体。

每个gpio_keys_button结构体表示一个按键,在我的板子上,有四个按键,将会定义一个有4个元素的gpio_keys_button数组,buttons字段将指向该数组,同是,nubuttons字段将为4。

gpio_keys_button 结构体中,gpio字段表示按键所使用IO端口。desc字段为该按键的描述。debounce_interval字段表示软件去抖的时间,单位为ms。

type字段表示输入事件的类型。active_low表示低电平有效。开发板上的按键在按下时为低电平,松开时为高电平,active_low置0(不太确定)。


3. 移植代码

这里,我将所有代码均添加在arch/arm/mach-s3c2440/mach-smdk2440.c中。

3.1 添加头文件


#include//addedbyyj423forbuttonsdriver

#include//addedbyyj423forbuttonsdriver

#include//addedbyyj423forbuttonsdriver

3.2 添加gpio_keys_button和gpio_keys_platform_data结构体


/*buttonsdriver,addedbyyj423*/

staticstructgpio_keys_buttons3c_buttons[]=

{

{

.gpio=S3C2410_GPF(1),

.code=KEY_UP,

.desc="UP(K1)",

.active_low=0,

},

{

.gpio=S3C2410_GPF(4),

.code=KEY_DOWN,

.desc="DOWN(K2)",

.active_low=0,

},

{

.gpio=S3C2410_GPF(2),

.code=KEY_LEFT,

.desc="LEFT(K3)",

.active_low=0,

},

{

.gpio=S3C2410_GPF(0),

.code=KEY_RIGHT,

.desc="RIGHT(K4)",

.active_low=0,

},

};

staticstructgpio_keys_platform_databuttons_platdata=

{

.buttons=s3c_buttons,

.nbuttons=ARRAY_SIZE(s3c_buttons),

};


3. 3 将gpio_keys_platform_data添加到平台设备中


staticstructplatform_devices3c_device_buttons={

.name="gpio-keys",

.id=-1,

.num_resources=0,

.resource=NULL,

.dev={。

.platform_data=&buttons_platdata,

}

};


需要注意的是,根据platform总线的匹配函数,这里的name字段必须和文件drivers/input/keyboard/gpio_keys.c中的gpio_keys_device_driver.driver.name的值一致,即为gpio-keys。

3.4 将按键的平台设备注册到内核中

在smdk2440_devices数组中增加s3c_device_buttons,如下:


staticstructplatform_device*smdk2440_devices[]__initdata={

&s3c_device_usb,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&s3c_device_dm9000,//addedbyyj423

&s3c_device_ds18b20,//addedbyyj423

&s3c_device_buttons,//addedbyyj423

};


4. 配置内核

在添加完代码以后,开始配置内核。需要配置两个模块,在这里我将它们编译进了内核,你也可以选择编译为模块。




编译结束后,将内核烧入flash中,启动内核。如果你发现/dev/event0的存在,恭喜你,移植成功了。

5. 测试

测试程序如下:


#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

intmain(intargc,char**argv)

{

intfd,ret;

char*str;

structinput_eventbutton_event;

fd=open("/dev/event0",O_RDWR);

if(fd<0){

printf("openwrongn");

return-1;

}

while(1)

{

ret=read(fd,&button_event,sizeof(button_event));

if(ret

printf("incompletereadn");

return-1;

}

switch(button_event.type){

caseEV_KEY:

str = "key"

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭