DESK-MX8M-AN-0003: Add an external RTC to SBC ORCA

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box


200px-Emblem-important.svg.png

This application note has been validated using the kit version in the History table.

History[edit | edit source]

Version Date Development Kit version
4.0.0 Mar 2024 DESK-MX8M-L 4.0.0

Introduction[edit | edit source]

An external RTC device can be connected to ORCA SBC to keep date & time and synchronizing the system clock at boot time.

As an example, an easy - just ready - RTC small board can be bought from Amazon with the DS3231 RTC device.

DS3231 small board with CR2032 battery

Linux driver[edit | edit source]

DESK-MX8M-L 4.0.0 kernel has the related rtc-ds1307 driver module already built and available in the root file system image.

It is enough to connect the RTC board to an I2C: for the purposes of this AN, it is possible to use the GROOVE connector which has the four required signals available: SCL, SDA, VDD, GND (see the SBC schematics page).

Then, the driver has to be enabled in the device tree using the i2c6 interface available in the GROOVE connector:

/* groove connector */
&i2c6 {
        clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c6>;
        status = "okay";

        ds3231: ds3231@68 {
                compatible = "maxim,ds3231";
                reg = <0x68>;
                status = "okay";
        };
};

Accessing the rtc device[edit | edit source]

Setting the RTC device as rtc0 lets the system clock be synchronized. The related section can be added to the device tree as an alias:

    aliases {
            /* ds3231 is our default rtc dev (rtc0) */
            rtc0 = &ds3231;
            rtc1 = &snvs_rtc;
    };

The RTC device is available as /dev/rtc0 device and the related time can be read using the hwclock command:

root@123456789:~# dmesg | grep rtc0
[    6.949783] rtc-ds1307 5-0068: registered as rtc0
root@desk-mx8mp:~# hwclock -f /dev/rtc0
2024-03-06 16:18:28.182912+01:00
root@desk-mx8mp:~#

Now the date command shows the system clock synchronized at any reboot.

root@desk-mx8mp:~# date
Wed Mar  6 16:40:44 CET 2024
root@desk-mx8mp:~#