Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Отладочные платы » SK-A40i
SK-A40i-NANO-2E , armbian, RTC
Vladimir8246
Добавлено 24.01.2024 21:43
0
Сообщение: 1
Vladimir8246
0

Пункты: 403
Регистрация: 02.11.2023
Прошивка sk_min_defconfig + armbian bullseye
Всё собрано, прошито, работает.
Потребовалось использовать внешний rtc. Подключили pcf8563 на на i2c-2, поставил i2c-tools, адрес 0x51 появился.
после команды:
echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-2/new_device
вроде появляется само новое устройство в /sys/class/... , но в /dev/ устройство rtc1 не добавляется.. погуглил, вроде нужны модули i2c-dev и rtc-pcf8563. i2c-dev даже вроде грузится через modprobe, наверно есть в ядре. А на rtc-pcf8563 ругается при попытке загрузить. Вопрос, как его собрать и что нужно для этого модуля ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.01.2024 02:01 Сообщение: 2
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Вопрос, как его собрать и что нужно для этого модуля ?


включить модуль в ядро из конфигуратора buildroot

make linux-menuconfig

Device Drivers --->
[*] Real Time Clock --->
<*> Philips PCF8563/Epson RTC8564

добавить в DTS своей платы
buildroot-2022.08.4-sk-a40i/output/build/linux-custom/arch/arm/boot/dts/sun8i-a40i-nano2e-none-sk.dts

описание по примеру

https://elixir.bootlin.com/linux/v6.1.74/source/arch/arm/boot/dts/sun6i-a31-hummingbird.dts#L183

Цитата

&i2c3 {
status = "okay";
pcf8563: rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};

};


собрать ядро и dtb

make

скопировать на первый раздел emmc полученное ядро и dtb - zImage, sun8i-a40i-sk.dtb из директории
buildroot-2022.08.4-sk-a40i/output/images
Спуститься к концу Подняться к началу
Персональная информация
Vladimir8246
Добавлено 01.02.2024 03:56 Сообщение: 3
Vladimir8246
0

Пункты: 403
Регистрация: 02.11.2023
Цитата
Цитата

Вопрос, как его собрать и что нужно для этого модуля ?


включить модуль в ядро из конфигуратора buildroot

make linux-menuconfig

Device Drivers --->
[*] Real Time Clock --->
<*> Philips PCF8563/Epson RTC8564

добавить в DTS своей платы
buildroot-2022.08.4-sk-a40i/output/build/linux-custom/arch/arm/boot/dts/sun8i-a40i-nano2e-none-sk.dts

описание по примеру

https://elixir.bootlin.com/linux/v6.1.74/source/arch/arm/boot/dts/sun6i-a31-hummingbird.dts#L183

Цитата

&i2c3 {
status = "okay";
pcf8563: rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};

};


собрать ядро и dtb

make

скопировать на первый раздел emmc полученное ядро и dtb - zImage, sun8i-a40i-sk.dtb из директории
buildroot-2022.08.4-sk-a40i/output/images


В процессоре есть встроенный RTC и после загрузки сим.ссылка /dev/rtc0 указывает как раз на него. А внешний rtc 8563 становится /dev/rtc1
Можно ли их поменять, чтоб 8563 стал rtc0, и система использовала его для чтения записи времени ? Или только руками, при загрузке считывать время скриптом, при синхронизации тоже скриптом сохранять ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.02.2024 10:39 Сообщение: 4
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

В процессоре есть встроенный RTC и после загрузки сим.ссылка /dev/rtc0 указывает как раз на него. А внешний rtc 8563 становится /dev/rtc1
Можно ли их поменять, чтоб 8563 стал rtc0, и система использовала его для чтения записи времени ?


можно указать чтобы ядро при старте брало время из rtc1 а не rtc0 - это в самом начале меню конфига ядра где вы включали драйвер своего rtc

Цитата

[*] Set system time from RTC on startup and resume
(rtc1) RTC used to set the system time
Спуститься к концу Подняться к началу
Персональная информация
Vladimir8246
Добавлено 15.02.2024 00:28 Сообщение: 5
Vladimir8246
0

Пункты: 403
Регистрация: 02.11.2023
Цитата
Цитата
Цитата

Вопрос, как его собрать и что нужно для этого модуля ?


включить модуль в ядро из конфигуратора buildroot

make linux-menuconfig

Device Drivers --->
[*] Real Time Clock --->
<*> Philips PCF8563/Epson RTC8564

добавить в DTS своей платы
buildroot-2022.08.4-sk-a40i/output/build/linux-custom/arch/arm/boot/dts/sun8i-a40i-nano2e-none-sk.dts

описание по примеру

https://elixir.bootlin.com/linux/v6.1.74/source/arch/arm/boot/dts/sun6i-a31-hummingbird.dts#L183

Цитата

&i2c3 {
status = "okay";
pcf8563: rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};

};


собрать ядро и dtb

make

скопировать на первый раздел emmc полученное ядро и dtb - zImage, sun8i-a40i-sk.dtb из директории
buildroot-2022.08.4-sk-a40i/output/images


В процессоре есть встроенный RTC и после загрузки сим.ссылка /dev/rtc0 указывает как раз на него. А внешний rtc 8563 становится /dev/rtc1
Можно ли их поменять, чтоб 8563 стал rtc0, и система использовала его для чтения записи времени ? Или только руками, при загрузке считывать время скриптом, при синхронизации тоже скриптом сохранять ?



Попробовал проделать подключение rtc подобным образом к плате SK-A40i-SODIMM. Нам нужно подключить к этому устройству этот же rtc и eeprom (на плате NANO2E это работает)
Правил dts файл
buildroot-2022.08.4-sk-a40i/output/build/linux-custom/arch/arm/boot/dts/sun8i-a40i-sodimm-hdmi-sk.dts :
&i2c3 {
status = "okay";
pcf8563: rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
Пересобрал, перепрошил, запустилось, но устройства на i2c недоступны. Стал смотреть i2cdetect, а на i2c3 сидит hdmi...
root@bananapim2ultra:~# i2cdetect -l
i2c-1 i2c mv64xxx_i2c adapter I2C adapter
i2c-2 i2c DesignWare HDMI I2C adapter
i2c-0 i2c mv64xxx_i2c adapter I2C adapter

Вопрос, можно ли как то отключить hdmi ? Или как грамотно подключить мои rtc и eeprom к i2c на SK-A40i-SODIMM ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.02.2024 01:49 Сообщение: 6
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Правил dts файл
Пересобрал, перепрошил, запустилось, но устройства на i2c недоступны.


устройства надо подключить физически тогда будут доступны, вы их прописали на i2c3 - этот интерфейс так и обозначен на схеме модуля, пины у него PI0, PI1

Цитата

Стал смотреть i2cdetect, а на i2c3 сидит hdmi...
root@bananapim2ultra:~# i2cdetect -l
i2c-1 i2c mv64xxx_i2c adapter I2C adapter
i2c-2 i2c DesignWare HDMI I2C adapter
i2c-0 i2c mv64xxx_i2c adapter I2C adapter


в данном случае шина i2c3 по схеме это интерфейс i2c-1, ядро присваивает номера интерфейсам по порядку инициализации динамически, чтобы не путаться и сделать статическое соответствие можно дописать алиасы для i2c в начале DTS платы

Цитата

aliases {
ethernet0 = &emac;
ethernet1 = &gmac;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
serial3 = &uart3;
serial4 = &uart4;
serial5 = &uart5;
serial6 = &uart6;
serial7 = &uart7;
mmc0 = &mmc0;
mmc1 = &mmc1;
mmc2 = &mmc2;
mmc3 = &mmc3;

i2c0 = &i2c0;
i2c1 = &i2c1;
i2c2 = &i2c2;
i2c3 = &i2c3;
i2c4 = &i2c4;

};


тогда названия интерфейсов в DTS будут будут соответствовать нумерации ядра

Цитата

# i2cdetect -l
i2c-3 i2c mv64xxx_i2c adapter I2C adapter
i2c-0 i2c mv64xxx_i2c adapter I2C adapter
i2c-5 i2c DesignWare HDMI I2C adapter


Цитата

Вопрос, можно ли как то отключить hdmi ?


у него свой выделенный интерфейс и он никак не мешает
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.02.2024 02:06 Сообщение: 7
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

устройства надо подключить физически тогда будут доступны, вы их прописали на i2c3 - этот интерфейс так и обозначен на схеме модуля, пины у него PI0, PI1


если устройства подключены физически к PI0/PI1, даже если они не прописаны в DTS они должны быть видны на интерфейсе, если алиасы не прописаны

i2cdetect -a 1

если прописать алиасы то сканировать шину 3

i2cdetect -a 3
Спуститься к концу Подняться к началу
Персональная информация
Vladimir8246
Добавлено 15.02.2024 04:07 Сообщение: 8
Vladimir8246
0

Пункты: 403
Регистрация: 02.11.2023
Цитата
Цитата

устройства надо подключить физически тогда будут доступны, вы их прописали на i2c3 - этот интерфейс так и обозначен на схеме модуля, пины у него PI0, PI1


если устройства подключены физически к PI0/PI1, даже если они не прописаны в DTS они должны быть видны на интерфейсе, если алиасы не прописаны

i2cdetect -a 1

если прописать алиасы то сканировать шину 3

i2cdetect -a 3



Устройства физически подключены, альясы не прописаны.
На указанной вами шине их не вижу, кстати на ней очень медленно идет опрос адресов и ничего нет.
root@bananapim2ultra:~# i2cdetect -a 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x00-0x7f.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

а вот на шине 2, которая я полагал и есть i2c3 (так было на плате NANO2E), вот что:

root@bananapim2ultra:~# i2cdetect -a 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2.
I will probe address range 0x00-0x7f.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 32 -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 -- -- -- -- -- 58 59 5a 5b 5c 5d 5e 5f
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
root@bananapim2ultra:~# i2cdetect -a 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2.
I will probe address range 0x00-0x7f.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 32 33 34 35 36 -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

С каждым новым запросом на ней разные адреса устройств...я предположил, так работает hdmi. На ней периодически появляются и пропадают и адреса моих устройств, 0x50 и 0x51, но они не доступны для подключения.
Сам опрос тут проходит быстро
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.02.2024 11:45 Сообщение: 9
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата
а вот на шине 2, которая я полагал и есть i2c3 (так было на плате NANO2E), вот что:


на обоих платах одно и тоже ядро, только название интерфейсов разное - но это один и тотже физический интерфейс, никакой роли эти названия не играют и HDMI не может влиять - это отдельный интерфейс, проверьте физическое подключение.
Спуститься к концу Подняться к началу
Персональная информация
Vladimir8246
Добавлено 27.02.2024 03:44 Сообщение: 10
Vladimir8246
0

Пункты: 403
Регистрация: 02.11.2023
Цитата
Цитата
а вот на шине 2, которая я полагал и есть i2c3 (так было на плате NANO2E), вот что:


на обоих платах одно и тоже ядро, только название интерфейсов разное - но это один и тотже физический интерфейс, никакой роли эти названия не играют и HDMI не может влиять - это отдельный интерфейс, проверьте физическое подключение.


Разобрались с подключением и нумерацией i2c. Но все равно не заработало, как надо.
Вкратце: плата SK-A40i-SODIMM+armbian bullsey, прописал в .dts свой rtc:
&i2c3 {
status = "okay";
pcf8563: rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};

добавил свой драйвер: make linux-menuconfig
Device Drivers --->
[*] Real Time Clock --->
<*> Philips PCF8563/Epson RTC8564

указал, чтоб при старте брать из моего устройства время:
[*] Set system time from RTC on startup and resume
(rtc1) RTC used to set the system time

Альясы пока не прописывал
после загрузки адрес устройства 0x51 не появляется...

root@bananapim2ultra:~# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

При этом шина i2c читается нормально, устройство на адресе 0x50 (это eeprom, его в dts не прописывал) доступно и читается.

Смотрели i2c сниффером, при загрузке линукса с i2c устройством 0x51 происходит валидный обмен, где то с 5-й секунды после включения. После окончания загрузки устройства нет, вместо адреса UU. Соответственно /dev/rtc1 тоже не появляется
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-A40i