当前位置: 技术问答>linux和unix
求助,arm linux 复位按键恢复默认配置的思路
来源: 互联网 发布时间:2017-05-08
本文导语: 我们的设备使用的是天嵌的S3C6410的核心板。现在有个用户需求:长按复位恢复到出厂的默认配置。(用户的配置存储在linux应用层) 1、长按复位键;(问了我们硬件的工程师,接84号引脚KEY_RST,如下图) 2、内核驱动通...
我们的设备使用的是天嵌的S3C6410的核心板。现在有个用户需求:长按复位恢复到出厂的默认配置。(用户的配置存储在linux应用层)
1、长按复位键;(问了我们硬件的工程师,接84号引脚KEY_RST,如下图)
2、内核驱动通知应用层;
3、应用层程序执行恢复默认配置。(我是做上层应用的,这个好做)
现在的问题是,内核怎么把长按复位键这个事件通知到应用层呢?如何在linux下查看这个复位键是否已经有驱动了?是/dev/下面的那个设备呢?
如果有这个复位键的驱动了,这个驱动是否有异步发送信号到应用层的机制了?也就是应用层可以用SIGIO触发回调函数处理的方式,大致如下:
fd = open( (char *)dev_file, O_RDWR | O_NOCTTY | O_NONBLOCK);
saio.sa_handler = signal_handler_IO;
sigemptyset ( &saio.sa_mask );
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction( SIGIO, &saio, NULL );
fcntl(fd, F_SETOWN, getpid());
fcntl(fd, F_SETFL, FASYNC);
刚刚接手这个项目,大家给点资料、思路、参考网址吧,谢谢了
1、长按复位键;(问了我们硬件的工程师,接84号引脚KEY_RST,如下图)
2、内核驱动通知应用层;
3、应用层程序执行恢复默认配置。(我是做上层应用的,这个好做)
现在的问题是,内核怎么把长按复位键这个事件通知到应用层呢?如何在linux下查看这个复位键是否已经有驱动了?是/dev/下面的那个设备呢?
如果有这个复位键的驱动了,这个驱动是否有异步发送信号到应用层的机制了?也就是应用层可以用SIGIO触发回调函数处理的方式,大致如下:
fd = open( (char *)dev_file, O_RDWR | O_NOCTTY | O_NONBLOCK);
saio.sa_handler = signal_handler_IO;
sigemptyset ( &saio.sa_mask );
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction( SIGIO, &saio, NULL );
fcntl(fd, F_SETOWN, getpid());
fcntl(fd, F_SETFL, FASYNC);
刚刚接手这个项目,大家给点资料、思路、参考网址吧,谢谢了
|
改一下reset的驱动,看看call_usermodehelper example
Kernel APIs, Part 1: Invoking user-space applications from the kernel
Implementation and use of the usermode-helper API
Kernel APIs, Part 1: Invoking user-space applications from the kernel
Implementation and use of the usermode-helper API