Вообще на дженерик-контроллере без аппаратного TRNG есть три метода получения случайного начального значения для инициализации PRNG:
* чтение младших бит оцифровки висящей в воздухе ноги АЦП или встроенного аналогового датчика температуры. Плохой, негодный способ, в общем случае дающий низкую энтропию, но всё же лучше, чем совсем ничего
* чтение снэпшота памяти сразу после включения питания контроллера — значительная часть битов будет установлена в один и тот же порядок (кстати, уникальный для конкретного кристалла), однако небольшой, но достаточный процент окажется в случайном состоянии. Минус — работает один раз, после обычной перезагрузки применять бессмысленно
* использование джиттера двух независимых тактовых частот, медленной и быстрой — например, подсчёт циклов процессора между двумя срабатываниями таймера RTC. Самый универсальный способ, однако частоты должны быть действительно независимы, т.е. генерироваться разными источниками.
В большинстве проектов из этих трёх методов используется никакой.
* чтение младших бит оцифровки висящей в воздухе ноги АЦП или встроенного аналогового датчика температуры. Плохой, негодный способ, в общем случае дающий низкую энтропию, но всё же лучше, чем совсем ничего
* чтение снэпшота памяти сразу после включения питания контроллера — значительная часть битов будет установлена в один и тот же порядок (кстати, уникальный для конкретного кристалла), однако небольшой, но достаточный процент окажется в случайном состоянии. Минус — работает один раз, после обычной перезагрузки применять бессмысленно
* использование джиттера двух независимых тактовых частот, медленной и быстрой — например, подсчёт циклов процессора между двумя срабатываниями таймера RTC. Самый универсальный способ, однако частоты должны быть действительно независимы, т.е. генерироваться разными источниками.
В большинстве проектов из этих трёх методов используется никакой.
https://www.intrinsic-id.com/wp-content/uploads/2017/08/White-Paper-The-reliability-of-SRAM-PUF.pdf
Понятным языком о механизмах генерации ключей и энтропии из случайного отпечатка оперативной памяти
Понятным языком о механизмах генерации ключей и энтропии из случайного отпечатка оперативной памяти
Жопа со SRAM PUF, конечно, в том, что отпечаток снимается один раз после включения чипа и тут же затирается для борьбы со старением памяти — после обычного ресета его надо восстанавливать другими методами (что в принципе несложно, т.к. память при перезагрузке не очищается).
Более того, если устройство предполагает возможность выключения, надо предусмотреть минимальную задержку , реализованную аппаратно— его нельзя включать обратно раньше чем через 5 секунд, иначе область, с которой снимается отпечаток, не успеет сброситься.
Более того, если устройство предполагает возможность выключения, надо предусмотреть минимальную задержку , реализованную аппаратно— его нельзя включать обратно раньше чем через 5 секунд, иначе область, с которой снимается отпечаток, не успеет сброситься.
https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html
До чего дошёл прогресс — одночиповый лазерный дальномер с дальностью до 4 метров. На чипе вообще всё — от оптики до времяпролётного вычислителя, наружу торчит обычный I2C.
P.S. Это у ST какая-то новая мода — вместо описания регистров чипа в даташите давать архив исходников софта, мол, ковыряйтесь там сами?..
До чего дошёл прогресс — одночиповый лазерный дальномер с дальностью до 4 метров. На чипе вообще всё — от оптики до времяпролётного вычислителя, наружу торчит обычный I2C.
P.S. Это у ST какая-то новая мода — вместо описания регистров чипа в даташите давать архив исходников софта, мол, ковыряйтесь там сами?..
STMicroelectronics
VL53L1X | Product - STMicroelectronics
The VL53L1X is a state-of-the-art, Time-of-Flight (ToF), laser-ranging sensor, enhancing the ST FlightSense™ product family.
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 (какая же херовая у него документация).
Далее платка медленно обрастала мелкими хотелками — импульсный преобразователь, набортный USB-UART, всякая мелкая логика...
Пока не было наконец сказано «да нахер всю эту мелочь!» — и в 2018 всю эту требуху с платы выкинули, а поставили STM32F042, на котором сделана вся логика управления питанием, переключением режимов, USB-UART, SWD-отладчик с поддержкой CMSIS-DAP, а заодно заложено место под измерение энергопотребления радиомодулей на INA214 (в прошивке пока не поддерживается).
А была когда-то просто платка, чтобы удобно питание подать и к ножкам подключиться.
Прошивка для STM32F042, кому интересно — https://github.com/unwireddevices/dap42, таргет UMDK-RF (src/stm32f042/umdk-rf/). Без операционки, на libopencm3 (какая же херовая у него документация).
GitHub
GitHub - unwireddevices/dap42: CMSIS-DAP debugger firmware for STM32F042Fx and STM32F103xx
CMSIS-DAP debugger firmware for STM32F042Fx and STM32F103xx - unwireddevices/dap42
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 совершенно обычный, ножками радиочасти торчит наружу, всё внешнее согласование с антенной остаётся каким было
Пока STMicro третий год собирается, Microchip сделал процессоры с Cortex-M0 и трансивером лоры в одном корпусе
Неплохие и довольно экономичные, плюсы понятные — маленькие и дешёвые относительно связки из проца и лоры
* три модели — J16, J17, J18, отличаются объёмом памяти. J16 в жизни непонятно на что годе (64К флэша, 12К ОЗУ — стандартный стек LoRaMAC-Node очень жирный, ему на таком тесновато будет). J17 оптимальный, J18 для галочки (256К флэша нужны в очень небольшом числе задач)
* корпуса только BGA, и это минус. Практического смысла нет — в 99 % задач количества ножек на QFN32 или QFN48 плюс-минус такого же размера хватило бы по уши, а BGA усложняет и удорожает и монтаж, и плату, двуслоечкой особо уже не обойдёшься
* небольшой минус — внутри SX1276, а не новый SX1262, так что энергопотребление трансивера «как обычно»
* SX1276 совершенно обычный, ножками радиочасти торчит наружу, всё внешнее согласование с антенной остаётся каким было
2018-11-15_18-12-49.png
17.7 KB
SX1276 сделал несколько раз CAD, чтобы проверить, не занят ли эфир, вышел на передачу, послушал ответ, заснул обратно.
Это всё на шунте 1 Ом + INA213 + STM32F042F6P6, то есть стоит чуть больше трёх копеек
Точность ниже 100 мкА, правда, по понятной причине никакая
Точность ниже 100 мкА, правда, по понятной причине никакая
2018-11-15_18-20-44.png
35.2 KB
Консоль устройства и его потребление, синхронно
Почему-то за все годы бесконечного клонирования паяльных станций с хакковской ручкой под жала 900M (а также и под индукционные, и под какие угодно — они эти ручки уже везде ставят) миллиард китайцев не смог ровно одного
Вот все эти люкеи, йихуи и прочее говно
СДЕЛАТЬ ТАК, ЧТОБЫ РЕЗИНКА НЕ ВЫВАЛИВАЛАСЬ
Та, которая провод держит
P.S. Это мне в фейсбуке сообщают, что Pro'sKit наконец осилил, у него не вываливается. Я не знаю, может они эту резинку японцам заказали?
Вот все эти люкеи, йихуи и прочее говно
СДЕЛАТЬ ТАК, ЧТОБЫ РЕЗИНКА НЕ ВЫВАЛИВАЛАСЬ
Та, которая провод держит
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 там за компанию, отличается ли он таким же поведением, не проверяли)
Теоретически, STM32L1 при уходе в режим STOP сохраняет состояние своих ножек
Практически — и не уверен, что в RM это где-то написано — на SPI вместо ожидаемого дефолтного состояния для выбранного его режима (CLK = MOSI = 0 для Mode 0 и 1) образуется нечто неведомое, приводящее к забавным побочным эффектам и дающее утечку тока величиной до нескольких сотен микроампер
Приходится, как обычно, закатывать Солнце за горизонт каждый вечер вручную, то есть — переводить ножки используемых SPI-интерфейсов в обычные GPIO и устанавливать нужные для всеобщего покоя уровни.
А потом ещё и восстанавливать обратно.
https://github.com/unwireddevices/RIOT/commit/f6a5cda6d0500497d28fb2ad740e51bf8f63efae
Обратите внимание, что ножки CS/NSS там нет, потому как она и так используется в режиме обычного GPIO на ручном управлении, т.е. с ней всё хорошо — как была при работе в 1, так во сне в ней и останется
(UART там за компанию, отличается ли он таким же поведением, не проверяли)
GitHub
cpu/stm32_common: reconfigure hardware interface when entering STOP mode · unwireddevices/RIOT@f6a5cda
RIOT - The friendly OS for IoT. Contribute to unwireddevices/RIOT development by creating an account on GitHub.