Дождался, наконец MOD-RTC из Olimex. Вставил в него батарейку, вставил его самого в UEXT1, включил питание… а счастья нет
Нет даже никаких следов его работы… Я правильно понимаю, что дело в отсутсви драйверов? Если да, то каких, и где их взять?
Если нет, то в чем может быть причина?
И, если дело пойдет к пересборке ядра, добавьте туда поддержку PCF8563 (из MOD-RTC).
Сейчас в /proc/config.gz видно, что # CONFIG_RTC_DRV_PCF8563 is not set
i2c - это не plug&play. Для того, чтобы работать с девайсом, даже если для него есть драйвера в ядре, надо добавить его описание в device tree. У нас в вики про это есть (искать по device tree), но это не самая простая процедура.
В Wiren Board Smart Home и так есть встроенный RTC, даже батарейка на плате стоит. Поддержка в софте тривиальная, добавил в wb-utils (вы похоже первый из частных клиентов, которому RTC понадобился).
Если всё ок, то положу в репозиторий. Часы должны считываться из RTC автоматически при загрузке. Скрипт умышленно запускается после ntp, так что если у вас есть интернет, то время будет браться оттуда.
Да, до device tree я уже дошёл, и обнаружил, что там (по крайней мере в той версии, что лежит здесь: https://github.com/contactless/linux/blob/v3.13-imxv5-x0.1/arch/arm/boot/dts/imx23-wirenboard32.dts ) поддержка аппаратного i2c вообще выключена. По крайней мере именно так я могу трактовать закомменированный кусок описания, снабженный ремаркой “Uncomment no enable hardware i2c”.
Попытался пересобрать дерево, но на последнем этапе (при запуске dtc) получил подозрительную диагностику:
DTC: dts->dtb on file "-"
Warning (reg_format): "reg" property in /i2c2@0/rtc@6f has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Warning (reg_format): "reg" property in /i2c2@0/eeprom@57 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Warning (avoid_default_addr_size): Relying on default #address-cells value for /i2c2@0/rtc@6f
Warning (avoid_default_addr_size): Relying on default #size-cells value for /i2c2@0/rtc@6f
Warning (avoid_default_addr_size): Relying on default #address-cells value for /i2c2@0/eeprom@57
Warning (avoid_default_addr_size): Relying on default #size-cells value for /i2c2@0/eeprom@57
Смысла этих предупреждений я до конца не понимаю, и так как к прибору не было физического доступа, заливать в него результат компиляции пока не рискнул…
ags, я не возьмусь утверждать это однозначно, поскольку для меня все эти танцы с бубном вокруг ядра, драйверов, дерева устройств и прочего - своего рода квест… Пока мне кажется, что сейчас в дереве железная поддержка i2c выключена, и чтобы ее включить, нужно в упомянутом выше imx23-wirenboard32.dts раскомментировать строки 297-303, перекомментировать строки 423/423, и пересобрать дерево, как написано тут: http://contactless.ru/wiki/index.php?title=Пересборка_Device_Tree
Я застрял на этапе сборки, так как испугался появившихся при этом warning-ов
hamster, честно говоря, я не понял.
Ругается оно на rtc и eeprom, которые в devicetree подлкючены к i2c. На их работоспособности это не сказывалось.
В WB SH 3.5 этот чип вообще не напаян, так что беспокоиться вообще не о чем.