Мини-компьютеры/периферия/GPIO: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «{{stub}} Настройка систем ALT Linux для поддержки периферии к одноплатным и другим мини-компьют…»)
 
Строка 78: Строка 78:
чтобы получить правильное время в логах и отсутствие странного в /etc/adjtime.
чтобы получить правильное время в логах и отсутствие странного в /etc/adjtime.


[https://elinux.org/Device_Tree_Reference#Overlays Device Tree Overlay]
В идеале, ядро должно увидеть часы прямо при старте ядра.
Этот идеал достижим с помощью механизма
[https://elinux.org/Device_Tree_Reference Device Tree] и
[https://elinux.org/Device_Tree_Reference#Overlays Device Tree Overlay].


dtoverlay=i2c-rtc,pcf8563
В отсутствие BIOS/UEFI механизм Device_Tree позволяет использовать одно
и то же универсальное ядро, подгружая ему загрузчиком файл {{term|.dtb}}
(Device Tree Binary) с описанием устройств конкретной платы.
Более того, в Device_Tree есть возможность менять конфигурацию платы
с помощью механизма Device Tree Overlay. Варианты конфигурации
можно скомпилировать в файлы {{term|.dtbo}} и загрузчик u-boot
при загрузке объединит файл {{term|.dtb}} с файлами {{term|.dtbo}}
и получит текущую конфигурацию платы, котоую передаст ядру.
 
В Raspbian
достаточно добавить
{{path|/boot/config.txt}}
dtoverlay=i2c-rtc,pcf8563




Строка 105: Строка 120:
  Type=oneshot
  Type=oneshot
  ExecStart=/sbin/hwclock -s --utc
  ExecStart=/sbin/hwclock -s --utc


=== Советы начинающему пользователю по выбору железа ===
=== Советы начинающему пользователю по выбору железа ===

Версия от 20:47, 17 августа 2019

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Настройка систем ALT Linux для поддержки периферии к одноплатным и другим мини-компьютерам, которая подключается/подпаивается к разъемам/контактам на плате.


Gnome-dialog-warning.svg Внимание:

Страница предназначена для обсуждения настройки систем ALT Linux. Пожалуйста, не указывайте здесь 1) перферию (датчики и т.д.), работа с которыми идет через пользовательское приложение и не требует изменения конфигурации системы. 2) схемантику подключения для конкретных плат.


Часы реального времени.

Pcf8563-rtc.jpg

Много одноплатных компьютеров не имеет встроенных часов (rtc clock). Но можно подключить готовый модуль с отсеком для батарейки и микросхемой rtc clock, как правило, подключаемой по шине I2C.

В ядре поддерживаются практически все популярные микросхемы i2c rtc clock. Однако их настройка требует некоторых телодвижений.

тестирование подключения i2c rtc clock

К примеру, рассмотрим пробное подключение модуля с микросхемой часов pcf8563 к шине i2c №1 (/dev/i2c-1).

# 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: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Видим, что устройство доступно на шине №1 (опция -y 1) с адресом 0x51. Выполняем команду

# echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device

после чего появится устройство /dev/rtc0.

  1. dmesg | grep rtc
[   18.259456] rtc-pcf8563 1-0051: registered as rtc0
# 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: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

теперь i2cdetect по адресу 0x51 показывет UU, что означает, что данное устройство открыто ядром и недоступно пользователю.

Для практически любого модуля часов указания по тестовому подключению можно легко найти в интернет.

Настройка системы для i2c rtc clock

Тонкость настройки системы для i2c rtc clock в том, чтобы при загрузке подключить часы и выставить время как можно раньше, чтобы получить правильное время в логах и отсутствие странного в /etc/adjtime.

В идеале, ядро должно увидеть часы прямо при старте ядра. Этот идеал достижим с помощью механизма Device Tree и Device Tree Overlay.

В отсутствие BIOS/UEFI механизм Device_Tree позволяет использовать одно и то же универсальное ядро, подгружая ему загрузчиком файл .dtb (Device Tree Binary) с описанием устройств конкретной платы. Более того, в Device_Tree есть возможность менять конфигурацию платы с помощью механизма Device Tree Overlay. Варианты конфигурации можно скомпилировать в файлы .dtbo и загрузчик u-boot при загрузке объединит файл .dtb с файлами .dtbo и получит текущую конфигурацию платы, котоую передаст ядру.

В Raspbian достаточно добавить /boot/config.txt

dtoverlay=i2c-rtc,pcf8563


KERNEL=="i2c-1", SUBSYSTEM=="i2c-dev", ACTION=="add", RUN+="/bin/sh -c 'echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device'"
KERNEL=="rtc0", SUBSYSTEM=="rtc", ACTION=="add", RUN+="/sbin/hwclock -s --utc -f /dev/rtc0"
$ cat /etc/udev/rules.d/10-i2c-rtc.rules
KERNEL=="i2c-1", SUBSYSTEM=="i2c-dev", ACTION=="add", RUN+="/bin/sh -c 'echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device'"
KERNEL=="rtc0", SUBSYSTEM=="rtc", SUBSYSTEMS=="i2c", TAG+="systemd", ENV{SYSTEMD_WANTS}="i2c-rtc-hwclock.service"
$ cat /etc/systemd/system/i2c-rtc-hwclock.service
[Install]
RequiresMountsFor=/usr/share/zoneinfo

[Unit]
Description=Set system time from i2c hardware real time clock
CapabilityBoundingSet=CAP_SYS_TIME
#DefaultDependencies=no
Before=time-set.target getty.target chrony.service ntpd.service systemd-timedated.service
WantedBy=time-set.target getty.target chrony.service ntpd.service systemd-timedated.service

[Service]
Type=oneshot
ExecStart=/sbin/hwclock -s --utc

Советы начинающему пользователю по выбору железа

Gnome-dialog-warning.svg
Внимание:



TFT & touchscreen

TFT display

touchscreen