【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)
Author: chad开发板:AT91SAM9260
Mail: linczone@163.com
内核版本: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
【linux|【原创】ARM LINUX 外部RTC实时时钟驱动移植(RX8025)】内核打印信息如下:
文章图片
hwclock 测试如下:
文章图片
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- 嵌入式-外设|DDR3基础详解
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)