Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

карта минного поля / Хабр

Некоторое время назад мне предложили немного поработать с одноплатным ПК Orange Pi 2G-IOT (встроенный 2G и цена выглядят очень привлекательно). Прочитав пост об апельсиновом рае, я подумал, что без затруднений повторю этот путь, тем более, что с Linux я на «ты» (вернее, так я думал недели три назад) и уже имел опыт общения с Raspberry Pi 2 B+. На практике этот путь оказался намного длиннее. Создавалось ощущение, что наши китайские друзья намеренно создавали сложности (причём иногда с особым цинизмом). Если вы захотели сэкономить и купить эту плату, то сначала прочитайте этот пост и подумайте ещё раз.

По возможности, я постараюсь сдерживать эмоции или как минимум переводить их в юмор.
Итак, вот мне в руки попадает плата и SD карточка десятого класса. Поехали.

Всё ниже написанное относится к модели Orange Pi 2G-IOT, но в чате Телеграма (ищите «Orange Pi и не только») говорят, что модели 2G, 3G и 4G примерно одинаково себя ведут (одинаково плохо).

Написанное НЕ относится к, например, Orange Pi PC и Orange Pi One, которые по отзывам ведут себя стабильно.

Мина №1 (учебная): скачивание образа ОС

Казалось бы, что может быть проще? Идём на

сайт производителя

и качаем. Однако все ссылки ведут на mega.nz, который собирает его прямо в браузере. Мой дешёвый ноутбук с 4 Гб ОЗУ не потянул такую задачу и вкладка упала. Можно было бы воспользоваться фирменной программой для скачивания с Меги, но он у меня не вызвал доверия (тем более, что в Интернетах некоторые пишут, что программа распознаётся антивирусами как вредоносное ПО).

Варианты решения:

скачать с неофициального сайта (например,

здесь

), развернуть виртуалку и поставить в ней клиент для скачивания с Меги, попросить кого-то с более современным ПК скачать образ.

Ещё немного об операционках для апельсина

Для многих моделей Апельсинок пользователи рекомендуют Armbian, но на 2G-IOT он на меня впечатление не произвёл: выглядит как минималистичный Raspbian.

Кстати, на сайте Армбиана образа для 2G-IOT нет, только на сайте Orange Pi. Также пробовал Ubuntu Server, но он у меня вообще не подавал признаков жизни. Встроенный в NAND Андроид по всей видимости рабочий, но я его никак не изучал, скорее всего, без сенсорного экрана он малополезен. Кстати, напоминаю, что устройство загрузки определяется положением перемычки в уголке платы, по умолчанию стоит загрузка со встроенной NAND памяти.


Мина №2: выход в Интернет через модем

Дословно следуя настройке wvdial и pppd в Интернете, я внезапно обнаружил, что ping запросы проходят исправно, а вот обычные TCP пакеты ни в какую:

orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195. C --- 195.201.201.32 ping statistics --- 7 packets transmitted, 6 received, 14% packet loss, time 6032ms rtt min/avg/max/mdev = 234.634/310.971/664.998/158.370 ms orangepi@OrangePi:~$

Решение

подсказал

edtun

:

https://www.linux.org.ru/forum/admin/12135523

, хотя допускаю, что можно было как-то проще.

Сразу насторожило, что IMEI модема забит нулями. Благо, красно-белый оператор связи не обращает на это внимание. (Кстати, у встроенного WiFi аналогично нет МАС-адреса: при каждом передёргивании питания он генерируется случайным образом.)

Мина №3: USB порт

Втыкаем WiFi свисток в USB разъём и… Ничего не происходит. lsusb отобразил пустой USB порт. Небольшое копание показало, что в плате реально всего

один

USB. И по умолчанию он подключен к microUSB порту. Для переключения его на обычный USB HOST необходимо переключить на плате джамперы, которые находятся рядом с перемычкой для выбора загрузки. Их описание есть на 4pda:


Решение:

переключить джамперы в положение: 1234 вниз, 5678 вверх.

Только потом я нашёл небольшое упоминание об этом нюансе в мануале к Orange Pi.

Мина №4: Драйверы

Теперь устройство определяется в системе, lsusb отображает производителя и код продукта, но беспроводной сетевой интерфейс в системе не определяется. Потому что разработчики не завезли на апельсинку драйвера для WiFi адаптеров. Причём вообще никаких. Есть драйвер только для встроенного WiFi, не больше и не меньше. А что мы делаем, когда у нас нет драйвера под наше железо? Правильно, идём

собирать их из исходного кода

!

Мина №5: Подготовка к сборке

В переписке

bad__day

предложил сборку непосредственно на Orange Pi. Может быть, это возможно, но мне не удалось.

Для Orange Pi разработчики сделали специальную Orange Pi Build System, с помощью которой в теории для сборки ядра или модулей к нему достаточно просто следовать указаниям на экране. Подробная инструкция изложена в мануале начиная с 61-й страницы. Казалось бы, просто следуй, и всё будет хорошо, но нет.

Во-первых, чтобы вручную не править все зависимости на своём компьютере (я регулярно обновляю ПО, это здорово, но не в этот раз), я развернул виртуалку с Ubuntu 16.04 и все действия проводил там. Во-вторых, в скриптах где-то вкралась ошибка, и Build System не ставила тулчейн для кроссплатформенной компиляции.

Решается это таким костылём:

  1. Вручную apt-get’ом ставим тулчейн для кросскомпиляции под ARM.
  2. Делаем симлинки:
    mkdir $HOME/OrangePiRDA/toolchain/bin
    ln -s $(which arm-linux-gnueabi-ld) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-ld
    ln -s $(which arm-linux-gnueabi-gcc-4.9) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-gcc
    ln -s $(which arm-linux-gnueabi-g++-4.9) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-g++
    ln -s $(which arm-linux-gnueabi-ar) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-ar
    ln -s $(which arm-linux-gnueabi-nm) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-nm
    ln -s $(which arm-linux-gnueabi-objcopy) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-objcopy
    ln -s $(which arm-linux-gnueabi-size) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-size
    Обратите внимание: компилятор берётся версии 4.
    9, на версиях выше ничего не соберётся.
  3. Открываем OrangePiRDA/scripts/Prepare_toolchain.sh и на всякий случай комментируем строки, упоминающие тулчейн.

На самом деле все эти скрипты просто вызывают apt-get install -y… и make. Скрипт не предлагает пользователю как-либо изменять конфигурацию (или я не нашёл?).

Но ведь нам ничего не мешает самим вызвать

make menuconfig

и отметить нужные драйверы. Делаем это и снова собираем (теперь можно только модули) и…

Мина №6 (с прикрученным ИК датчиком движения и запасным детонатором): Сборка драйвера

… И тут скрипт приветливо стал задавать вопросы, как ему конфигурировать ядро. Он вызвал старомодный конфигуратор ядра, но почему?! Что не так?

Оказалось, что в Makefile прописано проверять ВРЕМЯ(!!!) изменения конфига!

В комментарии дословно написано «кто-то копался». (На скриншоте уже изменённый Makefile, я прописал menuconfig.) Пробовал вызывать make oldconfig, не заметил, чтобы это что-то где-то изменило.

Ладно, теперь ведь при сборке вызовется menuconfig, это не страшно. Снова вызываю сборку, сборка замечает, что «кто-то копался в конфиге», вызывает menuconfig, я выхожу и жду завершения. А теперь представьте моё удивление, когда я не нашёл выбранный мною драйвер.

Дисклеймер перед дальнейшим прочтением

На этом месте меня покинуло понимание происходящего, а также я окончательно потерял связь с реальностью, здравым смыслом и цивилизацией с планеты Ross 128 b. Я вышел за границы знаний своих, всех моих знакомых и TARDIS. Я начал творить полный бред, а единственной целью стало собрать этот [CENSORED] драйвер любой ценой. Если при прочтении текста выше Вы хватались за голову более двух раз, то текст ниже не читайте. Так будет спокойнее и вам, и мне. Если вы можете дать внятное объяснение происходящему и объяснить, где я не прав и как надо, то прошу рассказать. Пожалуйста.


Что ж, лезем разбираться. Оказывается, make создаёт файл modules.order, где описаны все модули, которые будут скомпилированы. И даже после всех изменений конфига и его сохранения этот файл заполняется одинаковым набором. Я не придумал ничего лучшего, чем вручную дописать в него строки (мой свисток собран на чипсете RTL8192CU):

kernel/driver/net/wireless/rtlwifi.ko
kernel/driver/net/wireless/rtlwifi/rtl8192cu.ko

Все упоминания этого файла в Makefile заменил на modules.order.fake. Запускаю сборку. На этот раз сборка пошла, но оборвалась, так как аналогичного файла нет в папке с исходным кодом rtlwifi. Я переименовал в этой папке и подпапках файлы modules.order.fake на modules.order, и это стало моим последним приключением при сборке драйвера. После этого система ещё два раза выводила мне menuconfig, как будто спрашивая меня «ты точно этого хочешь?», но всё же собрала дополнительно три заветных .ko файла, которые завелись как положено.

Мина №7: Совместная работа внешнего WiFi и модема

Немного поигравшись с airodump’ом и убедившись, что как минимум ловить пакеты в режиме монитора устройство умеет, я решил проверить модем ещё раз. Выполняю

sudo wvdial

И светодиод на внешнем WiFi адаптере гаснет, а SSH отваливается. В логах потом прочитал, что адаптер был отключен. Первая мысль — проблема с питанием. До этого момента я использовал свой зарядник на 1,5 Ампера, а производитель рекомендует аж целых 3 (куда столько? Она и

одного Ампера даже не ест

). Под рукой был зарядник на 2 Ампера, который годами исправно питал Raspberry Pi.

На данный момент я не нашёл какого-либо стабильного решения данной проблемы. Вот некоторые попытки решения:

  • С вероятностью 80% можно отключить внешний WiFi с помощью:
    chmod 777 /sys/bus/usb/drivers/usb/unbind
    echo 1-1 > /sys/bus/usb/drivers/usb/unbind

    а затем запустить wvdial, который с 1-3 попытки установит соединение и можно выйти в Интернет. В 20% разного рода зависания и глюки.
  • Однажды случайно оказалась такая ситуация, что был убит wvdial, но pppd остался работать (как так может быть?), после которого поднялся внешний WiFi (см. выше, только вместо unbind пишем bind) и связь через модем была. Воспроизвести ситуацию не удалось.
  • Оказалось, что можно без пересборки ядра отключать питание на USB с помощью такой утилиты командой
    ./hub-ctrl -h 0 -P 1 -p 0

    и включить питание
    ./hub-ctrl -h 0 -P 1 -p 1
    На 2G-IOT поведение непредсказуемое: отключение питания может быть либо на одну секунду, либо до перезагрузки. При некоторых фазах Луны попытка вернуть питание приводит к зависанию платы.
  • Переключить джамперы на OTG (1234 вверх, 5678 вниз), питание подать на ноги GPIO 2 и 6 (прозванивал, они напрямую соединены с питанием microUSB)Распиновка

    подключить WiFi адаптер через USB-OTG переходник от смартфона. Система не видит USB устройства вообще. Возможно, надо настойчивее поиграться с джамперами.

Не проверялось, но может сработать (в планах опробовать все эти варианты):

  • Другой WiFi адаптер.
  • Очень стабильный источник питания с максимальным током 3 Ампера.
  • Дополнительное питание к ногам USB.
  • Бензин и спички.

В общем, задача выглядит как натягивание треугольного одеяла на четырёхугольный апельсин.

На этом пока всё.

Благодарности

Хотелось бы выразить свою благодарность

bad__day

,

edtun

, А. Репину, форумчанам с

4pda

, старожилам в чате Телеграма и Коту, который терпеливо выслушивал меня всё это время и почти не пытался сбежать.


UPD: Сегодня мне привезли источник питания с выходом 5В 3А. С ним удалось одновременно запустить и модем, и USB WiFi адаптер. Модем сыплет ошибками, перестаёт отвечать, но в среднем с третьей попытки подключается. После этого можно использовать USB WiFi.

Подводя итог.

Одноплатник Orange Pi 2G-IOT очень сырой и почти не поддерживается производителем. Даже на простых вещах, где казалось бы ничего не предвещает беды, что-то может пойти не так. Если необходимо использовать устройство с выходом в Интернет через мобильную сеть и вы не уверены, что сможете совладать с Orange Pi, то лучше доплатить и взять что-то более надёжное и отлаженное. Сбережёте время и нервы.

Orange Pi One – “апельсин” сменяет “малину”

Компания Shenzhen Xunlong начала продажи одноплатного микрокомпьютера Orange Pi One с четырёхъядерным процессором ARM Cortex-A7. При цене в $10 он превосходит многие аналоги, оставаясь исключительно доступным инструментом отладки, универсальным решением для самоделок в сфере IoT и отличной образовательной игрушкой.

Одноплатный микрокомпьютер Orange Pi One (фото: Shenzhen Xunlon).

На мой взгляд, массовый интерес к одноплатным компьютерам возник с появлением Raspberry Pi. Ещё четыре года назад казалось фантастикой, что такое устройство может стоит всего $25. У моделей «B» и «B+» ценник подскочил уже до $35, но и по функциональности они были самыми продвинутыми. В конце прошлого года появилась другая уникальная модель – Raspberry Pi Zero, стоимостью $5. Таким образом «малина» оказалась представлена сразу во всех сегментах – от нишевого до продвинутого.

Успех Raspberry Pi пытаются повторить многие. Практически одновременно с «малиной» появился Cubieboard – чистокровный одноядерный «китаец» на базе Cortex-A8. Когда вышла следующая модель Raspberry Pi, «кубик» тоже обновился до второй версии. Сейчас это один из самых популярных одноплатников на платформе AllWinner A20. Он работает в кустарных медиаплеерах, охранных системах и даже обрабатывает «большие данные» с помощью Apache Hadoop – микрокомпьютеры легко объединять в кластеры.

Кластер из одноплатных компьютеров (фото: cubieboard.org).

Каждый из микрокомпьютеров имеет свои отличия, но основные элементы у них объединены в SoC – системы на кристалле. В одноплатных компьютерах используются самые разные микросхемы, но в основном это SoC с процессорами архитектуры ARM. Гораздо реже встречаются младшие APU AMD, интеловские «атомы» и чипы VIA.

Orange Pi One построен на базе одной из самых популярных платформ – Allwinner h4, появившейся в 2014 году. В её состав входит четыре ядра Cortex-A7 (1,2 ГГц) и видеоядро Mali 400MP2 (600 МГц). Контроллер оперативной памяти в ней довольно всеядный – он поддерживает чипы стандартов DDR2 и DDR3 с обычным и пониженным напряжением питания. В «апельсине» доступно 512 МБ DDR3. С каждой стороны платы распаяно по одному чипу производства Samsung объёмом 256 МБ.

Двусторонняя распайка Orange Pi One (фото: Shenzhen Xunlon).

Карта памяти microSD(XC) максимальным объёмом 64 ГБ подключается через слот с интерфейсом SDIO. Пользователю доступны сетевой порт Ethernet (100 Мбит/с) и концентратор USB 2.0. В Orange Pi One распаян один полноразмерный порт USB 2.0 Af и один mini-USB с поддержкой OTG. Потребляемая мощность «апельсина» достигает десяти ватт, а питание платы через USB не поддерживается. Производитель рекомендует использовать сетевой адаптер с выходным напряжением 5 В и силой тока 2 А. Изображение можно выводить на порт HDMI, а получать по интерфейсу CSI с камеры разрешением до 5 Мп. Orange Pi One имеет 40 программируемых контактов общего назначения (GPIO). Гребёнка полностью совместима с шилдами для Raspberyy Pi B+.

Блок-схема платформы AllWinner h4.

Как и все одноплатные компьютеры с процессорами архитектуры ARM, Orange Pi One поддерживает широкий набор операционных систем. Помимо специализированных Raspbian и Pidora (пардон май рашен), это Android 4.4, всевозможные дистрибутивы Linux (от Arch до Kali), OpenWrt, FreeBSD, IPFire и другие. При этом не стоит думать, что установить любую из них будет легко. Адаптированных прошивок пока мало, и «апельсин» недаром ориентирован на энтузиастов. Его обладателям многое придётся делать самим, в том числе и в плане софта.

Размеры Orange Pi One составляют 69 × 48 мм, а масса – всего 36 грамм. Его ближайшим конкурентом считается Next Thing C.H.I.P. на платформе AllWinner A13 стоимостю $9. При чуть меньшее цене он не имеет HDMI выхода.

Другим преимуществом Pi One указывается его совместимость с компонентами для других компьютеров серии Orange – более мощным Pi PC и готовящимся к выпуску Pi Lite с модулем Wi-Fi вместо порта Ethernet.

Автоматическое включение охлаждения на OrangePI

Добавлено в закладки: 1

1.
Идем в папку /usr/bin
Создаем файл temp
В файл пишем :
#!/bin/sh
cat /etc/armbianmonitor/datasources/soctemp

сохраняем и закрываем.
Делаем его исполняемым chmod +x temp

2.
Идем в папку /usr/bin
Создаем файл temp_cool.sh и пишем в него:
#!/bin/sh
LEVEL=35
PORT=24
MODE=`gpio readall | grep "GPIO.$PORT" | awk -F"|" {'print$5'} | awk {'print$1'}`
TEMP=`/usr/bin/temp`
COOLER=`gpio read $PORT`
if [ $MODE != "OUT" ]; then
gpio mode $PORT out
fi
if [ $TEMP -gt $LEVEL ] && [ $COOLER -eq 0 ]; then
gpio write $PORT 1
fi
if [ $TEMP -lt $LEVEL ] && [ $COOLER -eq 1 ]; then
gpio write $PORT 0
fi

Делаем этот файл исполняемым chmod +x temp_cool. sh

3.
Идем в папку /etc/
Открываем на редактирование файл crontab и дописываем после примера:
* * * * * root /usr/bin/temp_cool.sh
Обратите внимание на пробелы и TAB!!! Эту строчку лучше не копировать, а вписать руками!!!
У меня это выглядит вот так

Перезагружаем OrangePI
Теперь каждую минуту наш скриптик будет проверять текущую температуру процессора и при необходимости включать или выключать кулер охлаждения проца нашей «мандарины»

p.s. Все это делалось от рута
Пунк 1 не обязателен! Можно в пункте 2 вместо TEMP=`/usr/bin/temp`
написать TEMP=` cat /etc/armbianmonitor/datasources/soctemp `
Теоретически должно работать, но я не пробовал… Пунк 1 у меня для того, что бы в любой момент и в любом месте я набрал команду temp и увидел текущую температуру процессора. И + ко всему в дальнейшем хочу вывод температуры сделать в самом ОктоПринте.

Так же для корректной работы у Вас должна быть установлена библиотека для работы в портом ввода/вывода.
Еще Вам нужно учесть вольтаж питания Вашего кулера. С пина GPIO выходит ввсего 3,5 вольта.
Решение может быть таким: Б/П 12v. К которому подключен кулер через транзистор и dc-dc конвертер на 5 вольт для «мандарины» Или отдельно подвести 12 вольт к кулеру, но тогда массы Б/П и «апельсины» должны быть соеденены.

Будет полезно посмотреть эту статью

Описалово:
В файле temp_cool.sh есть 2 переменные.
LEVEL – темература, при которой срабатывает включение и
PORT – номер GPIO пина к которому подключено управление кулером.

Мигаем светодиодом на Orange Pi Zero

Автор: Андрей Осипов

Дата: 26/03/2019

В предыдущих статьях я описал процесс настройки сети и установки веб-сервера на Orange Pi Zero. Так же обещал рассказать о настройке FTP-сервера, но посчитал это не целесообразным занятием, потому как доступа по SFTP вполне достаточно. Если кому-то эта тема интересна, то сообщите в комментариях к этой статье.

Сегодня я расскажу как можно управлять портами ввода-вывода и всей доступной периферией.

Распиновка Orange Pi Zero показана на рисунке. Пины, расположенные слева, предназначены для подключения наушников, микрофона, инфракрасного датчика и т.д. и нас мало интересуют. С правой стороны расположены пины периферии и цифровых портов. Как видно, один и тот же пин может выполнять разные функции: цифровой порт или интерфейсный пин.

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

Для начала устанавливаем библиотеку wiringPi для управления портами ввода-вывода и остальной периферией. Вообще библиотека разрабатывалась для миникомпьютеров Raspberry PI и не подходила для Orange Pi. Однако в настоящее время есть адаптированная под Orange Pi версия библиотеки. Установить ее можно как указано здесь http://www.orangepi.org/Docs/WiringPi. html

У меня же клонировать репозиторий не получилось, так как требовалось ввести логин и пароль аккаунта GitHub, которые мне не известны. Поэтому я просто скачал все в виде ZIP-архива из репозитория https://github.com/xpertsavenue/WiringOP-Zero и добавил содержимое архива на SD-карточку OrangePi через Total Commander по SFTP-протоколу, предварительно распаковав архив. Распакованные файлы я поместил в домашний каталог пользователя.

Как получить доступ к файловой системе OrangePi Zero через Total Commander я уже писал в предыдущей статье.

Для установки библиотеке нужно запустить скрипт build. Для скрипта не установлены права на запуск. Мы должны их предоставить сами.

cd ~/WiringOP-Zero-master/
sudo chmod a+x build
sudo ./build

После успешной установки можно посмотреть состояние всех портов командой:

gpio readall

Справку обо всех командах wiringPi можно получить набрав:

gpio –h

Из таблицы можно увидеть, что пользовательский светодиод STAT-LED подключен на порт 30, который сейчас работает в режиме цифрового выхода OUT. Если же порт находится в каком-то другом режиме, то настроить его в режим цифрового вывода можно командой:

gpio mode 30 output

Зажигаем светодиод установкой логической «1» на выходе 30:

gpio write 30 1

Гасим светодиод установкой логического «0» на выходе 30:

gpio write 30 0

Напишем простую программу, которая заставит светодиод мигать. С нуля писать ее не придется, т.к. она уже есть в каталоге examples в качестве примера. Просто копируем файл blink.c в рабочий каталог, изменяем номер порта на 30 и компилируем его.

В созданном на предыдущих шагах каталоге ~/public/www добавляем каталог cgi-bin:

mkdir ~/public/www/cgi-bin

Копируем в созданный каталог пример программы blink:

cp ~/WiringOP-Zero-master/examples/blink.c ~/public/www/cgi-bin/blink.c

Открываем исходник программы в редакторе и меняем номер порта с 0 на 30:

mcedit ~/public/www/cgi-bin/blink. c

Находим строчку #define LED 0 и меняем на 30

Сохраняем и закрываем исходник

Компилируем программу командой:

gcc -o ~/public/www/cgi-bin/blink.bin ~/public/www/cgi-bin/blink.c -I/usr/local/include -lwiringPi –lpthread

Далее в каталоге с программой должен появиться файл blink.bin. Запускаем программу командой:

sudo ~/public/www/cgi-bin/blink.bin

После запуска программы светодиод должен замигать. Остановить программу можно нажав клавиши CTRL+C

Кстати, помигать светодиодом можно и с помощью скрипта, который тоже есть в каталоге с примерами.

Копируем скрипт в рабочий каталог:

cp ~/WiringOP-Zero-master/examples/blink.sh ~/public/www/cgi-bin/blink.sh

Открываем в редакторе файл blink.sh и меняет строчку PIN=0 на PIN=30:

mcedit ~/public/www/cgi-bin/blink.sh

После сохранения файла, запускаем скрипт на исполнение:

sh ~/public/www/cgi-bin/blink. sh

И также видим, что светодиод мигает. Остановить выполнение скрипта можно клавишами CTRL+C

В следующий раз расскажу как разрабатывать программы в Eclipse IDE  работая под Windows. Жду ваших комментариев.

ПК

оранжевый пи – Orangepi

ПК оранжевый пи – Orangepi

Что такое компьютер Orange Pi?

Это одноплатный компьютер с открытым исходным кодом. Он может работать под управлением Android 4.4, Ubuntu, Debian Image. Он использует SoC AllWinner h4 и имеет 1 ГБ DDR3 SDRAM

Что я могу делать с Orange Pi PC?


Строить…
  • Компьютер
  • Беспроводной сервер
  • Игры
  • Музыка и звуки
  • HD видео
  • Динамик
  • Android
  • Царапина
  • Практически все, что угодно, потому что Orange Pi PC имеет открытый исходный код

Для кого?

ПК

Orange Pi предназначен для всех, кто хочет начать создавать с помощью технологий, а не просто использовать их. Это простой, забавный и полезный инструмент, который вы можете использовать, чтобы взять под свой контроль мир вокруг вас.


Спецификация оборудования

ЦП

h4 Четырехъядерный процессор Cortex-A7 H.265 / HEVC 4K

Графический процессор

· Графический процессор Mali400MP2 @ 600 МГц
· Поддерживает OpenGL ES 2.0

Память (SDRAM)

1 ГБ DDR3 (совместно с графическим процессором)

Бортовой склад

TF-карта (макс.32 ГБ) / слот для карты MMC

Бортовая сеть

10/100 Мбит / с Ethernet RJ45

Видеовход

A Входной разъем CSI Камера:

Поддерживает 8-битный интерфейс датчика YUV422 CMOS

Поддерживает протокол CCIR656 для NTSC и PAL

Поддерживает пиксельный датчик камеры SM

Поддерживает решение для захвата видео до 1080p при 30 кадрах в секунду

Аудиовход

MIC

Видеовыходы

Поддерживает выход HDMI с HDCP

Поддерживает HDMI CEC

Поддерживает функцию HDMI 30

Интегрированный CVBS

Поддерживает одновременный вывод HDMI и CVBS

Аудиовыход

3. Разъем 5 мм и HDMI

Источник питания

Вход постоянного тока может обеспечивать питание, но вход USB OTG не обеспечивает питание

Порты USB 2.0

Три USB 2.0 HOST, один USB 2.0 OTG

Кнопки

Кнопка питания (SW4)

Периферийные устройства низкого уровня

Заголовок на 40 контактов

Контакт GPIO (1×3)

UART, земля.

Светодиод

Индикаторы питания и состояния

Ключ

ИК-вход, ПИТАНИЕ

Поддерживаемая ОС

Android Ubuntu, образ Debian

Определение интерфейса

Размер продукта

85 мм × 55 мм

Масса

38 г

Orange Pi ™ является товарным знаком компании Shenzhen Xunlong Software CO. , Limited
Авторские права © 2016 Xunlong Software CO., Limited Все права защищены.

Cherry Pi PC SBC – это клон Orange Pi PC, который продается по цене от 16,5 долларов США и выше.

Orange Pi PC – это SBC Allwinner h4, который был выпущен в 2015 году всего за 15 долларов США плюс доставка (сейчас 17,42 доллара США с 1 ГБ оперативной памяти) и произведен компанией компания под названием Shenzhen Xunlong Software. В следующем году компания запустила Orange Pi PC Plus с 8 ГБ флэш-памяти eMMC и возможностью подключения к WiFI за 20 долларов (сейчас 25 долларов.54).

Похоже, другая компания под названием «Shenzhen LC Technology» разработала плату с аналогичными спецификациями и компоновкой, так что технически не клон, но достаточно близкий. Встречайте Cherry Pi SBC .

Технические характеристики Cherry Pi PC V7 SBC с выделением жирным шрифтом или зачеркивание , показывающее различия с ПК Orange Pi:

  • SoC – четырехъядерный процессор Allwinner h4 Cortex A7 с графическим процессором Arm Mali-400MP2
  • Системная память – 512 МБ или 1 ГБ DDR3
  • Хранение – слот для карт MicroSD до 64 ГБ, дополнительная флэш-память eMMC 8 ГБ ,
  • Видеовыход – HDMI 1. 4 и AV-порта
  • Аудиовходы / выходы – HDMI, AV-порт, встроенный микрофон
  • Возможности подключения – 10 / 100M Ethernet порт RJ45, дополнительный RTL8189 2,4 ГГц 802.11b / g / n WiFi-чип плюс iPEX WiFi-антенна
  • USB – 3x 2x хост-порта USB 2.0, 1x порт micro USB OTG
  • Камера – 24-контактный интерфейс CSI
  • Расширения – 40-контактный разъем, совместимый с Raspberry Pi с 28 GPIO, UART, I2C, SPI, PWM, CAN , I2S, SPDIF, LRADC, ADC, LINE-IN, FM-IN и HP-IN
  • Отладка – 3-контактный разъем UART для последовательной консоли
  • Разное – ИК-приемник; Питание и сброс кнопки; Светодиоды питания и состояния
  • Источник питания – 5 В / 2 А через цилиндрический разъем Порт USB-C
  • Размеры – 85 x 55 мм
  • Вес – 55 грамм

Плата имеет на один порт USB меньше, чем у Orange Pi SBC, а также предлагает дополнительную флеш-память eMMC и возможность подключения к Wi-Fi, чтобы соответствовать спецификациям Orange Pi PC Plus. Есть вариант для 512 МБ ОЗУ, а разъем питания был заменен портом USB-C, но в остальном платы в основном такие же.

Я узнал о плате в Orange Pi Facebook Group (примечание: частная группа), где пользователь по имени Антониос приобрел плату и мог подтвердить, что она работает с образами Orange Pi PC / PC Plus:

Просто обновление для все, он отлично работает на Orange Pi pc плюс изображения, включая Wi-Fi. Пробовал Ubuntu 16.04 и Armbian, так что я считаю, что это копия Orange pi pc

Источник изображения: Orange Pi Facebook Group

Cherry Pi PC V7 – , проданный на Aliexpress всего за 16 долларов.5 плюс доставка с 512 МБ ОЗУ и до 28,20 долларов плюс доставка с 1 ГБ ОЗУ, 8 ГБ флэш-памяти eMMC и Wi-Fi. Цена образца на самом деле немного выше, чем для эквивалентной платы Orange Pi PC (Plus), но ПК Cherry Pi, похоже, не ограничивается одной частью на заказ.

Shenzhen LC Technologies также предлагает другие платы Cherry Pi с Cherry Pi PC V3S для приложений камеры и Cherry Pi PC H6 с четырехъядерным процессором Allwinner H6 Cortex-A53, все из которых можно найти на странице продуктов.

Жан-Люк основал CNX Software в 2010 году в качестве неполного рабочего дня, прежде чем бросить свою работу менеджера по разработке программного обеспечения и начать писать ежедневные новости и обзоры на полную ставку позже в 2011 году.

Поддержите CNX Software! Сделайте пожертвование через PayPal или криптовалюты , станьте покровителем на Patreon или купите образцы обзора

Orange Pi One Review: хороший выбор для начинающих

Orange Pi One – одноплатный микрокомпьютер с четырехъядерным процессором ARM Cortex-A7 h4.Особенности процессора: четыре ядра Cortex-A7 (1,2 ГГц), видеоядро Mali 400MP2 (600 МГц). Контроллер ОЗУ поддерживает микросхемы DDR2 и DDR3 с нормальным и пониженным напряжением питания. Orange Pi One имеет 512 МБ памяти DDR3. На каждую сторону платы распаяно по одному чипу Samsung емкостью 256 Мбайт.

Энергопотребление «Апельсина» достигает 10 Вт, рекомендуется использовать адаптер питания с выходным напряжением 5В и током 2А. Питание платы через USB-OTG не поддерживается.Можно подключить монитор через HDMI, камеру CSI с разрешением до 5 мегапикселей. Orange Pi One имеет 40 программируемых контактов общего назначения (GPIO). Расческа полностью совместима с Raspberry Pi B +.

Orange Pi One поддерживает широкий спектр операционных систем: Android, Ubuntu, Debian, ArchLinux, Gentoo, OpenSUSE, Kali, Fedora, Raspberry Pi Image.

Orange Pi One совместим с компонентами других компьютеров серии Orange – более мощным Orange Pi PC и Orange Pi Lite с модулем Wi-Fi вместо порта Ethernet.

Основные характеристики

  • Allwinner h4 SoC;
  • 32-битный 4-ядерный процессор ARM Cortex-A7 с тактовой частотой 1,2 ГГц;
  • 512 МБ DDR3 SDRAM;
  • Mali-400 MP2 с Open GL ES 2.0 / 1.1;
  • Ethernet (LAN).

Технические характеристики

Процессор Allwinner h4 Четырехъядерный процессор Cortex-A7 H. 265 / HEVC 4K 1,2–1,6 ГГц, 32 КБ инструкций + 32 КБ кэш-памяти L1 данных на ядро ​​и 512 КБ кеш-памяти L2
Графический процессор Mali400 MP2 600 МГц поддерживает OpenGL ES 2.0 OpenCL 1x, DX9_3, OpenVG, 1080p45 H.264
ПЗУ 512 МБ (совместно с GPU)
ПЗУ microSD до 64 ГБ
ЛВС 10/100 Мбит / с Etdernet RJ45
Видеовход 1 x разъем последовательного интерфейса камеры (CSI), поддерживает: 8-битный CMOS YUV422, протокол CCIR656 для NTSC и PAL, датчик камеры SM, запись видео до 1080p при 30 кадрах в секунду
Видеовыход HDMI с HDCP, HDMI CEC, функция HDMI 30
Аудиовыход HDMI
USB USB 2. 0 портов: один хост USB 2.0, один USB 2.0 OTG
Прочие IC порт
Периферийные устройства 40-контактная шина расширения: GPIO (универсальный интерфейс ввода-вывода), питание (+ 5 В, + 3,3 В и GND), некоторые контакты могут использоваться как UART, I2C, SPI или PWM
Кнопки Кнопка включения
Индикаторы Индикатор питания, индикатор состояния
Мощность 5В 2А (4.0 мм / 1,7 мм), питание платы через OTG не поддерживается
Размеры 2,71 x 1,88 дюйма
Вес 1,26 унции
OS Android, Lubuntu, Debian, Raspbian

Выводы

За относительно небольшую цену вы получаете платформу с множеством функций. Думаю, он идеально подходит для знакомства с Linux.

Если сравнивать с Raspberry Pi, то как таковых существенных различий нет, у обоих есть свои достоинства и недостатки, например на Raspberry нет нормально работающего Android, на Orange очень даже шустрее, хоть и теплый.

Orange Pi GPIO – домашний помощник


Интеграция orangepi_gpio является основой для всех связанных платформ GPIO в Home Assistant. Для самой интеграции никаких настроек не требуется, для платформ, пожалуйста, проверьте соответствующие страницы.

Эта интеграция обеспечивает следующие платформы:

  • Двоичный датчик: платформа бинарных датчиков orangepi_gpio позволяет вам считывать значения датчиков GPIO вашего Orange Pi или NanoPi.

Конфигурация

Чтобы использовать GPIO Orange Pi в вашей установке, добавьте в файл configuration.yaml следующую строку:

  # Пример записи configuration. yaml
binary_sensor:
  - платформа: orangepi_gpio
    pin_mode: pc
    порты:
      11: Офис ПИРа
      12: Спальня PIR
  

Переменные конфигурации

Тип используемого режима вывода. Это зависит от того, какое устройство вы фактически используете (режимы контактов).

порт: строка имени Обязательно

Номера портов (физические номера контактов) и соответствующие имена.

invert_logic логический (необязательно)

Если истинно , инвертирует выходную логику на АКТИВНЫЙ НИЗКИЙ.

По умолчанию:

ложь (АКТИВНЫЙ ВЫСОКИЙ)

По сравнению с компонентом Raspberry Pi GPIO, эта интеграция не поддерживает подтягивающие резисторы или блокировку портов. Используйте внешние подтягивания и блокировку внешнего порта.

Режимы контактов

Поскольку эта платформа поддерживает различные типы выводов GPIO для разных устройств Orange Pi или Nano Pi, мы используем значение pin_mode , чтобы указать, какой из них использовать. Включенные значения:

Значение Описание
облегченная поддерживает Orange Pi Lite
lite2 поддерживает Orange Pi Lite 2
один поддерживает Orange Pi One
oneplus поддерживает Orange Pi One Plus
шт поддерживает Orange Pi PC
шт2 Поддерживает Orange Pi PC 2
pcplus поддерживает Orange Pi PC Plus
pi3 поддерживает Orange Pi 3
plus2e поддерживает Orange Pi Plus 2E
простой поддерживает Orange Pi Prime
R1 поддерживает Orange Pi R1
Winplus поддерживает Orange Pi WinPlus
ноль поддерживает Orange Pi Zero
zeroplus поддерживает Orange Pi Zero Plus
zeroplus2 поддерживает Orange Pi Zero Plus 2
дуэт поддерживает NanoPi Duo
neocore2 поддерживает NanoPi Neocore 2

Дополнительные ступени

Эта интеграция использует файловую систему SYSFS для управления GPIO. Следовательно, требуется операционная система с CONFIG_GPIO_SYSFS . Насколько мне известно, большинство готовых дистрибутивов по-прежнему включают это по умолчанию.

Начиная с Linux 4.8 sysfs-gpio помечен как устаревший. Однако на сегодняшний день альтернативное символьное устройство GPIO широко не используется. Поэтому мы будем использовать это до тех пор, пока новое символьное устройство не получит более широкой поддержки.

Обычно путь / sys / class / gpio принадлежит пользователю root, поэтому Home Assistant не имеет доступа.Поскольку мы не хотим запускать Home Assistant от имени пользователя root, мы добавим группу gpio , чтобы контролировать этот путь. Я предполагаю, что вы уже добавили пользователя homeassistant в группу gpio , как рекомендовано в руководстве по ручной установке

Создайте новый файл в /etc/udev/rules.d/ с именем 10-gpio.rules со следующим содержанием:

  SUBSYSTEM == "gpio *", PROGRAM = "/ bin / sh -c 'find -L / sys / class / gpio / -maxdepth 2 -exec chown root: gpio {} \; -exec chmod 770 {} \ ; || истина '"
  

Home Assistant теперь сможет управлять вашими контактами GPIO.

Ограничения

Эта интеграция использует прерывания для отслеживания изменений на ваших выводах. Однако это зависит от набора микросхем Allwinner, какие банки контактов поддерживают внешние прерывания. Также существует большая разница между моделями Orange Pi, контакты которых подключены к разъему GPIO. Поэтому в разных устройствах сильно различается, какие контакты вы можете использовать для своих датчиков.

Здесь вы можете найти распиновки всех поддерживаемых устройств Orange Pi. Распиновки для NanoPi Duo и NanoPi NEO Core2 можно найти в вики FriendlyARM.Например: если вывод называется PA01, банк выводов – PA. Если этот банк контактов указан в следующей таблице после вашего набора микросхем, этот конкретный контакт поддерживается.

Набор микросхем Наборы контактов, поддерживающие внешние прерывания
h3 + PA, PG, PL
h4 PA, PG, PL
H5 ПА, ПФ, ПГ, ПЛ
H6 ПФ, ПГ, РН, ПЛ, ПМ
A64 ПБ, ПГ, РН, ПЛ

В таблице ниже вы можете увидеть количество используемых контактов для датчиков на устройство.

Устройство Используемые штифты
h3 + (R1, ноль) 17/17
h4 (Lite, One, PC, PC Plus, Plus 2E) 21/28
H5 (ноль плюс) 17/17
H5 (ноль плюс 2) 15/17
H5 (ПК 2) 22/28
H5 (премьер) 17/28
H6 (Lite 2, One Plus) 3/17
H6 (PI 3) 8/17
A64 (Win Plus) 18/28
Помогите нам улучшить нашу документацию Предложите изменение этой страницы или оставьте / просмотрите отзыв об этой странице.

Возвращаясь к Orange Pi PC 2

Возвращаясь к Orange Pi PC 2 | неонавт

Я решил стереть пыль со своего старого Orange Pi PC 2 и сразу пошел ffffffffffffff , потому что прошло около 10 месяцев с тех пор, как я прикоснулся к SBC, что с таким же успехом может быть 10 лет для новичков. К счастью, в прошлый раз я сохранил некоторые записи и знал, что у меня, по крайней мере, были средства для реализации кнопки безопасного выключения и использования качественной SD-карты на 64 ГБ. Молодец, неонавт! Я подумал, что начну писать заметки в следующий раз, когда забуду абсолютно все, что знаю об Orange Pi.Проверьте тег для заметок о встроенной кнопке и Wi-Fi.

Основы

! [Плата Orange Pi для ПК 2] (/ blog / images / reacquainting-with-orange-pi-orangepipc2_info.jpg) На момент покупки Orange Pi PC 2 был довольно новым SBC с Allwinner H5, который имел ограниченную поддержку. Он принимает 5V2A через ствол и имеет USB OTG и несколько портов USB. OTG не подает питание, что доставляет мне значительные неудобства. Он имеет порт HDMI, поэтому вы можете подключить устройство с входом HDMI, и вам не придется оставаться без головы.! [Распиновка Orange Pi PC 2] (/ blog / images / reacquainting-with-orange-pi-orangepipc2-pinout.png) ### Программное обеспечение Armbian – это ОС, которую выбирают для Orange Pi. Пользователи Windows могут использовать WinSCP для передачи файлов и Putty в SSH и разговаривать с Pi, если они не работают. У меня уже работает Armbian, поэтому я просто обновил прошивку. Баш sudo armbian-config “ ” ### Проблемы с питанием Мне быстро напомнили о проблемах с питанием PC2 или, по крайней мере, о проблемах, которые есть у моей платы. Похоже, что после того, как на эту плату отключают питание, необходимо отключить цилиндрический разъем, а затем снова подключить…. но иногда этого недостаточно, и нужно немного пошевелить / отключить, пока снова не загорится зеленый светодиод. После того, как я подумал, что у меня есть пи, я вернулся к нему и обнаружил, что вообще не могу запитать плату через разъем. Я подтвердил, что напряжение источника питания составляет 5,2 с помощью мультиметра, и сразу после того, как я снова подключил его, неожиданно включился пи. Так что либо валет, либо доска шатаются.

Если вам нужно отключить его от контактов, вы можете подать напряжение 5 В на контакты 5 В (2,4) и GND (6). Однако я не смог сделать это со стабильными источниками питания 5,1 и 5,2 В. Я надеялся, что это будет более надежный способ питания платы, и, похоже, этого должно хватить, но пока я буду полагаться на разъем постоянного тока.

I2C на Orange Pi PC 2 с Armbian Bionic

В отличие от Raspberry Pi, который скрывает шину I2C, используемую внутри для распознавания плат расширения (HATS), две внутренние шины, используемые Orange Pi PC 2 для управления внутренними ресурсами, видимы, но недоступны для использования.Armbian Bionic поставляется с накладками для включения трех дополнительных контроллеров I2C. Первые два соответствуют физическим шинам, доступным на 40-контактном разъеме GPIO, как и на Raspberry Pi. Третий используется для последовательного интерфейса камеры (CSI).

  1. Конфигурация I2C по умолчанию
  2. Включение контроллера i2c0
  3. Включение контроллера i2c1
  4. Контроллер i2c2 и последовательный интерфейс камеры (CSI)
  5. Включение драйвера DS1307 / DS3231 на i2c1 с настраиваемым наложением

SoC Allwinner H5 имеет до 4 контроллеров I2C в соответствии с обзором TWI, приведенным в техническом описании Allwinner H5 (стр. 49).

2.2.9.6. TWI
  • До 4 контроллеров TWI (двухпроводный интерфейс)
  • Поддерживает стандартный режим (до 100 Кбит / с) и быстрый режим (до 400 Кбит / с)
  • Конфигурируемый ведущий / ведомый
  • Разрешает транзакции с 10-битной адресацией
  • Выполнить арбитраж и синхронизацию часов
  • Позволяет работать в широком диапазоне входных тактовых частот

Помните, что TWI (двухпроводной интерфейс) – это то же самое, что и I2C (межинтегральная схема).Карта GPIO показывает, что две физические шины I2C доступны на тех же контактах 40-контактного разъема, что и на моделях Raspberry Pi с 40-контактным разъемом. Физические контакты 3 и 27 – это линии данных ( TWI0_SDA и TWI1_SDA соответственно), а контакты 4 и 28 – это тактовые импульсы ( TWI0_SCK и TWI1_SCK соответственно).

PA3 (UART2_CTS / JTAG_DI0 / PA_EINT3)/PA_EINT G04) PA_EINT G04_EINT 26 / TWI1_SCK46 / PAINT_E900) 4346 38
Orange Pi PC 2 Заголовок GPIO
Функция Контакт Функция
3. 3V 1 2 5V
PA12 (TWI0_SDA / DI_RX / PA_EINT12) 3 4 5V
PA11 (TWI0_SCK / DI_TX / PA_E46 Земля
PA6 (SIM_PWREN / PWM1 / PA_EINT6) 7 8 PC5 (NAND_RE / SDC2_CLK)
GND 9 10 PC6 (NAND_RBC0 / SDC 900) PA1 (UART2_RX / JTAG_CK0 / PA_EINT1) 11 12 PD14 (RGMII_NULL / MII_TXERR / RMII_NULL)
PA0 (UART2_TX / JTAG_MS0 / PAND_EINT0 15 16 PC4 (NAND_CE0)
3.3 В 17 18 PC7 (NAND_RB1)
PA15 (SPI1_MOSI / UART3_RTS / PA_EINT15) 19 20 GND
_ PAINT3_16 (SPI1_MISOTS / UART3 900) / PAINT3 900 22 PA2 (UART2_RTS / JTAG_DO0 / PA_EINT2)
PA14 (SPI1_CLK / UART3_RX / PA_EINT14) 23 24 PA13 (SPI1_CS / UART
PA21 (PCM0_DIN / SIM_VPPPP / PA_EINT21)
PA19 (PCM0_CLK / TWI1_SDA / PA_EINT19) 27 28 PA18 (PCM0_SYNC / TWI1_SCK46 / PAINT7
29 30 GND
PA8 (SIM_DATA / PA_EINT8) 31 32 PG8 (UART1_RTS / PG_EINT8)
PA9 (SIM_RST / PA_EINT9) 33 34 ЗЕМЛЯ
PA10 (SIM_DET / PA_EINT10) 35 36 PG9 (UART1_CTS / PG_EINT9)
PD11 (RGMII_NULL / MII_CRS / RMII_NULL PG6 (UART1_TX / PG_EINT6)
GND 39 40 PG7 (UART1_RX / PG_EINT7)

При новой установке Raspbian Bionic в составе i2c присутствовали два устройства i2c / dev каталог. После установки пакета i2c-tools можно было проверить подключенные устройства I2C.

opipc @ orangepipc2: ~ $ ls -l / dev / i2 * crw-rw —- 1 корень i2c 89, 0 29 февраля 14:59 / dev / i2c-0 crw-rw —- 1 корень i2c 89, 1 фев 29 14:59 / dev / i2c-1 opipc @ orangepipc2: ~ $ sudo apt install i2c-tools -y … Необходимо получить 69,9 КБ архивов. После этой операции будет использовано 289 КБ дополнительного дискового пространства. … Обработка триггеров для man-db (2.8.3-2ubuntu0.1) … Обработка триггеров для libc-bin (2.27-3ubuntu1) … opipc @ orangepipc2: ~ $ sudo i2cdetect -y 0 opipc @ orangepipc2: ~ $ sudo i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 а б в г д е 00: – – – – – – – – – – – – – 10: – – – – – – – – – – – – – – – – 20: – – – – – – – – – – – – – – – – 30:30 – 32 – – – – – – – – – – – – – 40: – – – – – – – – – – – – – – – – 50: – – – – – – – – – 59 – – – – – – 60: – – – – – – – – – – – – – – – – 70: – – – – – – – – opipc @ orangepipc2: ~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 а б в г д е 00: – – – – – – – – – – – – – 10: – – – – – – – – – – – – – – – – 20: – – – – – – – – – – – – – – – – 30: – – – – – – – – – – – – – – – – 40: – – – – – – – – – – – – – – – – 50: – – – – – – – – – – – – – – – – 60: – – – – – УУ – – – – – – – – – – 70: – – – – – – – –

Результаты были неожиданными, потому что было два устройства, подключенных к PA12 и PA11 (физические контакты 3 и 5), которые, как я думал, будут управляться i2c0 , но адреса (0x30, 0x32 и 0x59) были неправильными. .Что касается шины 1, я понятия не имел, что может быть по адресу 0x65, но адрес, вероятно, был правильным, поскольку UU указывает на присутствие драйвера. Просмотр загруженных модулей дал некоторую информацию

opipc @ orangepipc2: ~ $ lsmod | grep -i i2c i2c_mv64xxx 20480 0

Поиск в Интернете привел к фиксации 2013 года в репозитории Linux с подсказкой о том, что делает модуль.

i2c: mv64xxx: Добавить поддержку генератора транзакций I2C Генератор транзакций I2C шаг за шагом освобождает ЦП от управления передачей по протоколу I2C.

В вики SUNXI Xunlong Orange Pi PC 2, ограничение тактовой частоты процессора для OPiPC2 была некоторая информация об адресе I2C 0x65. «Плата Orange Pi PC 2 использует регулятор напряжения SY8106A (U9) для обеспечения напряжения ядра ЦП (VDD_CPUX, номинально 1,2 В при 6 А). Напряжение ЦП по умолчанию составляет 1,1 В после включения (выбирается резисторами на печатной плате). ) и могут быть изменены во время выполнения программным обеспечением через интерфейс I2C (адрес I2C 0x65) ». Заглянув в регулятор напряжения, я обнаружил, что единственным регистром, который я осмелился попытаться прочитать, был его регистр состояния, ожидая значение 0x01 .

Имя Бит Доступ По умолчанию Описание
OTP 7 R 0 1: Температура кристалла выше 160 ° C, OTP срабатывает
0: OTP нет срабатывает
6 R 0 Зарезервировано
5 R 0 Зарезервировано
OC 4 R 0 1.OCP срабатывает, и Vo падает ниже 1/3 уставки.
0. Ток ниже предела тока
Температура
Предупреждение
3 R 0 1: Температура штампа выше 125 ° C
0: Температура штампа ниже 125 °
2 R 0 Зарезервировано
1 R 0 Зарезервировано
PGOOD 0 R 0 1: Vout в диапазоне регулирования мощности хорошее
0: Vout не по мощности хороший диапазон регулирования

Однако далеко не ушел.

opipc @ orangepipc2: ~ $ sudo i2cget -y 1 0x65 0x06 Ошибка: не удалось установить адрес 0x65: устройство или ресурс занят opipc @ orangepipc2: ~ $ lsmod | grep -i sy8106 sy8106a_regulator 16384 1 opipc @ orangepipc2: ~ $ sudo rmmod sy8106a_regulator rmmod: ОШИБКА: используется модуль sy8106a_regulator

При удалении модуля rtc_ds1307 для считывания температуры часов реального времени DS3231, работавших на Raspberry Pi, мне явно не повезло. Вот и пора переходить к другой шине I2C.Вот что я нашел о i2c-0 , перечислив устройства шины I2C и соответствующие сообщения запуска.

opipc @ orangepipc2: ~ $ ls -l / sys / bus / i2c / devices всего 0 lrwxrwxrwx 1 root root 0 5 марта 12:03 1-0065 -> ../../../devices/platform/soc/1f02400.i2c/i2c-1/1-0065 lrwxrwxrwx 1 root root 0 5 марта 12:02 i2c-0 -> ../../../devices/platform/soc/1ee0000.hdmi/i2c-0 lrwxrwxrwx 1 root root 0 5 марта 12:03 i2c-1 -> ../../../devices/platform/soc/1f02400.i2c/i2c-1 opipc @ orangepipc2: ~ $ dmesg | grep hdmi [2.104958] sun8i-dw-hdmi 1ee0000.hdmi: 1ee0000.hdmi Supply hvcc не найден, используется фиктивный регулятор [2.105789] sun8i-dw-hdmi 1ee0000.hdmi: Обнаружен контроллер HDMI TX v1.32a с HDCP (sun8i_dw_hdmi_phy) [2.106117] sun8i-dw-hdmi 1ee0000.hdmi: зарегистрированный драйвер шины DesignWare HDMI I2C. [2.106341] sun4i-drm display-engine: привязанный 1ee0000.hdmi (ops 0xffff800010bdcd30)

Согласно SUNXI, Allwinner h4 SoC использует контроллер Synopsys DesignWare HDMI. Кроме того, «… H5 – это, по сути, Allwinner h4 с ядрами Cortex-A7, замененными ядрами Cortex-A53.«Предположительно, OPiPC2 также имеет контроллер Synopsys DesignWare HDMI, что подтверждают сообщения запуска. Также можно увидеть, что к контроллеру i2c-0 подключен драйвер шины I2C. Кстати, drm в модуле отображения sun4i-drm означает Direct Rendering Manager, подсистему ядра Linux, взаимодействующую с графическим процессором, а не для управления цифровыми правами. Таким образом, определенно похоже, что i2c-0 управляет другим внутренним каналом I2C.

Вероятно, было бы лучше не совать обе эти внутренние шины I2C, учитывая предупреждение в i2cdetect man page:

Предупреждение
Эта программа может сбить с толку вашу шину I2C, вызвать потерю данных и тому подобное!

К счастью, ни один OPiPC2 не пострадал при создании этого поста.

Утилита конфигурации системы может использоваться для включения контроллера i2c0 .

opipc @ orangepipc2: ~ $ sudo armbian-config

Выберите System (Параметры системы и безопасности), , затем Hardware (Переключите конфигурацию оборудования: UART, I2C и т. Д.) и, наконец, отметьте i2c0 для установки. Обратите внимание, что можно включить 3 наложения дерева устройств I2C. По сути, утилита добавляет запись в файл конфигурации /boot/armbianEnv.txt . Соответственно, можно активировать оверлей дерева желаемых устройств, включив его в файл конфигурации (см. Оверлеи дерева устройств в документации Руководства пользователя Armbian).

opipc @ orangepipc2: ~ $ sudo nano /boot/armbianEnv.txt

многословие = 1 консоль = оба overlay_prefix = sun50i-h5 rootdev = UUID = a948f949-ea06-4a76-9d5d-4c9da81e0efe rootfstype = ext4 usbstoragequirks = 0x2537: 0x1066: u, 0x2537: 0x1068: u оверлеи = i2c0

Независимо от того, какой способ активировать контроллер I2C, потребуется перезагрузка.Когда это будет сделано, найдите подключенные устройства на i2c-0 .

opipc @ orangepipc2: ~ $ ls -l / sys / bus / i2c / devices / i2c * lrwxrwxrwx 1 root root 0 5 марта 18:18 / sys / bus / i2c / devices / i2c-0 -> ../../../devices/platform/soc/1c2ac00.i2c/i2c-0 lrwxrwxrwx 1 root root 0 5 марта 18:18 / sys / bus / i2c / devices / i2c-1 -> ../../../devices/platform/soc/1ee0000.hdmi/i2c-1 lrwxrwxrwx 1 root root 0 5 марта 18:18 / sys / bus / i2c / devices / i2c-2 -> ../../../devices/platform/soc/1f02400.i2c/i2c-2 opipc @ orangepipc2: ~ $ sudo ls -l / dev / i2c * crw-rw —- 1 root i2c 89, 0 2 марта 19:30 / dev / i2c-0 Аппаратная шина I2C на PA12 и PA11 (физические контакты 3 и 5) crw-rw —- 1 root i2c 89, 2 марта 19:30 / dev / i2c-1 Внутренняя шина I2C для контроллера hdmi crw-rw —- 1 root i2c 89, 2 марта 2 19:30 / dev / i2c-2 Внутренняя шина I2C для регулятора напряжения SY8106A opipc @ orangepipc2: ~ $ sudo i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 а б в г д е 00: – – – – – – – – – – – – – 10: – – – – – – – – – – – – – – – – 20: – – – – – – – – – – – – – – – – 30: – – – – – – – – – – – – – – – – 40: – – – – – – – – – – – – – – – – 50: – – – – – – – 57 – – – – – – – – 60: – – – – – – – – 68 – – – – – – – 70: – – – – – – – –

Два устройства, подключенные к физическим контактам 3 и 5 40-контактного разъема, назначенного контроллеру i2c-0 , находятся по правильным адресам.

  • 0x57: AT24C32 EEPROM
  • 0x68: DS3231 Часы реального времени.

Физический модуль с этими двумя устройствами подробно обсуждался при установке на Raspberry Pi. Я хотел повторить тест чтения и записи в EEPROM, сделанный в этом посте, но столкнулся с несколькими трудностями. Первое было легко исправить: добавить пользователя по умолчанию в группу i2c , которая была создана при установке i2c-tools , чтобы избежать необходимости постоянно прибегать к команде sudo при работе с шиной I2C. .

opipc @ orangepipc2: ~ $ sudo adduser opipc i2c Добавление пользователя opipc в группу i2c … Добавление пользователя opipc в группу i2c Выполнено. opipc @ orangepipc2: ~ $ exit

Вторая проблема заключалась в обнаружении разрушения стека **** *** Ошибка каждый раз, когда я пытался запустить программу eeprog . Все обсуждения «разбиения стека» говорили о переполнении буфера, из-за чего я вынужден был тщетно искать буферы в исходном коде. Пытаясь найти последнюю версию исходной ветки eeprog , я обнаружил форк версии 0.7.6 от Alvin Wang с одним изменением в исходном коде 24cXX.c , которое устранило проблему. Вот как установить и исправить “оторвать” версию eeprog таким же образом.

opipc @ orangepipc2: ~ $ wget https://github.com/jsarenik/eeprog/archive/master.zip –2020-01-29 19: 10: 06– https://github.com/jsarenik/eeprog/archive/master.zip … 2020-01-29 19:10:07 (268 КБ / с) – «master.zip» сохранен [19445] opipc @ orangepipc2: ~ $ unzip master.zip … opipc @ orangepipc2: ~ $ mv eeprog-master eeprog opipc @ orangepipc2: ~ $ cd eeprog opipc @ orangepipc2: ~ / eeprog $ nano 24cXX.c

В редакторе измените первую строку функции eeprom_open .

int eeprom_open (char * dev_fqn, int addr, int type, int write_cycle_time, struct eeprom * e) { int funcs, fd, r;

С

по

int eeprom_open (char * dev_fqn, int addr, int type, int write_cycle_time, struct eeprom * e) { // int funcs, fd, r; // https://github.com/alvintpwang/eeprog/commit/8ffb

d87af0aa87a817f2a6cfd63121f7c02 беззнаковые длинные функции; int fd, r;

Я думаю, что происходит то, что ioctl (fd, I2C_FUNCS, & funcs) , вызываемый в eeprom_open , возвращает 64-битный список функций в Armbian Bionic, который является 64-битной ОС, но int – 32-битный .Проблема не возникла в Raspbian Buster, который все еще является 32-битной системой. После этого исправления можно было продолжить работу, как с Raspberry Pi.

opipc @ orangepipc2: ~ / eeprog $ make opipc @ orangepipc2: ~ / eeprog $ cd .. opipc @ orangepipc2: ~ $ eeprog / eeprog -f -16 -r 0:16 / dev / i2c-0 0x57 eeprog 0.7.7-tear12, устройство чтения / записи 24Cxx EEPROM Авторские права (c) 2003-2004 Стефано Барбато – Все права защищены. Авторские права (c) 2011 Крис Русоцки – Все права защищены. Шина: / dev / i2c-0, адрес: 0x57, режим: 16 бит Операция: чтение 16 байтов со смещения 0, выходной файл: Чтение 16 байт из 0x0 ��������������� opipc @ orangepipc2: ~ $ echo “eeprom на i2c-0” | eeprog / eeprog -f -16 -w 0x00 -t 2 / dev / i2c-0 0x57 eeprog 0.7.7-tear12, устройство чтения / записи EEPROM 24Cxx Авторские права (c) 2003-2004 Стефано Барбато – Все права защищены. Авторские права (c) 2011 Крис Русоцки – Все права защищены. Шина: / dev / i2c-0, адрес: 0x57, режим: 16 бит Операция: запись со смещением 0, входной файл: Время цикла записи: 2 миллисекунды Запись , начиная с адреса 0x0 …………….. opipc @ orangepipc2: ~ $ eeprog / eeprog -f -16 -r 0:16 / dev / i2c-0 0x57 eeprog 0.7.7-tear12, устройство чтения / записи 24Cxx EEPROM Авторские права (c) 2003-2004 Стефано Барбато – Все права защищены.Авторские права (c) 2011 Крис Русоцки – Все права защищены. Шина: / dev / i2c-0, адрес: 0x57, режим: 16 бит Операция: чтение 16 байтов со смещения 0, выходной файл: Чтение 16 байт из 0x0 eeprom на i2c-0

Так как на H5 SoC есть часы реального времени, которые включены в ядре, и, похоже, нет наложения часов реального времени эквивалент i2c-rtc , найденный в Raspbian, hwclock не может использоваться для доступа к DS3231 (это не точное утверждение, и, как показано ниже, может быть установлен оверлей rtc.) Было легко читать и записывать регистры часов реального времени с помощью некоторых утилит i2c-tools : i2cdump и i2cset .

opipc @ orangepipc2: ~ $ i2cdump -y -r 0x00-0x06 0 0x68 b 0 1 2 3 4 5 6 7 8 9 а б в г д е 0123456789abcdef 00: 18 03 00 01 01 01 00 ??. ???.

Это соответствует времени 00-01-01 00:03:18. Давайте изменим год и снова сбросим регистры RTC.

opipc @ orangepipc2: ~ $ i2cset -y 0 0x68 0x06 0x22 b opipc @ orangepipc2: ~ $ i2cdump -y -r 0x00-0x06 0 0x68 b 0 1 2 3 4 5 6 7 8 9 а б в г д е 0123456789abcdef 00: 14 08 00 01 01 01 22 ??.??? ”

Время было изменено на 22-01-01 00:08:14, чтобы год был обновлен без проблем.

Было легко проверить, что i2c1 управляет аппаратной шиной I2C на контактах 27 и 28 заголовка 40 GPIO, подключив модуль RTC / EEPROM к этим контактам (SDA к контакту 27, SCL к контакту 28). Это измененный файл конфигурации.

многословие = 1 консоль = оба overlay_prefix = sun50i-h5 rootdev = UUID = a948f949-ea06-4a76-9d5d-4c9da81e0efe rootfstype = ext4 usbstoragequirks = 0x2537: 0x1066: u, 0x2537: 0x1068: u оверлеи = i2c0 i2c1

После перезагрузки проверил все шины I2C.

opipc @ orangepipc2: ~ $ ls -l / sys / bus / i2c / devices / i2c * lrwxrwxrwx 1 root root 0 5 марта 19:56 / sys / bus / i2c / devices / i2c-0 -> ../../../devices/platform/soc/1c2ac00.i2c/i2c-0 lrwxrwxrwx 1 root root 0 5 марта 19:56 / sys / bus / i2c / devices / i2c-1 -> ../../../devices/platform/soc/1c2b000.i2c/i2c-1 lrwxrwxrwx 1 root root 0 5 марта 19:56 / sys / bus / i2c / devices / i2c-2 -> ../../../devices/platform/soc/1ee0000.hdmi/i2c-2 lrwxrwxrwx 1 root root 0 5 марта, 19:56 / sys / bus / i2c / devices / i2c-3 -> ../../../devices/platform/soc/1f02400.i2c/i2c-3 opipc @ orangepipc2: ~ $ ls -l / dev / i2c * crw-rw —- 1 root i2c 89, 0 2 марта 19:30 / dev / i2c-0 Аппаратная шина I2C на PA12 и PA11 (физические контакты 3 и 5) crw-rw —- 1 root i2c 89, 2 марта 19:30 / dev / i2c-1 Аппаратная шина I2C на PA19 и PA18 (физические контакты 27 и 28) crw-rw —- 1 root i2c 89, 2 марта 2 19:30 / dev / i2c-2 Внутренняя шина I2C для контроллера hdmi crw-rw —- 1 root i2c 89, 3 марта 3 23:10 / dev / i2c-3 Внутренняя шина I2C для регулятора напряжения SY8106A

Как и раньше, внутренним контроллерам I2C назначаются более высокие номера шины, поскольку контроллеры I2C добавлены с наложениями.Проверить, доступен ли EEPROM на шине 1, было несложно.

opipc @ orangepipc2: ~ $ echo “eeprom на i2c-1” | eeprog / eeprog -f -16 -w 0x00 -t 2 / dev / i2c-1 0x57 eeprog 0.7.7-tear12, устройство чтения / записи 24Cxx EEPROM Авторские права (c) 2003-2004 Стефано Барбато – Все права защищены. Авторские права (c) 2011 Крис Русоцки – Все права защищены. Шина: / dev / i2c-1, адрес: 0x57, режим: 16 бит Операция: запись со смещением 0, входной файл: Время цикла записи: 2 миллисекунды Запись , начиная с адреса 0x0 …………….. opipc @ orangepipc2: ~ $ eeprog / eeprog -f -16 -r 0:16 / dev / i2c-1 0x57 eeprog 0.7.7-tear12, устройство чтения / записи 24Cxx EEPROM Авторские права (c) 2003-2004 Стефано Барбато – Все права защищены. Авторские права (c) 2011 Крис Русоцки – Все права защищены. Шина: / dev / i2c-1, адрес: 0x57, режим: 16 бит Операция: чтение 16 байтов со смещения 0, выходной файл: Чтение 16 байт из 0x0 eeprom на i2c-1

На этот раз я использовал обновленную версию сценария Python rtc , чтобы проверить возможность чтения и записи DS3231 на шине 1.

opipc @ orangepipc2: ~ $ ve rtcpy (rtcpy) opipc @ orangepipc2: ~ $ rtcpy / rtc -i 1 1 сен 02:29:16 2059 (rtcpy) opipc @ orangepipc2: ~ $ rtcpy / rtc -i 1 -s “2018-07-01 01:01:05” (rtcpy) opipc @ orangepipc2: ~ $ rtcpy / rtc -i 1 Вс 1 июл 01:01:07 2018


Это часть файла описания, относящаяся к оверлеям I2C.

opipc @ orangepipc2: ~ $ cat /boot/dtb/allwinner/overlay/README.sun50i-h5-overlays … ### i2c2 Активирует шину TWI / I2C 2 Контакты I2C2 (SCL, SDA): PE12, PE13 На большинстве плат эта шина подключена к разъему камеры (CSI). …

Хотя основной справочник по оборудованию OPiPC2 описывает последовательный интерфейс камеры (CSI), в нем не указывается ни используемый контроллер I2C, ни контакты GPIO. Схема действительно показывает, что контакты PE12 и PE13 H5, обозначенные как PE12 / CSI_SCK / TWI2_SCK и PE13 / CSI_SDA / TWI2_SDA, подключены к CAM-SCK и CAM-SDA (контакты 4 и 3 разъема CSI).

Я надеялся использовать камеру Raspberry Pi для тестирования соединения I2C – CSI на OPiPC2, но обсуждение на форуме Orange Pi, Как подключить камеру Raspberry Pi к Orange pi и связанная с ней запись в Hackaday: камера Raspberry Pi на плате Orange Pi Plus.Преобразуйте 2 полосы MIPI CSI-2 в DVP с помощью FPGA. значительно уменьшили мои надежды. Они были полностью разбиты, когда стало очевидно, что кабель камеры не подходит к разъему OPiPC2 CSI. Тем не менее, я включил шину I2C и продолжил обычное обнаружение шин I2C.

многословие = 1 консоль = оба overlay_prefix = sun50i-h5 rootdev = UUID = a948f949-ea06-4a76-9d5d-4c9da81e0efe rootfstype = ext4 оверлеи = i2c0 i2c1 i2c2 usbstoragequirks = 0x2537: 0x1066: u, 0x2537: 0x1068: u

Как и прежде, есть еще две шины I2C помимо трех, для которых разрешены наложения дерева устройств.

opipc @ orangepipc2: ~ $ ls -l / sys / bus / i2c / devices / i2c * lrwxrwxrwx 1 root root 0 5 марта 20:36 / sys / bus / i2c / devices / i2c-0 -> ../../../devices/platform/soc/1c2ac00.i2c/i2c-0 lrwxrwxrwx 1 root root 0 5 марта 20:36 / sys / bus / i2c / devices / i2c-1 -> ../../../devices/platform/soc/1c2b000.i2c/i2c-1 lrwxrwxrwx 1 root root 0 5 марта 20:36 / sys / bus / i2c / devices / i2c-2 -> ../../../devices/platform/soc/1c2b400.i2c/i2c-2 lrwxrwxrwx 1 root root 0 5 марта 20:36 / sys / bus / i2c / devices / i2c-3 -> ../../../devices/platform/soc/1ee0000.hdmi/i2c-3 lrwxrwxrwx 1 root root 0 5 марта 20:36 / sys / bus / i2c / devices / i2c-4 -> ../../../devices/platform/soc/1f02400.i2c/i2c-4 opipc @ orangepipc2: ~ $ ls -l / dev / i2c * crw-rw —- 1 root i2c 89, 0 5 марта 20:36 / dev / i2c-0 Аппаратная шина I2C на PA12 и PA11 (физические контакты 3 и 5) crw-rw —- 1 root i2c 89, 1 марта 5 20:36 / dev / i2c-1 Аппаратная шина I2C на PA19 и PA18 (физические контакты 27 и 28) crw-rw —- 1 root i2c 89, 2 марта 5 20:36 / dev / i2c-2 Аппаратная шина I2C на PE13 и PE12 (контакты 3 и 4 разъема CSI) crw-rw —- 1 корень i2c 89, 3 марта 5 20:36 / dev / i2c-3 crw-rw —- 1 корень i2c 89, 4 марта 5 20:36 / dev / i2c-4 opipc @ orangepipc2: ~ $ ls -l / dev / i2c * crw-rw —- 1 root i2c 89, 0 4 марта 14:28 / dev / i2c-0 Аппаратная шина I2C на физических контактах 3 и 5 crw-rw —- 1 root i2c 89, 1 марта 4 14:28 / dev / i2c-1 Аппаратная шина I2C на физических выводах 27 и 28 crw-rw —- 1 root i2c 89, 2 марта 4 14:28 / dev / i2c-2 Аппаратная шина I2C на разъеме CSI crw-rw —- 1 root i2c 89, 3 марта 4 14:28 / dev / i2c-3 Внутренняя шина I2C для контроллера hdmi crw-rw —- 1 root i2c 89, 4 марта 4 14:28 / dev / i2c-4 Внутренняя шина I2C для регулятора напряжения SY8106A

Странно, что i2cdetect -y 2 заняло более четырех минут, чтобы завершить сканирование шины.

opipc @ orangepipc2: ~ $ дата Чт 5 мар 20:45:33 AST 2020 opipc @ orangepipc2: ~ $ 2cdetect -y 2 0 1 2 3 4 5 6 7 8 9 а б в г д е 00: – – – – – – – – – – – – – 10: – – – – – – – – – – – – – – – – 20: – – – – – – – – – – – – – – – – 30: – – – – – – – – – – – – – – – – 40: – – – – – – – – – – – – – – – – 50: – – – – – – – – – – – – – – – – 60: – – – – – – – – – – – – – – – – 70: – – – – – – – – opipc @ orangepipc2: ~ $ дата Чт 5 мар 20:49:51 AST 2020

К сожалению, я не смог дальше исследовать эту аппаратную шину I2C.

Среди примеров пользовательских оверлеев в репозитории Armbian Github есть один с именем i2c-ds1307.dts , который можно установить после Инструкции к Руководству пользователя Armbian. Готовясь к этому, я сократил количество контроллеров I2C, установив только i2c1 . Вот содержимое файла /boot/armbianEnv.txt .

многословие = 1 консоль = оба overlay_prefix = sun50i-h5 rootdev = UUID = a948f949-ea06-4a76-9d5d-4c9da81e0efe rootfstype = ext4 overlays = i2c1 usbstoragequirks = 0x2537: 0x1066: u, 0x2537: 0x1068: u

После перезагрузки было три устройства I2C.

opipc @ orangepipc2: ~ $ ls -l / dev / i2c * crw-rw —- 1 root i2c 89, 1 марта 4 14:28 / dev / i2c-1 Аппаратная шина I2C на физических выводах 27 и 28 crw-rw —- 1 root i2c 89, 2 марта 4 14:28 / dev / i2c-2 Поддельная шина I2C crw-rw —- 1 root i2c 89, 3 марта 4 14:28 / dev / i2c-3 Внутренняя шина I2C для регулятора напряжения SY8106A

Я создал каталог и скопировал в него исходный файл оверлея.

opipc @ orangepipc2: ~ $ mkdir ds1307_dts opipc @ orangepipc2: ~ $ wget https: // raw.githubusercontent.com/armbian/sunxi-DT-overlays/master/examples/i2c-ds1307.dts -O ds1307_dts / i2c-ds1307.dts

Я изменил псевдоним, чтобы установить DS3231 как устройство rtc1 вместо rtc0 , чтобы hwclock мог читать / записывать как DS3231, так и встроенные часы реального времени.

opipc @ orangepipc2: ~ $ cat ds1307_dts / i2c-ds1307.dts / dts-v1 /; / плагин /; / { совместимый = “allwinner, sun4i-a10”, “allwinner, sun7i-a20”, “allwinner, sun8i-h4”, “allwinner, sun50i-a64”, “allwinner, sun50i-h5”; / * * Псевдонимы могут использоваться для установки внешнего RTC как rtc0 * Необходимо указать правильный путь к контроллеру I2C, к которому подключен RTC, * этот пример для I2C1 на h4 – работает на I2C1 H5 * ПРИМЕЧАНИЕ: установка времени при загрузке ядром * может не работать в некоторых случаях, если внешний модуль RTC загружается слишком поздно * / фрагмент @ 0 { целевой путь = “/ псевдонимы”; __overlay__ { # rtc0 = “/ soc / i2c @ 01c2b000 / ds1307 @ 68”; rtc1 = “/ soc / i2c @ 01c2b000 / ds1307 @ 68”; }; }; фрагмент @ 1 { цель = <& i2c1>; __overlay__ { # адрес-ячейки = <1>; # размер-ячейки = <0>; ds1307 @ 68 { совместимый = “Даллас, DS1307”; рег = <0x68>; status = “хорошо”; }; }; }; };

Если аппаратные часы должны были быть подключены к шине I2C PA12 и PA11 и отображаться как rtc3 в каталоге / dev, тогда фрагмент «alias» должен иметь вид rtc3 = "/ soc // i2c @ 1c2ac00 / ds1307 @ 68. "; .Конечно, параметр i2c0 должен быть включен в строку overlays файла конфигурации /boot/armbianEnv.txt .

Необходимо было скомпилировать оверлей и затем перезагрузить систему.

opipc @ orangepipc2: ~ / ds1307_dts $ sudo armbian-add-overlay i2c-ds1307.dts Составление оверлея Копирование скомпилированного файла оверлея в / boot / overlay-user / Для применения изменений требуется перезагрузка

Первая проверка шин I2C, загруженных модулей ядра и устройств rtc после перезагрузки была очень обнадеживающей.

opipc @ orangepipc2: ~ $ ls -l / sys / bus / i2c / devices / всего 0 lrwxrwxrwx 1 root root 0 5 марта 21:18 1-0068 -> ../../../devices/platform/soc/1c2b000.i2c/i2c-1/1-0068 lrwxrwxrwx 1 root root 0 5 марта 21:18 3-0065 -> ../../../devices/platform/soc/1f02400.i2c/i2c-3/3-0065 lrwxrwxrwx 1 root root 0 5 марта 21:18 i2c-1 -> ../../../devices/platform/soc/1c2b000.i2c/i2c-1 lrwxrwxrwx 1 root root 0 5 марта 21:18 i2c-2 -> ../../../devices/platform/soc/1ee0000.hdmi/i2c-2 lrwxrwxrwx 1 корень root 0 5 марта 21:18 i2c-3 ->../../../devices/platform/soc/1f02400.i2c/i2c-3 opipc @ orangepipc2: ~ $ lsmod | grep ds1307 rtc_ds1307 32768 0 opipc @ orangepipc2: ~ $ ls -l / dev / rtc * lrwxrwxrwx 1 root root 4 марта, 15:40 / dev / rtc -> rtc0 crw ——- 1 root root 253, 0 4 марта 15:40 / dev / rtc0 crw ——- 1 root root 253, 1 марта 4 15:40 / dev / rtc1

Ниже показано, что системную утилиту hwclock можно использовать для чтения или установки времени как внешних часов реального времени DS3231, так и внутренних часов реального времени.

opipc @ orangepipc2: ~ $ sudo hwclock -D hwclock из util-linux 2.31.1 Системное время: 1583350900.345862 Пытаюсь открыть: / dev / rtc0 Использование интерфейса rtc к часам. Предполагается, что аппаратные часы хранятся в формате UTC. Ожидание тиканья часов … … есть тиканье часов Время, считываемое с аппаратных часов: 2020/03/04 19:41:42 Hw часы: 2020/03/04 19:41:42 = 1583350902 секунды с 1969 года Время с момента последней настройки 1583350902 секунды. Расчетный дрейф аппаратных часов составляет 0,000000 секунды. 2020-03-04 15:41:40.143502-0400 opipc @ orangepipc2: ~ $ sudo hwclock -f / dev / rtc1 -D hwclock из util-linux 2.31.1 Системное время: 1583350951.574846 Использование интерфейса rtc к часам. Предполагается, что аппаратные часы хранятся в формате UTC. Ожидание тиканья часов … ioctl (4, RTC_UIE_ON, 0): недопустимый аргумент Ожидание в цикле времени от / dev / rtc1 для изменения … есть тиканье часов Время, считываемое с аппаратных часов: 2000/01/01 01:34:52 Hw часы: 01.01.1000 01:34:52 = 9466 секунды с 1969 г. Время с момента последней регулировки составляет 9466 секунды. Расчетный дрейф аппаратных часов равен 0.000000 секунд 1999-12-31 21: 34: 50.992573-0400 opipc @ orangepipc2: ~ $ sudo hwclock -f / dev / rtc1 –set –date “2020-03-03 13:52:00” -D hwclock из util-linux 2.31.1 Системное время: 1583351018.357764 Использование интерфейса rtc к часам. Предполагается, что аппаратные часы хранятся в формате UTC. 1583351018.857764 достаточно близко к 1583351018.857764 (0,000000 <0,001000) Установите RTC на 1583257920 (1583257920 + 0; refsystime = 1583351018.357764) Установка аппаратных часов на 17:52:00 = 1583257920 секунд с 1969 г. ioctl (RTC_SET_TIME) прошел успешно.Не настраивать коэффициент дрейфа, потому что не использовалась опция --update-drift. Новые данные / etc / adjtime: 0,000000 1583257920 0,000000 1583257920 универсальное глобальное время opipc @ orangepipc2: ~ $ дата Ср 4 мар 16:08:18 AST 2020 opipc @ orangepipc2: ~ $ sudo hwclock 2020-03-04 16:08: 11.146445-0400 opipc @ orangepipc2: ~ $ sudo hwclock -f / dev / rtc1 2020-03-03 14: 16: 54.798416-0400

Насколько мне известно, armbian-add-overlay компилирует i2c-ds1307.dts в /boot/overlay-user/i2c-ds1307.dtbo и добавляет строку user_overlays в / bootv / armbianEn .txt .

opipc @ orangepipc2: ~ $ ls -l / boot / overlay-user всего 4 -rw-r – r– 1 root root 640 4 марта 15:39 i2c-ds1307.dtbo opipc @ orangepipc2: ~ $ cat /boot/armbianEnv.txt многословие = 1 консоль = оба overlay_prefix = sun50i-h5 rootdev = UUID = a948f949-ea06-4a76-9d5d-4c9da81e0efe rootfstype = ext4 overlays = i2c1 user_overlays = i2c-ds1307 usbstoragequirks = 0x2537: 0x1066: u, 0x2537: 0x1068: u

Итак, чтобы удалить наложение, я удалил скомпилированный файл dtbo , оставив пустой каталог / boot / overlay-user / , и удалил строку user_overlays = i2c-ds1307 в / boot / armbianEnv.txt файл. После перезагрузки пропал / dev / rtc1 .

Компилятор armbian-add-overlay не будет добавлять оверлеи = i2c1 в файл конфигурации самостоятельно. Это нужно делать вручную, как показано выше.

Вспомните плату Orange Pi Plus 2 – Meccanismo Complesso

Просмотры сообщений: 8 436

Введение

В этой статье вы увидите одну из плат Orange Pi: плату Orange Pi + 2 .Эта карта является частью всех плат, подобных Raspberry Pi, которые отличаются некоторыми техническими характеристиками (обычно улучшенными) по сравнению с соответствующей оригинальной платой Raspberry.

Примечание: Хотя карта на самом деле не самая современная (декабрь 2015 г.), я написал эту статью по просьбе некоторых людей, которые интересуются этой темой и хотели бы узнать больше о некоторых Raspberry Pi- нравятся модели, о которых вы так много слышите.

Сюньлун Оранжевый Пи + 2

Плата Orange Pi +2 была выпущена в декабре 2015 года и является частью серии плат, подобных Raspberry Pi, о которых вы так много слышите, и каждый из нас хотел бы узнать больше.(Если вам интересно, вы можете обратиться к официальному сайту, хотя он не содержит много информации).

Orange Pi + 2 , как и все другие карты серии Orange, производится китайской компанией Xunlong, которая всегда занималась электроникой. Используя схемы с открытым исходным кодом на основе Raspberry, Xunlong хотел создать серию совместимых плат, которые следовали бы за эквивалентными платами Raspberry, но в то же время представляли некоторые превосходные технические характеристики, добавляя некоторые более продвинутые электронные компоненты.

Если вас интересуют все модели Orange Pi и другие модели Xunlong, я рекомендую вам обратиться к этой конкретной Wiki.

Таким образом,

Orange Pi + 2 – это микрокомпьютер, основанный на проекте с полностью открытым исходным кодом. У него достаточно вычислительной мощности, чтобы монтировать многие из наиболее широко используемых операционных систем, таких как Android 4.4, Ubuntu, Debian и Raspbian.

Технические характеристики

Сначала взглянем на плату

Orange Pi Plus 2 монтируется как процессор Allwinner h4 ARM Cortex-A7 Quad Core на 1.2 ГГц и как 2 ГБ памяти DDR3 SDRAM . Он также оснащен встроенным графическим процессором (GPU) с частотой 600 МГц Mali400MP2 .

Примечание : Вы часто найдете сообщения, в которых сообщается о частоте процессора 1,6 ГГц. Информация носит чисто маркетинговый характер, как указано в примечании [1] официальной страницы Wiki.

Другими интересными техническими особенностями являются интегрированная 16 ГБ памяти (EEMC Flash), которую можно расширить с помощью слота для SD-карты, который может вместить до 64 ГБ памяти .Плата поддерживает жесткие диски SATA емкостью до 2 ТБ.

Что касается связи, он имеет встроенный модуль WiFi Realtek (RTL8189ETV), порт Ethernet 10/100/1000 RJ45. Он также имеет HDMI, видеовыход и два аудиопорта (один MIC и один OUT), 4 порта USB 2.0 HOST и 1 порт USB 2.0 OTG. Наконец, на нем также установлен инфракрасный датчик для функций дистанционного управления и 3 кнопки.

Наконец, как и все платы, подобные Raspberry Pi, 40-контактный разъем GPIO определенно не мог отсутствовать.

Сюньлун Оранжевый Пи + 2E

Примерно через 6 месяцев после выпуска предыдущей платы в мае 2016 года была выпущена новая версия: Orange Pi + 2E . Эта модель не сильно отличается от предыдущей, хотя расположение электронных компонентов было полностью изменено. Вы можете увидеть это на следующем рисунке.

Все осталось без изменений, за исключением удаления порта SATA и увеличения требуемой выходной мощности, которая переходит с DC5V @ 2A на DC5V @ 3A.

Выводы

В этой статье вы ознакомились с кратким обзором технических характеристик платы Orange Pi + 2 и ее версии 2E. Цель этой статьи не в том, чтобы представить новую плату, а в том, чтобы дополнить базу знаний о платах, подобных Raspberry Pi, чтобы лучше понять текущий обзор и различные попытки или подходы, которые рынок реализует в ответ на каждую Raspberry.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *