【原创】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,添加如下代码:
【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)_第1张图片

ek_board_init函数中添加i2c设备:

添加at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)_第2张图片

第二步:增加RX8025文件及配置选项

参考修改linux-2.6.30/drivers/rtc/rtc-rx8581.c 增加rtc-rx8025.c。同时修改Kconfig文件与Makefile文件,将8025添加到对应文件中。
【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)_第3张图片

这里写图片描述

第三步:配置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 测试如下:
【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)_第4张图片

你可能感兴趣的:(linux,嵌入式)