
Author: chad
Mail: linczone@163.com
开发板: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。rx8025同时修改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 inteces ***
[*] /sys/class/rtc/rtcN (sysfs)
[*] /proc/driver/rtc (procfs for rtc0)
[*] /dev/rtcN (character devices)
[ ] RTC UIE emulation on dev intece
< > 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 测试如下:

本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/dianqi/article-36281-1.html
你是猪啊