Интернет ненужных вещей – Telegram
Интернет ненужных вещей
3K subscribers
329 photos
19 videos
23 files
539 links
Олег Артамонов. Техлид умных ТВ в Яндексе, сопредседатель Координационного совета при ОП РФ по общественному контролю за голосованием, председатель ТИК ДЭГ 2024 и просто неприятный человек.

Рекламы здесь нет и не надо.

Для связи: @olartamonov
Download Telegram
Вообще на дженерик-контроллере без аппаратного TRNG есть три метода получения случайного начального значения для инициализации PRNG:

* чтение младших бит оцифровки висящей в воздухе ноги АЦП или встроенного аналогового датчика температуры. Плохой, негодный способ, в общем случае дающий низкую энтропию, но всё же лучше, чем совсем ничего

* чтение снэпшота памяти сразу после включения питания контроллера — значительная часть битов будет установлена в один и тот же порядок (кстати, уникальный для конкретного кристалла), однако небольшой, но достаточный процент окажется в случайном состоянии. Минус — работает один раз, после обычной перезагрузки применять бессмысленно

* использование джиттера двух независимых тактовых частот, медленной и быстрой — например, подсчёт циклов процессора между двумя срабатываниями таймера RTC. Самый универсальный способ, однако частоты должны быть действительно независимы, т.е. генерироваться разными источниками.

В большинстве проектов из этих трёх методов используется никакой.
https://www.intrinsic-id.com/wp-content/uploads/2017/08/White-Paper-The-reliability-of-SRAM-PUF.pdf

Понятным языком о механизмах генерации ключей и энтропии из случайного отпечатка оперативной памяти
Жопа со SRAM PUF, конечно, в том, что отпечаток снимается один раз после включения чипа и тут же затирается для борьбы со старением памяти — после обычного ресета его надо восстанавливать другими методами (что в принципе несложно, т.к. память при перезагрузке не очищается).

Более того, если устройство предполагает возможность выключения, надо предусмотреть минимальную задержку , реализованную аппаратно— его нельзя включать обратно раньше чем через 5 секунд, иначе область, с которой снимается отпечаток, не успеет сброситься.
https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html

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

P.S. Это у ST какая-то новая мода — вместо описания регистров чипа в даташите давать архив исходников софта, мол, ковыряйтесь там сами?..
2018-10-31_15-38-48.png
45.7 KB
Иногда спрашивают про простой, дешёвый, точный, оптоизолированный детектор нуля в сети переменного тока.

Вот.
👍1
http://www.tadviser.ru/index.php/%CA%EE%EC%EF%E0%ED%E8%FF:%D1%EE%E2%F0%E5%EC%E5%ED%ED%FB%E5_%D0%E0%E4%E8%EE_%D2%E5%F5%ED%EE%EB%EE%E3%E8%E8_%28%D1%D0%D2%29

Вот люди тоже нескучно живут — Синицина, который так гордился своими высокими связями, эти самые связи из «Стрижа» и выпинали.

Следующим актом будет всасывание остатков «Вавиота», хотя это, видимо, пройдёт совсем тихо — не то чтобы много там осталось.
Эволюция простой железки: в 2015 сделали платку, чтобы было удобно включать радиомодули — USB чисто для питания, пара выключателей, кнопка Reset, стабилизатор 3,3 В на LD1117. Особой другой цели и смысла у неё не было.

Далее платка медленно обрастала мелкими хотелками — импульсный преобразователь, набортный USB-UART, всякая мелкая логика...

Пока не было наконец сказано «да нахер всю эту мелочь!» — и в 2018 всю эту требуху с платы выкинули, а поставили STM32F042, на котором сделана вся логика управления питанием, переключением режимов, USB-UART, SWD-отладчик с поддержкой CMSIS-DAP, а заодно заложено место под измерение энергопотребления радиомодулей на INA214 (в прошивке пока не поддерживается).

А была когда-то просто платка, чтобы удобно питание подать и к ножкам подключиться.

Прошивка для STM32F042, кому интересно — https://github.com/unwireddevices/dap42, таргет UMDK-RF (src/stm32f042/umdk-rf/). Без операционки, на libopencm3 (какая же херовая у него документация).
https://www.microchip.com/design-centers/wireless-connectivity/low-power-wide-area-networks/lora-technology/sam-r34-r35

Пока STMicro третий год собирается, Microchip сделал процессоры с Cortex-M0 и трансивером лоры в одном корпусе

Неплохие и довольно экономичные, плюсы понятные — маленькие и дешёвые относительно связки из проца и лоры

* три модели — J16, J17, J18, отличаются объёмом памяти. J16 в жизни непонятно на что годе (64К флэша, 12К ОЗУ — стандартный стек LoRaMAC-Node очень жирный, ему на таком тесновато будет). J17 оптимальный, J18 для галочки (256К флэша нужны в очень небольшом числе задач)

* корпуса только BGA, и это минус. Практического смысла нет — в 99 % задач количества ножек на QFN32 или QFN48 плюс-минус такого же размера хватило бы по уши, а BGA усложняет и удорожает и монтаж, и плату, двуслоечкой особо уже не обойдёшься

* небольшой минус — внутри SX1276, а не новый SX1262, так что энергопотребление трансивера «как обычно»

* SX1276 совершенно обычный, ножками радиочасти торчит наружу, всё внешнее согласование с антенной остаётся каким было
Измерилка реального потребления электроники

По вертикальной шкале — микроамперы, по горизонтальной — сотни миллисекунд. Период измерений 10 мкс (!), наружу выдаются усреднённые значения за 100 мс
2018-11-15_18-12-49.png
17.7 KB
SX1276 сделал несколько раз CAD, чтобы проверить, не занят ли эфир, вышел на передачу, послушал ответ, заснул обратно.
Это всё на шунте 1 Ом + INA213 + STM32F042F6P6, то есть стоит чуть больше трёх копеек

Точность ниже 100 мкА, правда, по понятной причине никакая
2018-11-15_18-20-44.png
35.2 KB
Консоль устройства и его потребление, синхронно
Почему-то за все годы бесконечного клонирования паяльных станций с хакковской ручкой под жала 900M (а также и под индукционные, и под какие угодно — они эти ручки уже везде ставят) миллиард китайцев не смог ровно одного

Вот все эти люкеи, йихуи и прочее говно

СДЕЛАТЬ ТАК, ЧТОБЫ РЕЗИНКА НЕ ВЫВАЛИВАЛАСЬ

Та, которая провод держит

P.S. Это мне в фейсбуке сообщают, что Pro'sKit наконец осилил, у него не вываливается. Я не знаю, может они эту резинку японцам заказали?
Ещё там, конечно, жала дрянь, зазоры большие, температура гуляет и т.п.

Но требовать таких вещей от людей, которые десять лет не могут сделать, чтобы резинка не вываливалась, конечно, уже очень наивно
— Как там у тебя SDK к лидару? Проста в использовании? Ускоряет запуск продукта?
— Ай блять пидарасы сраные!

Пятница, вечер, Саша пишет драйвер лидара.
Хмммммм

Теоретически, STM32L1 при уходе в режим STOP сохраняет состояние своих ножек

Практически — и не уверен, что в RM это где-то написано — на SPI вместо ожидаемого дефолтного состояния для выбранного его режима (CLK = MOSI = 0 для Mode 0 и 1) образуется нечто неведомое, приводящее к забавным побочным эффектам и дающее утечку тока величиной до нескольких сотен микроампер

Приходится, как обычно, закатывать Солнце за горизонт каждый вечер вручную, то есть — переводить ножки используемых SPI-интерфейсов в обычные GPIO и устанавливать нужные для всеобщего покоя уровни.

А потом ещё и восстанавливать обратно.

https://github.com/unwireddevices/RIOT/commit/f6a5cda6d0500497d28fb2ad740e51bf8f63efae

Обратите внимание, что ножки CS/NSS там нет, потому как она и так используется в режиме обычного GPIO на ручном управлении, т.е. с ней всё хорошо — как была при работе в 1, так во сне в ней и останется

(UART там за компанию, отличается ли он таким же поведением, не проверяли)
Понедельник. Утро. Ждите.