天天看點

Linux下RTC驅動的加載引言i2c驅動使能與驗證rtc(pcf8563)驅動加載rtc(pcf8563)驅動驗證指令執行個體:

pcf8563驅動的加載

  • 引言
  • i2c驅動使能與驗證
  • rtc(pcf8563)驅動加載
  • rtc(pcf8563)驅動驗證指令
  • 執行個體:

引言

  rtc驅動晶片為嵌入式linux系統提供系統時間,通過I2C接口挂載在開發闆裝置樹的i2c節點上。本文簡述pcf8563驅動的加載過程,其餘rtc晶片的加載過程類似,并驗證了rtc(pcf8563)驅動的加載。

waring:

  rtc驅動本質上是一個字元裝置驅動,隻不過Linux核心在通用的字元裝置驅動接口上引入了RTC驅動架構(字元裝置驅動的封裝)。常用rtc晶片驅動已經存放在kerner/driver/rtc/ 下,編譯時通過make menuconfig 使能即可使用,其裝置樹下節點的配置方式可參考以下目錄檔案kernel/Documentation/devicetree/bindings/rtc/

i2c驅動使能與驗證

  由于rtc晶片常使用i2c接口,故在挂載前,需先驗證i2c驅動是否能成功加載,使能裝置樹下的i2c節點,系統加載後可通過如下指令檢視i2c節點的使能情況:

# 1. 查詢可用的i2c裝置
# i2cdetect -l
i2c-3   i2c             i2c3                                    I2C adapter

# 2. 檢視i2c總線下挂載的裝置,就算驅動rtc驅動沒使能,隻要在裝置樹下添加了該節點,即可查詢
 ls /sys/bus/i2c/
 
# 3. 檢視pcf8563的加載
# cat /sys//bus/i2c/devices/2-0051/name
pcf8563
           

waring:

  i2c-dev.c與SPI驅動中spidev.c類似,是核心層為使用者空間提供的一條讀寫i2c總線資料的标準接口,其應用空間的程式設計接口可參考核心文檔或者i2c-tools工具中的源碼程式。

// 核心中i2c裝置傳輸資料的接口主要有以下三個:
int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)

int i2c_master_send(const struct i2c_client *client, const char *buf, int count)

int i2c_master_recv(const struct i2c_client *client, char *buf, int count)
           

rtc(pcf8563)驅動加載

1. 部分晶片内部還有rtc,故需先通過 make menuconfig關閉晶片内部的rtc驅動;

2. 往裝置樹i2c節點中添加rtc節點

&i2c3 {
	status = "okay";
	
	pcf8563: [email protected] {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
		#clock-cells = <0>;
	}
};
           

3. 通過 make menuconfig使能pcf8563晶片驅動;

Linux下RTC驅動的加載引言i2c驅動使能與驗證rtc(pcf8563)驅動加載rtc(pcf8563)驅動驗證指令執行個體:

rtc(pcf8563)驅動驗證指令

1. 指令簡介

# 顯示目前的系統時間
date   
# 修改目前系統時間,為:date -s "2010-04-05 14:31:00"

# 顯示目前硬體 rtc的時間(預設為rtc0)
hwclock
# hwclock -s 将硬體時間同步到系統時間
# hwclock -w 将系統時間同步到硬體時間
# hwclock -f /dev/rtc1 讀取指定硬體 rtc 的時間
           

2. 當通過hwclock -r 指令能夠成功讀取rtc時,表面rtc驅動已成功加載

3. date -s 設定系統時間

4. hwclock -w 将系統時間同步到硬體時間,重新開機後date檢視系統時間

waring:

rtc驅動沒有加載成功時:

# hwclock -r
hwclock: can't open '/dev/misc/rtc': No such file or directory
           

執行個體:

闆子上電
#date -s "2010-04-05 14:31:00"	 //設定系統時鐘 2010 年 04 月 5 日 14:31:00 CST
#hwclock -w //将系統時鐘寫入硬體時鐘
#hwclock -r //看時間是否在變化
如果沒有出錯,就已經把2010 年 04 月 5 日 14:31:00 CST 寫入RTC chip了

為了使系統時間和RTC時間同步,可以在初始化檔案中添加指令
hwclock –s
使每次開機時讀取RTC時間,并同步給系統時間。
在根檔案系統:usr/etc/rc.local中添加
/sbin/hwclock -s

斷電
等2分鐘在上電
#hwclock -r //看時間是否同步,即使與2分鐘後的時間相同
           

繼續閱讀