从原理图可知,yy3568外挂一个RTC芯片AT8563,挂在I2C5上,中断脚位GPIO0_D3,却可输出 32.768kHz的时钟信号。
AT8563是一种实时时钟芯片,用于提供精确的时间和日期信息。它是一种低功耗设备,常用于嵌入式系统、电子设备和计算机等领域。AT8563可以通过I2C接口与主控芯片或微处理器连接,通过内部晶体振荡器来追踪时间,并提供精确的时钟功能。它通常用于记录事件时间戳、计时、闹钟功能和系统电源管理等应用场景。
AT8563和hym8563是完全可以替换的,所以我们在适配驱动的时候,直接使用hym8563驱动
&i2c5 {
status = "okay";
hym8563: hym8563@51 {
compatible = "haoyu,hym8563";
reg = <0x51>;
pinctrl-names = "default";
pinctrl-0 = <&rtc_int>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
};
};
通过menuconfig打开CONFIG_RTC_DRV_HYM8563
以上配置完成之后,就可以在/sys/class/rtc/ 下看到rtcN的。
AT8563注册在RTC1。
通过hwclock -r -f /dev/rtc1 读取rtc时钟
如果芯片没有同步时间时,驱动会提示:没有可用的有效时钟/日历值
通过hwclock -w -f /dev/rtc1 同步时间并写入到RTC中
再次通过hwclock -r -f /dev/rtc1 读取rtc时钟,就有对应时钟
Linux内核的 led 子系统主要功能:
YY3568上接了两个蓝色LED灯,分别为GPIO3_A4和GPIO02_B2,如下图所示:
我们将两个蓝色LED等命名为:blue1 和 blue2。
增加对应LED灯节点,compatible为gpio-leds。节点中挂载两个LED,lable分别为blue1 和 blue2:
gpio_leds: gpio-leds {
compatible = "gpio-leds";
led@1 {
gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
label = "blue1"; // Blue1
retain-state-suspended;
};
led@2 {
gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>;
label = "blue2"; // Blue2
retain-state-suspended;
};
};
增加对应LED灯引脚初始化配置:
leds_gpio: leds-gpio {
rockchip,pins =
<3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
<2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
};
配置选项位置如下:
│ Location: │
│ -> Device Drivers │
│ -> LED Support (NEW_LEDS [=y])
以上操作完,编译烧录,就可以在/sys/class/leds下产生对应文件节点:
echo 255 > /sys/class/leds/blue1/brightness
echo 255 > /sys/class/leds/blue1/brightness