【原創】ARM LINUX 外部RTC實時時鐘驅動移植(RX8025)

【原創】ARM LINUX 外部RTC實時時鐘驅動移植(RX8025)

Author: chad
Mail: [email protected]

開發板:AT91SAM9260
內核版本:linux-2.6.30

解決辦法如下:
第一步:修改board-sam9260ek.c文件

修改/arch/arm/match-at91/board-sam9260ek.c,添加如下代碼:
這裏寫圖片描述

ek_board_init函數中添加i2c設備:

添加at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
這裏寫圖片描述

第二步:增加RX8025文件及配置選項

參考修改linux-2.6.30/drivers/rtc/rtc-rx8581.c 增加rtc-rx8025.c。同時修改Kconfig文件與Makefile文件,將8025添加到對應文件中。
這裏寫圖片描述

這裏寫圖片描述

第三步:配置menuconfig

AT91SAM9260使用的是GPIO模擬I2C接口,
在devicedriver中選中【*】I2C support->I2C Hardware Bus Support->GPIO-based bitbanging I2C

在devicedriver中選中Real time clock


--- Real Time Clock       
[*]   Set system time from RTC on startup and resume 
(rtc0)  RTC used to set the system time          
[ ]   RTC debug support  
*** RTC interfaces ***     
[*]   /sys/class/rtc/rtcN (sysfs) 
[*]   /proc/driver/rtc (procfs for rtc0) 
[*]   /dev/rtcN (character devices)  
[ ]     RTC UIE emulation on dev interface    
< >   Test driver/device      
*** I2C RTC drivers ***     
。。。。。。。。。      
<*>   Epson RX-8025 

最後的on-CPU RTC drivers選項要取消!!!

*** on-CPU RTC drivers ***       
< >   AT91SAM9x/AT91CAP9

第四步:修改驅動程序

參考rtc-rx8581.c 與rx8025的數據手冊編寫 8025的驅動文件rtc-rx8025.c。

驅動源文件下載點->>>這裏
需要注意的是:

/arch/arm/match-at91/board-sam9260ek.c文件中的 :

static struct i2c_board_info __initdata ek_i2c_devices[] = {
     /* more devices can be added using expansion connectors */
      {
          I2C_BOARD_INFO("rx8025", 0x32),
      }
 };

要與/drivers/rtc/rtc-rx8025.c中的設備名一致!

static const struct i2c_device_id rx8025_id[] = {
    { "rx8025", 0 }
};

第五步:測試

更新系統內核進行測試:

#uboot命令如下:
tftp 0x22000000 uImage
nand erase 0xa0000 0x2a0000
bootm

內核打印信息如下:
這裏寫圖片描述

hwclock 測試如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章