linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)

【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)

Author: chad
Mail: linczone@163.com
开发板:AT91SAM9260
内核版本:linux-2.6.30
解决办法如下:
第一步:修改board-sam9260ek.c文件
修改/arch/arm/match-at91/board-sam9260ek.c,添加如下代码:
linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
文章图片

ek_board_init函数中添加i2c设备:
添加at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
文章图片

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

linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
文章图片

第三步:配置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

【linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)】内核打印信息如下:
linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
文章图片

hwclock 测试如下:
linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
文章图片

    推荐阅读