Real Time Clock per Orange Pi Zero: differenze tra le versioni
Gvf (discussione | contributi) (* fix link) |
Gvf (discussione | contributi) (→Armbian: + Devuan e link) |
||
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 10: | Riga 10: | ||
===Armbian=== | ===Armbian=== | ||
Per i miei progetti utilizzo un Sistema operativo derivato da [[w:Armbian|Armbian]], la procedura è stata verificata utilizzando Armbian (versione | Per i miei progetti utilizzo un Sistema operativo derivato da [[w:Armbian|Armbian]], un mix fra Armbian e [[w:Devuan|Devuan]], la procedura è stata verificata utilizzando Armbian (versione 23.8.3 bookworm) | ||
===RTC=== | ===RTC=== | ||
Riga 38: | Riga 38: | ||
70: -- -- -- -- -- -- -- -- | 70: -- -- -- -- -- -- -- -- | ||
</pre> | </pre> | ||
* per compilare ed aggiungere gli overlay è necessario installare il pacchetto armbian-bsp-cli-orangepizero | |||
{{Codice|apt-get install armbian-bsp-cli-orangepizero|user=root}} | |||
* compilare ed aggiungere alla configurazione i seguenti overlay: | * compilare ed aggiungere alla configurazione i seguenti overlay: | ||
:per rendere disponibile il modulo collegato a I²C0 ([[Media:rtc0-i2c0-ds3231.dts|download file ''rtc0-i2c0-ds3231.dts'']]) | :per rendere disponibile il modulo collegato a I²C0 ([[Media:rtc0-i2c0-ds3231.dts|download file ''rtc0-i2c0-ds3231.dts'']]) | ||
Riga 76: | Riga 78: | ||
}; | }; | ||
</pre> | </pre> | ||
: | : download: | ||
{{Codice|wget {{filepath:rtc0-i2c0-ds3231.dts|nowiki}}|user=root}} | |||
: attivazione: | |||
{{Codice|armbian-add-overlay rtc0-i2c0-ds3231.dts|user=root}} | {{Codice|armbian-add-overlay rtc0-i2c0-ds3231.dts|user=root}} | ||
: se invece il RTC è collegato al bus I²C1 va utilizzato ([[Media:rtc0-i2c1-ds3231.dts|download file ''rtc0-i2c1-ds3231.dts'']]) | {{Colored box|title=Alternativa su I²C0|content= | ||
: se invece il RTC è collegato al bus I²C1 va utilizzato ([[Media:rtc0-i2c1-ds3231.dts|download file ''rtc0-i2c1-ds3231.dts'']]) analogo al precedente ma col path per la seconda interfaccia | |||
: download: | |||
{{Codice|wget {{filepath:rtc0-i2c1-ds3231.dts|nowiki}}|user=root}} | |||
: da attivare col comando: | : da attivare col comando: | ||
{{Codice|armbian-add-overlay rtc0-i2c1-ds3231.dts|user=root}} | {{Codice|armbian-add-overlay rtc0-i2c1-ds3231.dts|user=root}} | ||
}} | |||
:per spostare l'RTC del SoC da ''/dev/rtc0'' a ''/dev/rtc1'' ([[Media:rtc1-soc.dts|download file ''rtc1-soc.dts'']]) | :per spostare l'RTC del SoC da ''/dev/rtc0'' a ''/dev/rtc1'' ([[Media:rtc1-soc.dts|download file ''rtc1-soc.dts'']]) | ||
<pre> | <pre> | ||
Riga 109: | Riga 117: | ||
}; | }; | ||
</pre> | </pre> | ||
: | : download: | ||
{{Codice|wget {{filepath:rtc1-soc.dts|nowiki}}|user=root}} | |||
: attivazione: | |||
{{Codice|armbian-add-overlay rtc1-soc.dts|user=root}} | {{Codice|armbian-add-overlay rtc1-soc.dts|user=root}} | ||
* riavviare il sistema | * riavviare il sistema |
Versione attuale delle 14:33, 8 ott 2023
Il modulo Orange Pi Zero (OPI zero) non dispone di un Real Time Clock o RTC o, per essere più precisi, il SoC utilizzato lo fornirebbe solo che non è stato previsto il montaggio del relativo quarzo e della batteria tampone quindi la precisione è nulla e in caso di mancanza di alimentazione si azzera. Quindi direi la sua utilità è nulla. Fortunatamente esistono in commercio numerosi integrati che forniscono questa funzionalità con una connessione I²C. Sono anche facilmente reperibili dei moduli che possono venir collegati direttamente sul connettore di espansione dell'OPI Zero (o del Raspberry o di altri moduli simili).
Requisiti
- un SBC Orange Pi o Raspeberry Pi
- sistema operativo Armbian
- un modulo RTC compatibile
SBC
Al momento ho collaudato questa soluzione solo utilizzando un Orange Pi Zero. Teoricamente dovrebbe funzionare su tutti i moduli similari facendo attenzione a quale bus I²C rendono disponibile e utilizzando l'overlay adatto.
Armbian
Per i miei progetti utilizzo un Sistema operativo derivato da Armbian, un mix fra Armbian e Devuan, la procedura è stata verificata utilizzando Armbian (versione 23.8.3 bookworm)
RTC
Occorre fare attenzione a quale modulo si intende usare, alcuni richiedono alimentazione e segnali a 5V e potrebbero essere incompatibili con la scheda da voi utilizzata. Nel caso di Orange Pi Zero io utilizzo l'integrato DS3231 direttamente sul circuito o utilizzando uno dei moduli facilmente reperibili in rete.
Il DS1307 va alimentato a 5V e per essere utilizzato con L'IO a 3.3V richiede un adattatore di livello (puah)
Configurazione con Orange Pi Zero e DS3231
Dopo aver collegato il modulo prescelto è necessario:
- attivare l'interfaccia I²C (I2C0) usando armbian-config o editando il file /boot/armbianEnv.txt
- installare i tools I2C
apt-get install i2c-tools |
- verificare che il modulo venga visto correttamente all'indirizzo 68 (hex) del bus 0
i2cdetect -y 0 |
- il risultato dovrebbe essere simile a questo:
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- 4a -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
- per compilare ed aggiungere gli overlay è necessario installare il pacchetto armbian-bsp-cli-orangepizero
apt-get install armbian-bsp-cli-orangepizero |
- compilare ed aggiungere alla configurazione i seguenti overlay:
- per rendere disponibile il modulo collegato a I²C0 (download file rtc0-i2c0-ds3231.dts)
/dts-v1/; /plugin/; / { compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5"; /* * Aliases can be used to set the external RTC as rtc0. * Needs supplying the correct path to the I2C controller RTC is connected to, * this example is for I2C0 on H2+ (TWI0 on PA11/PA12). * NOTE: setting time at boot by the kernel * may not work in some cases if the external RTC module is loaded too late */ fragment@0 { target-path = "/aliases"; __overlay__ { rtc0 = "/soc/i2c@1c2ac00/ds3231@68"; }; }; fragment@1 { target = <&i2c0>; __overlay__ { #address-cells = <1>; #size-cells = <0>; ds3231@68 { compatible = "dallas,ds3232"; reg = <0x68>; status = "okay"; }; }; }; };
- download:
wget https://cantina.gvf.ve.it/images/4/47/rtc0-i2c0-ds3231.dts |
- attivazione:
armbian-add-overlay rtc0-i2c0-ds3231.dts |
- se invece il RTC è collegato al bus I²C1 va utilizzato (download file rtc0-i2c1-ds3231.dts) analogo al precedente ma col path per la seconda interfaccia
- download:
wget https://cantina.gvf.ve.it/images/7/77/rtc0-i2c1-ds3231.dts |
- da attivare col comando:
armbian-add-overlay rtc0-i2c1-ds3231.dts |
- per spostare l'RTC del SoC da /dev/rtc0 a /dev/rtc1 (download file rtc1-soc.dts)
/dts-v1/; /plugin/; / { compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5"; /* * Aliases can be used to set the internal RTC as rtc1. */ fragment@0 { target-path = "/aliases"; __overlay__ { rtc1 = "/soc/rtc@1f00000"; }; }; fragment@1 { target = <&rtc>; __overlay__ { rtc@1f00000 { status = "disabled"; }; }; }; };
- download:
wget https://cantina.gvf.ve.it/images/a/a5/rtc1-soc.dts |
- attivazione:
armbian-add-overlay rtc1-soc.dts |
- riavviare il sistema
reboot |
- verificare che siano disponibili entrambi gli RTC
ls /dev/rtc* |
- il risultato dovrebbe essere qualcosa del genere:
lrwxrwxrwx 1 root root 4 18-12-2022 11:26:08 /dev/rtc -> rtc0 crw------- 1 root root 253, 0 18-12-2022 11:26:08 /dev/rtc0 crw------- 1 root root 253, 0 18-12-2022 11:26:08 /dev/rtc1
- facoltativamente sui può eliminare il programma fake-hwclock
apt-get purge fake-hwclock |
Fonti
- https://forum.armbian.com/topic/4074-real-time-clock-ds3231/page/2/
- https://github.com/armbian/sunxi-DT-overlays/blob/master/examples/i2c-ds1307.dts
- https://github.com/armbian/sunxi-DT-overlays/blob/master/sun8i-h3/sun8i-h3-i2c0.dts
- https://github.com/armbian/sunxi-DT-overlays/blob/master/sun8i-h3/sun8i-h3-i2c1.dts