Para que nuestro RTC funcione tendremos que parchear las fuentes del kernel para añadir soporte para PCF2127A y compilar con soporte para I2C, yo recomiendo seguir los pasos explicados en este artículo anterior donde se compilaba el kernel en un pc basado en x86 ya que será mucho mas rápido que compilar el kernel en la propia rasp.
Procedemos con el parcheo de las fuentes:
wget https://github.com/afterthoughtsoftware/linux/commit/fd5ff2d88f470ed70ff58393eee61110b181816a.patch
patch -p1 < fd5ff2d88f470ed70ff58393eee61110b181816a.patch
Compilamos el kernel:
Device Drivers -> I2C support -> I2C Hardware Bus support -> BCM2708 BSC
Device Drivers -> Real Time Clock -> Philips PCF2127A (only I2C)
Debemos indicarle que dirección dentro del bus I2C tiene en RTC(0x51) y que módulo debe gestionarlo:
Asignamos la fecha manualmente y la transferimos al RTC:
hwclock -w
Si queremos leer la fecha guardad en el RTC basta con:
Si queremos leer la fecha del RTC y configurar el SO:
Para que todo funcione correctamente el timezone debe estar configurado de forma correcta:
-
Gentoo:
cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime
echo “Europe/Madrid” > /etc/timezone -
Debian:
dpkg-reconfigure tzdata
En cada arranque leeremos la fecha del RTC y la configuraremos en el SO:
-
Gentoo:
vi /etc/local.d/RTC.startecho pcf2127a 0x51 > /sys/class/i2c-adapter/i2c-1/new_device sleep 2 hwclock -s &
chmod 700 /etc/local.d/RTC.start -
Debian:
vi /etc/rc.localecho pcf2127a 0x51 > /sys/class/i2c-adapter/i2c-1/new_device sleep 2 hwclock -s &
Ahora aunque apaguemos la rasp y le quitemos la alimentación la fecha no se perderá a no ser que se agote la pila de botón del RTC.