Skip to main content

x2600linux平台添加外置RTC

一 背景技术

x2600主控芯片因为没有内置RTC单元,所以客户可能需要外置RTC。本文介绍再x2600linux平台下添加外置RTC的方法。RTC驱动采样kernel中默认加载的方式。

二 硬件设计

使用x2600e Halley7开发板。相关电路设计如下:

1

外挂RTC型号为:PCF8563TS,接到i2c1(PC2~3)。

二 Iconfigtool配置

因为外置RTC用到了I2C1,并且RTC驱动在kernel中默认加载,那么需要在kernel中加载i2c驱动。所以应该取消Iconfigtool的i2c配置,以免内核中重复加载。

2

将此修改保存在配置文件:x2600e_vast_v20_nand_5.10_defconfig

3

编译:

zxy@vb:~/job/linux/x2600_sz/build$ make clean_apps
zxy@vb:~/job/linux/x2600_sz/build$ make x2600e_vast_v20_nand_5.10_defconfig
zxy@vb:~/job/linux/x2600_sz/build$ make

三 kernel配置

确定当前kernel的编译工具链:

zxy@vb:~/job/linux/x2600_sz/build$ cat configs/x2600e_vast_v20_nand_5.10_defconfig | grep toolchain
APP_br_toolchain_name=mips-linux-gnu-
APP_toolchain_dir=../tools/toolchains/mips-gcc720-glibc229
APP_uboot_toolchain_dir=../tools/toolchains/mips-gcc720-glibc229
zxy@vb:~/job/linux/x2600_sz/build$ cd ../tools/toolchains/mips-gcc720-glibc229/bin/
zxy@vb:~/job/linux/x2600_sz/tools/toolchains/mips-gcc720-glibc229/bin$ pwd
/home/zxy/job/linux/x2600_sz/tools/toolchains/mips-gcc720-glibc229/bin

可知当前kernel默认使用的编译工具链为:/home/zxy/job/linux/x2600_sz/tools/toolchains/mips-gcc720-glibc229/bin

确定当前kernel编译路径及配置:

zxy@vb:~/job/linux/x2600_sz/build$ cat configs/x2600e_vast_v20_nand_5.10_defconfig | grep kernel
APP_kernel_dir=../kernel/kernel
APP_kernel_config=x2600_vast_module_base_linux_sfc_nand_defconfig

设置环境变量:

zxy@vb:~/job/linux/x2600_sz/build$ cd ../kernel/kernel
zxy@vb:~/job/linux/x2600_sz/kernel/kernel$ export PATH=$PATH:/home/zxy/job/linux/x2600_sz/tools/toolchains/mips-gcc720-glibc229/bin
zxy@vb:~/job/linux/x2600_sz/kernel/kernel$ make x2600_vast_module_base_linux_sfc_nand_defconfig
#
# No change to .config
#
zxy@vb:~/job/linux/x2600_sz/kernel/kernel$ make menuconfig

kernel加载PCF8563 RTC驱动:

4

kernel中加载i2c驱动:

5

在build目录下执行make x2600e_vast_v20_nand_5.10_defconfig时会覆盖kernel的当前配置,所以需要保存kernel的当前配置,以免被不小心覆盖掉

zxy@vb:~/job/linux/x2600_sz/kernel/kernel$ cp .config arch/mips/configs/x2600_vast_module_base_linux_sfc_nand_defconfig

确定kernel当前加载的dts文件:

zxy@vb:~/job/linux/x2600_sz/kernel/kernel$ cat arch/mips/configs/x2600_vast_module_base_linux_sfc_nand_defconfig | grep dts
CONFIG_DT_X2600_MODULE_BASE_DTS_FILE="x2600_vast_module_base.dts"
zxy@vb:~/job/linux/x2600_sz/kernel/kernel$ find ./ -name x2600_vast_module_base.dts
./module_drivers/dts/x2600_vast_module_base.dts

可知当前kernel加载的dts文件为:kernel/kernel/module_drivers/dts/x2600_vast_module_base.dts

在此dts文件中添加i2c1的设备节点:

6

此处compatible = "nxp,pcf8563" 与drivers/rtc/rtc-pcf8563.c中可以匹配到,就能在kernel启动过程中调用此驱动文件。

7

重新编译kernel:

zxy@vb:~/job/linux/x2600_sz/build$ make kernel