Jelenleg egy Recomputer R1035 alatt kicseréltem a CM4 et CM5 re és ehhez is elkezdtem egy működőképes konfigurációt összerakni Yocto 5 alatt, viszont még az RTC valamiért nem működik, amiben szeretnék egy kis segítséget kérni. Arra prróbálok rájönni, hogy az I2C n található PFC8563 as RTC t miként lehetne életre kelteni. Amikor megpróbálom kiolvasni a regiszter értékét, ott valamiért nem ad vissza értelmes doglokat. Míg ez a CM4 alatt gyönyörűen működik. További infók a jelenlegi renszeremről alább megtalálhatóak. Merre lenne érdemes tovább nyomozni?
uname -a
Linux CE-CHANGEME 6.6.63-v8-16k #1 SMP PREEMPT Tue Sep 2 17:09:48 UTC 2025 aarch64 GNU/Linux
lsmod | grep -E '(rtc_pcf8563|i2c_dev)'
rtc_pcf8563 49152 0
i2c_dev 49152 0
ls /dev/i2c*
/dev/i2c-1 /dev/i2c-10 /dev/i2c-13 /dev/i2c-14
dmesg | grep -i rtc
[ 0.000000] Kernel command line: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave numa=fake=8 system_heap.max_order=0 smsc95xx.macaddr=2C:CF:67:C1:96:48 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 dwc_otg.lpm_enable=0 console=ttyAMA10,115200 rootfstype=ext4 rootwait root=/dev/mmcblk0p3 net.ifnames=0 loglevel=3 cgroup_enable=memory swapaccount=1 rpi_rtc.disable=1
[ 0.254891] rpi-rtc soc:rpi_rtc: registered as rtc0
[ 0.256274] rpi-rtc soc:rpi_rtc: setting system clock to 1970-01-01T02:06:17 UTC (7577)
[ 135.442093] rtc-pcf8563 1-0051: pcf8563_write_block_data: err=-121 addr=0e, data=03
[ 135.442099] rtc-pcf8563 1-0051: pcf8563_probe: write error
[ 135.442183] rtc-pcf8563: probe of 1-0051 failed with error -5
[ 135.448712] rtc-pcf8563 10-0051: pcf8563_write_block_data: err=-121 addr=0e, data=03
[ 135.448722] rtc-pcf8563 10-0051: pcf8563_probe: write error
[ 135.460632] rtc-pcf8563: probe of 10-0051 failed with error -5
i2cdump -y 10 0x51
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
cat /uboot/config.txt
dtoverlay=disable-rtc
dtoverlay=dwc2,dr_mode=host
dtoverlay=i2c-rtc,pcf8563
dtoverlay=recomputer-r1035-rtc
dtoverlay=vc4-kms-v3d
dtparam=i2c1=on
dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
gpu_mem=128
- 502 megtekintés
Hozzászólások
Bár pinout-ra majdnem azonos a két modul, a carrier board-oknál van eltérés és a cm-nek nincs is onboard setup-ja, ami alapján automatikusan el tudja dönteni. Így nem marad más, mint megmondani neki, szóval próbáld meg ezt:
device_tree=bcm2712-rpi-cm5-cm4io.dtb
vagy cm5 lite esetében:
device_tree=bcm2712-rpi-cm5l-cm4io.dtb
- A hozzászóláshoz be kell jelentkezni
Korábban már megpróbáltam eteket a device tree ket, de sajnos nem oldották meg az i2c problémáját.
- A hozzászóláshoz be kell jelentkezni
Csak tipp, megadni az I2C sebességét, pl.:
dtparam=i2c_baudrate=400000
- A hozzászóláshoz be kell jelentkezni
Az `i2cdetect` mit mond ezekre a buszokra?
- A hozzászóláshoz be kell jelentkezni
Az i2cdump az alábbiakat adja vissza.
i2cdetect -l
i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-10 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-13 i2c 107d508200.i2c I2C adapter
i2c-14 i2c 107d508280.i2c I2C adapter
i2cdetect -F 1
Functionalities implemented by /dev/i2c-1:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call no
SMBus Block Write yes
SMBus Block Read yes
SMBus Block Process Call no
SMBus PEC no
I2C Block Write yes
I2C Block Read yes
i2cdetect -F 10
Functionalities implemented by /dev/i2c-10:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call no
SMBus Block Write yes
SMBus Block Read yes
SMBus Block Process Call no
SMBus PEC no
I2C Block Write yes
I2C Block Read yes
i2cdetect -F 13
Functionalities implemented by /dev/i2c-13:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read no
SMBus Block Process Call no
SMBus PEC yes
I2C Block Write yes
I2C Block Read yesi2cdetect -F 14
Functionalities implemented by /dev/i2c-14:
I2C yes
SMBus Quick Command yes
SMBus Send Byte yes
SMBus Receive Byte yes
SMBus Write Byte yes
SMBus Read Byte yes
SMBus Write Word yes
SMBus Read Word yes
SMBus Process Call yes
SMBus Block Write yes
SMBus Block Read no
SMBus Block Process Call no
SMBus PEC yes
I2C Block Write yes
I2C Block Read yes
- A hozzászóláshoz be kell jelentkezni
Es csak ugy siman? Azaz milyen slave address-eket lat? Latja azt amit latnia kell (0x51)? Valami ilyesmi:
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 04 05 06 07 -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- UU -- -- -- -- UU --
Szerk: a sima szam az annyit jelent hogy rajta van a buszon (az adott slave address-re van ACK), az UU az az hogy egy driver mar korabban lefoglalta ezt a slave address-t (igy a scanning-bol kimarad). Ezutobbi nem feltetlen jelenti azt hogy minden oke az adott eszkozzel, de azert elegge eselyes hogy ez az adott driver az adott slave address-en logo eszkozt sikeresen "leprobalta".
- A hozzászóláshoz be kell jelentkezni
Sajnos akármelyik i2c t próbálom kiolvasni, midnegyikre hasonló a kimenet. Elémletileg a cm4 nél az 6 os, míg a cm5 alatt 3 as i2c alatt kellene lennie ennek az rtc nek. Készítettem hozzá egy frissített drivert, amit betölt, de nem hajlandó működni vele.
i2cdump -y 3 0x51
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
Rtc driver
recomputer-r1035-rtc-new.dtbo
/dts-v1/;
/plugin/;/ {
compatible = "brcm,bcm2835";
};&i2c6 {
status = "okay";
clock-frequency = <100000>;
#address-cells = <1>;
#size-cells = <0>;pcf8563@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
Bootloader log
5.35 MESS:00:00:05.352180:0: Loaded overlay 'recomputer-r1035-rtc'
- A hozzászóláshoz be kell jelentkezni
Az okes, de ez a dump a sok XX-szel nekem ugy nez ki mintha maga a slave nem lenne ott. Illetve az is kerdes hogyha az adott slave foglat (UU, ld. fentebb) akkor a dump megy-e es/vagy hogy reagal ra. Szoval ezt erdemes szerintem igy vegignyomozgatnod.
Ilyesmit is kiprobalnek hogy ideiglenesen kiszedni a DT-bol ezt a slave-t hogy veletlenul se huzzon be semmi modult, es ugy lecsekkolni (i2cdetect, i2cdump kezzel, stb). Vagy ha mar bent van a modul akkor azt is ki lehet szedni (rmmod), es akkor ugy.
- A hozzászóláshoz be kell jelentkezni
Sikerült megoldanom a problémát. :) A hiányzó i2c3-pi5 fájl pótlása után már szépen le tudtam kérdenzni a regisztert. Utána módosítottam és újra forgattam a gyári drivert, melynek eredményeképpen megjelent a rendszerben rtc1 ként a pcf8563. Viszont sikított, hogy a battery low és nem engedte lekérdezni a pontos időt, amit beállítva ismét működött tovább. Egyedül még egy plusz driver kellett, ami letiltja az cm5 gyári óráját, hogy az akkumulátorral szereltet használja a rendszer alapértelmezetten.
- A hozzászóláshoz be kell jelentkezni