嵌入式開發——rtc時鐘除錯筆記
前段時間在除錯AM335X的rtc時鐘功能,一開始是使用晶片內部的rtc時鐘模組,後來發現功耗有點高,轉而使用rtc時鐘晶片,型號為ds1672.。現在把兩者的除錯要點記錄下來,方便後續的查閱。
注:使用的linux核心版本為4.4.32
晶片內部RTC:
檢視官方的說明文件:http://processors.wiki.ti.com/index.php/AM335x_Schematic_Checklist#RTCrtc的模式應為RTC-only mode,引腳接法如下:
VDDS_RTC--------Always on RTC 1.8 V power supply(接電池轉換後的1.8V,持續供電VDD1V8_RTC)
CAP_VDD_RTC--------1 uF decoupling capacitor to VSS(接1uF電容到地)
RTC_KALDO_ENn--------VSS(接10k電阻到地)
RTC_PWRONRSTn--------1.8 V RTC power on reset(接電池轉換後的1.8V,保證不復位,VDD1V8_RTC)
PMIC_POWER_EN--------PMIC power enable input(接板子轉換後的1.8V,VDD1V8)
EXT_WAKEUP--------1.8 V wakeup event signal(接電池轉換後的1.8V,一直是喚醒狀態,VDD1V8_RTC)
核心的配置需選上CONFIG_RTC_DRV_OMAP這一欄,裝置樹下增加一個新的節點:
&rtc {
system-power-controller;
clocks = <&clk_32768_ck>;
clock-names = "ext-clk", "int-clk";
status = "okay";
};
使用外部的時鐘晶片(ds1672):
檢視核心的driver目錄,可以發現系統已經適配了ds1672這個i2c時鐘晶片,我們這裡只要配置正確了,就能正常使用它了。
配置方法如下:
1.去除裝置樹的rtc節點,在i2c0節點下增加ds1672子節點:
ds1672: [email protected] {
compatible = "ds1672";
reg = <0x68>;
};
2.核心配置引入<*> Dallas/Maxim DS1672
去掉omap-rtc驅動