Comments 19
Да, и это у подавляющего большинства одноплатников так.
Подразумевается, что одноплатники всегда имеют доступ в интернет и работают 24/7, а значит и часы им не нужны (NTP хватает).
Нет, там еще кварц нужен на 32.768 кГц.
Но судя по фотографии, он там есть.
Hidden text

Так это же вроде антистатик.....
Это кварцевый резонатор. Первые буквы EA - говорят о том, что на 99% это резонатор на 32768Гц. Можно ткнуться осциллографом на выводы(которые ближе к процессору), чтобы убедиться в этом, по идее он должен сразу запускаться вместе с питанием процессора.
В прошлогодней статье (за вашим авторством) есть фото верхнего слоя: Проект Repka Pi — переклеивание этикеток или реальная разработка? / Хабр (habr.com)
И судя по нему, вывод K6 по которому идет внешнее питание на RTC (если верить даташиту на процессор) разведен и уходит во внутренние слои. Если он разведен на обвязку, то возможно ее найти и модифицировать для использования батарейки/ионистора, и тогда не нужны будут костыли в виде отдельного RTC-модуля.
Hidden text

Это не костыли. Просто нужно немного под другим углом посмотреть - и вот почему, причин несколько:
1) Места на плате мало и доработки по трассировке будут сложными. Помимо этого расположение элемента питания и его разъёма может оказаться мешающим в текущих проектах уже заточенных конкретно под данную модель и форм-фактор платы.
2) 90% пользователей устройства в RTC не будут нуждаться и для них это будет ненужно удорожание и усложнение.
3) RTC во встраиваемых решениях могут требоваться сверх-точные и тогда встроенные часы всё равно не подойдут и нужно ставить точный внешний модуль.
4) Сам проект Repka Pi является идеологически именно аналогом и альтернативой RBPi и потому обеспечивается в данный момент точное соответствие - нет часов в RBPi 3, значит и недолжно быть и в Repka Pi 3.
5) Задача Repka Pi в т.ч. применение в образовании и в этом случае подключение модуля RTC ещё один полезный учебный кейс.
1) Места на плате мало и доработки по трассировке будут сложными. Помимо этого расположение элемента питания и его разъёма может оказаться мешающим в текущих проектах уже заточенных конкретно под данную модель и форм-фактор платы.
Места под малюсенький ионистор более чем хватает.
RTC во встраиваемых решениях могут требоваться сверх-точные и тогда встроенные часы всё равно не подойдут и нужно ставить точный внешний модуль.
Встроенный RTC имеет абсолютно такую же точность что и внешний. Да и китайский модуль думаете будет сверх-точный?
Ниже эта тема уже раскрыта коллегой в комментах прекрасно - и про то, что DS3231M не просто точный, он ещё и термокомпенсированный, и про то, что модули они на то и модули, чтобы их устанавливали только те, кому они нужны и только там где нужно для расширения базового функционала. Сама концепция данного формфактора с 40pin разъёмом универсальным такова, что предназначена для быстрой кастомизации под конкретные задачи. А когда на эту чёткую концепцию начинают все свои конкретные "хотелки" нацеплять, то это уже получается другой тип устройств - специализированных, заточенных под конкретный набор задач и со своим формфактором и в таких специальных платах, как правило, уже от разработчиков идёт и нужный набор функционала и всё настроено на уровне DT и есть конкретные руковдства пользователя по работе с устройством и там уже никто ничего не кастомизирует, а втыкает куда надо провода и включает в какой то программе что то нужное и оно работает "из коробки" и потому такие материалы и не нужны, а кому нужны, так на другом уровне и скорее для Embedded Linux. И то и другое не Хорошо и не плохо - это разные инструменты и разные формфакторы и разные концепции. И вот эта концепция формактора "а-ля Raspberry" - она такая - для модульной недорогой быстрой кастомизации, расширения и настройки под свой набор задач, по доступным, массовым и быстрым для повторения инструкциям.
Так что тут спорить и критиковать что то и смысла лишено, а то будет что то типа разговора про то, что же лучше - легковая машина седан или пикап - и вот будут водитель такси и курьер доставки спорить "до усрачки", одному нужно коробки возить удобно и побольше, а другому людей в комфорте и тепле везти. И что, кто то прав будет? Нет! Ибо оба и правы, но каждый по своему. Просто задачи у них разные. Вот так и тут - кому то батарейку "ага, уроды, зажали и это Успех?", кому то PWM на X портов надо, кому то вообще GSM или GPS и пошло поехало да понеслось - и половину из этого "просто добавить" и "копейки стоит" и "легко было предусмотреть". А всё проще - смотрим, что за Идея, какой концепт - для чего, когда, кому и почему это нужно и всё становится на свои места :-)
Это я всё подробно раскрыл скорее для автора самого первого комментария к данной статье. Но там, простите, диалог вести даже не хочется, всё понятно, тяжёлый случай. Но суть то примерно такая, как написано. И это важно понимать и помнить! Так что лучше давайте что то по сути материала - что вот там то не так подано, что и где раскрыть подробнее или иначе нужно и т.п.
Если что не так или резковато получилось, прошу извинить :-) Просто хочется, чтобы материал и комментарии были максимально по существу и полезны для читателей, которым именно этот подход и именно на устройствах с такой концепцией может оказаться нужным и интересным в рамках своих задач.
Встроенный RTC в оллвиннерах жрёт как не в себя, работает от 3.0В, и вообще рассчитан на работу от li-ion аккумулятора, а не от часовой батарейки. Всё-таки планшетное прошлое этих чипов даёт о себе знать.
А "часовой" кварц в этих процессорах неожиданно используется не только собственно для часов. В A40i (aka R40), который у нас, от него тактуется блок внешних прерываний. У коллег на V3s, по слухам, вообще bootrom без него не стартует. Так что убирать его не стоит.
Вообще по-моему правильно загружать драйвер устройства не в init-скрипте, а через device tree.
Привет!
Если кто вдруг захочет воспользоваться описанным в статье:
1) От онанизма мероприятий с i2c-tools и скриптами можно избавиться, если просто прописать внешний RTC в device tree. Обычно в расширяемых одноплатниках есть какой-то механизм для этого, работающий вокруг device tree overlays. Но даже если нет, то можно просто разобрать DT из dtb или работающей системы с помощью вызова dtc, добавить туда три строчки, и собрать обратно
2) DS3231M не просто точный, он термокомпенсированный. Другие RTC из списка на краях температурного диапазона будут отставать на 120-150ppm, т.е. на 5 минут в месяц.
3) На RTC с отдельным кварцем тикают плохо, если там стоит случайный кварц и конденсаторы. Порядок величин: кварц с неправильной нагрузочной ёмкостью даёт 3мин/месяц ошибки, 1пФ паразитного сопротивления - 25 секунд/месяц.
4) Чип DS3231M стоит $6@1000pcs на западе, $2.5@1000pcs в приличном месте в Китае. Что именно стоит в платке с алиэкспресса за $2 - одна из величайших загадок современности. Скорее всего это отпайка.
Евгений, очень грамотные и интересные у вас замечания, хотелось бы немного по ним дополнить.
1) DT конечно можно использовать и в ряде случаев нужно! При этом важно помнить, что не все могут и нуждаются в декомпиляции dtb и даже при наличии dts и dtsi не все с ними умеют или жаждут работать, особенно если там оверлеи. "Три строчки" (и не будем придираться, что их будет пять :-), понятно, что это такой речевой оборот, чтобы показать как для Вас это просто) добавить в DT и потом скомпилировать - и правда, кому важен порог вхождения для решаемой задачи у большинства читателей. Но Вы уж тогда сразу бы критиковали требовали дальше - чтобы назначение пинов на разъёме тоже не встроенной утилитой менялось, ибо она может переписать изменения внесенные вручную в DT, а сразу нужную распиновку в DT пусть вносят - олдскул и хардкор и баста! :-) Тут же важно - что предложенный способ должен подойти широкой аудитории и быть простым, быстрым и сохранять универсальность одноплатника - а то с изменениями в DT снял модуль, чтобы подключить что то другое, и вот снова нужно DT править и пересобирать. Так что предложенный и описанный способ это не онанизм, как вы язвительно изволили выразится, а вариант, причём оптимальный вариант при использовании именно внешних модулей, так как в DT настраивают, как правило, то, что на самом устройстве стационарно размещается, а модули они на то и модули, чтобы расширять базовый функционал и подключаться и настраиваться дополнительно и более высокоуровнево. Тут главное - это назначение каждого материала - на какую аудиторию, с какими задачами и уровнем подготовки он рассчитан. Обращаю ваше внимание, что у статьи осознанно установлен уровень сложности - средний! Любопытно, что вариант с использованием DT запланирован для написания в качестве продолжения данной статьи, но уже с уклоном на другие задачи и другой уровень подготовки и уровень сложности будет установлен высокий. Вопросы все и способы решения задач нужно раскрывать последовательно и системно, а не валить в кучу. Каждому инструменту своя задача, а каждой задаче свои инструменты и свои подходы, да вы это и сами наверняка отлично понимаете.
2, 3 и 4) Тут Вы всё очень грамотно раскрыли, супер, Спасибо! Это наверняка многим реально может оказаться полезным. Но суть статьи какая и про что она? А такая суть, что модуль он на то и модуль - какого качества и почём выберете и поставите, такой и будет, это уже от Вас зависит и Вам решать от бюджета и задачи. А когда прототипируете или изучаете, то делаете всё равно на том, что в рознице купили да побыстрее. А вот когда ставите в продакт - то уже выбираете и покупаете соразмерно задаче - качественный и дорогой или вообще сами что то собираете под свои задачи компоновки и сами все параметры компонентов перепроверяете, когда реально нужны высокая точность и контроль качества. Сути то это не поменяет - устройство как было i2c устройством так и им и останется и протокол его работы останется прежним. И даже более того, Вы вполне можете развить задачу и поставить другие устройства с другми адресами или вообще дублировать их и как то даже синхронизировать - принцип работы всё равно останется прежним, будут только другие компоненты и частные алгоритмы взаимодействия. Статья же не про цены и не про качество контроллеров для конкретного проекта, а про общий принцип подключения и работы.
Резюмируя - продолжение данной статьи Вас определенно может заинтересовать больше и будет уже в полной мере подходить для Вашего уровня требований к применяемому подходу и отвечать Вашему высокому профессиональному уровню - там определённо может оказаться, что комментариями Вы укажите на то, как лучше скорректировать материал в статье.
Так или иначе - Спасибо за такой обстоятельный и профессиональный комментарий и за интерес к поднятой теме! Когда будет более глубокое продолжение, то будет здорово получить от вас рецензию на него и критические замечания, так как там они уже будут сути материала соответствовать в большей степени. Вы реально таких коментом помогли структуру и подачу следующей части несколько чуть поточнее определить, Спасибо!
DS3231 всё, что из Китая это 100% какие-то подделки, перешлифованные и перемаркированные. Что там на самом деле не известно.
Какой модуль выберете и приобретёте - тот и Ваш будет :-) Большое дело - выбор! А i2c устройство так и останется при этом i2c устройством с теми же принципами подключения и применения. Может быть Вы это ещё к тому, что нужно дополнить, что конкретные модули приведены лишь как частные примеры и можно выбрать любые другие варианты? Если это из материала не очевидно, то тогда и правда лучше доработать.
Дмитрий является автором материалов, мы выполнили редактуру
Не похоже. В статье более дюжины ошибок правописания. В том числе элементарных, которые браузер подчеркивает красной волнистой линией.
Ошибки мешают сосредоточиться на контенте.
В следующий раз повнимательнее, пожалуйста.
Часы реального времени — RTC (real time clock) на одноплатном компьютере. На примере Repka Pi 3 — аналоге Raspberry Pi 3