《ARM Linux开发-warewin 2G/3G无线传输(DTU)和路由器—笔记》
1、硬件要求
(1)AT91SAM9260平台
(2)时钟芯片:Rx8025 SA/NB
(3)接口:通过I2C总线读取,两条总线为PA23、PA24。
2、配置内核
进入内核根目录下,运行配置菜单。
#make menuconfig
(1)选中I2C
Device Drivers --->
I2C suport --->
I2C Hardware Bus support--->
<*> GPIO-based bitbanging I2C
选中以下RTC相关的选项
Device Drivers --->
Real Time Clock --->
图3.1 RTC相关选项图
选中 Epson RX-8025SA/NB
Device Drivers --->
Real Time Clock --->
Epson Rx-8025SA/NB
注意:不可以选上AT91 SAM9x/AT91 CAP9,否则使用的是内部时钟。
图3.2 内部时钟选项图
3、添加设备注册
在内核中的/arch/arm/mach-at91/board-sam9260ek.c文件中添加以下红色字体语句:
static struct i2c_board_info __initdata ek_i2c_devices[] = {
{
I2C_BOARD_INFO("24c512", 0x50),
.platform_data = &at24c512,
},
/* more devices can be added using expansion connectors */
/* Added for R8025 rtc 20120914 */
{
I2C_BOARD_INFO("rx8025", 0x32),
}
};
4、创建设备节点
在根文件系统/dev目录下执行:
# mknod rtc c 10 135
重新编译内核及根文件系统下载到开发板,查看启动信息,如下图所示:
图3.3 硬件时钟启动信息图
5、设置RTC时间及系统时间
开发板进入系统后,在终端执行以下命令:
# date 得到系统当前时间
Thu Jan 1 00:00:13 (null) 1970
# hwclock 得硬件时钟当前时间
hwclock: RTC_RD_TIME: Invalid or incomplete multibyte or wide character
# date -s "2012-09-17 10:40:40" 设置系统时间为当前时间
Mon Sep 17 10:40:40:40 (null) 2012
# date
Mon Sep 17 10:40:40:42 (null) 2012
# hwclock -w 使用硬件时钟与系统时间同步
# hwclock
Mon Sep 17 10:40:40:53 2012 0.000000 seconds
开发板断电一段时间后再次加电启动开发板,进入系统后再使用hwclock命令查看硬件时钟睥当前是否为当前时间。