新聞速報

        

2014年3月3日 星期一

嵌入式程式開發 S3C2410 RTC Driver 問題

在開機畫面出現 can"t open "/dev/misc/rtc" .....
 
解法:
在 Linux 系統中的時鐘,可分為硬體時鐘及系統時鐘。硬體時鐘可以依賴輔助電源(電池)持續累計時間;而系統時鐘則每次重新啟動就會重置,所以一般 Linux 在開機時會做個和硬體時鐘同步的動作(hwclock -s),但是在 Embedded Linux 中是要手動操作的。
 
首先必須正確驅動 S3C2410 的 RTC(Real-Time Clock) 模組才能使用 hwclock 指令,Linux 2.6.10 版本之後應該都有內建驅動,不過在 2.6.14.7 版本中有些問題,會跑出 Segmentation fault 訊息,需要作以下修改。
 
1. 重新編譯 Kernel 選項 
# make menuconfig
在 Device Drivers ---> Character devices --->
< > Enhanced Real Time Clock Support (不要選擇)
[*] S3C2410 RTC Driver
 
2. 修改 arch/arm/mach-s3c2410/mach-smdk2410.c
在 struct platform_device *smdk2410_devices[] 當中加入 &s3c_device_rtc,,這個結構已經在 arch/arm/mach-s3c2410/devs.c 定義,應該是忘記加了,修改好後再編譯即完成。
 
3. 確認驅動載入
Driver 有正確載入開機應該會有
S3C2410 RTC, (c) 2004 Simtec Electronics
s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
並且有 /dev/misc/rtc 裝置
 
4. 使用 hwclock
先利用 date 指令調整好系統時間,再用 hwclock -w 寫入硬體時鐘,往後開機只要自動執行用 hwclock -s 即可抓到正確的時間囉!
 

沒有留言:

張貼留言