如题,先上实现效果:
我板子上跑的是ubuntu 14.04系统。
查看下RTC硬件时钟的时间,如果与当前系统时间不符,那么将系统时间同步到RTC硬件时钟即可:

给硬件时钟写入定时开机时间:

on_off 是一个简单的C程序,负责从节点/dev/alarm 给硬件时钟写入定时开机时间。
可以查看一下内核打印信息,看一下开机时间是否已经写进去:

如果出现上面信息,就说明开机时间已经顺利写进去,关机,然后静静等待,到时间后系统会自动启动,完美~。
接下来讲下实现方法,主要修改内核的两个个文件即可。ubuntu14.04 使用的内核版本跟Android 4.4的内核版本基本一致,可以利用我们的Android 4.4 SDK的内核来进行修改和编译。
首先需要修改:
kernel/drivers/rtc/rtc-HYM8563.c

接下来修改:
kernel/drivers/staging/android/alarm-dev.c

以上是我从整理好的patch里面搬下来的,有点乱。大家改的时候耐心点,别看错:P~以上两个文件修改完后,编译好内核,并烧到板子上即可。
修改好的这两个文件我已上传。
然后,就可以写个简单的C程序,来验证下修改是否有效啦。
以下为代码的部分内容,其余大家可以自行发挥编辑,我就不贴上来了:

以上为Firefly-rk3288定时开机的基本实现!:victory:,如有不妥的地方,欢迎大家来吐槽:lol。
有定时开机就有定时关机,至于定时关机,比较简单的思路是写个程序循环判定设置的时间是否与当前时间相等,相等就调用系统指令poweroff关机即可。大家可以试试~
原作者:Livvol