В данном посте вы найдете рецензии на 10 книг, прочитанных мной за последнее время. Так получилось, что на сей раз это были в основном книги об электронике, радио и программировании микроконтроллеров, но не только. Более ранние мои рецензии вы найдете здесь: восемнадцатый десяток, семнадцатый десяток, шестнадцатый десяток, пятнадцатый десяток.
В рамках статьи Учимся работать с SDHC/SDXC-картами по протоколу SPI мы освоили использование SD-карт подобно блочным устройствам в *nix системах, то есть, читая и записывая блоки размером 512 байт. Навык этот, бесспорно, полезен, но настоящая крутизна заключается в умении работать с файловыми системами на эти картах. Написать соответствующую библиотеку с нуля — это проект далеко не на один и не на два вечера, как в случае с какими-нибудь OLED-экранчиками. Поэтому даже такой изобретатель колес, как я, в данном случае был вынужден использовать что-то готовое. А именно, библиотеку FatFs.
Сегодня SD-карты используются повсюду. Они втыкаются в ноутбуки, планшеты, телефоны, видеокамеры, роутеры, фоторамки, диктофоны, электронные книги, mp3-плееры, одноплатные компьютеры и даже квадрокоптеры — словом, они везде. Часто о них думают, как об относительно медленных устройствах, способных хранить пару гигабайт информации. Однако в наши дни уже доступны SD-карты объемом 512 Гб и скоростью чтения-записи 90 Мбайт/сек (не мегабит!). Теоретически же объем хранимой информации ограничен 2 Тб. А чем еще прекрасны SD-карты, это тем, что с ними можно работать по незамысловатому протоколу, основанному на SPI.
Если зайти на eBay и ввести в поиске «ST7735», можно найти немало модулей с дисплеем на базе данного контроллера. Модули обычно бывают двух типов — с TFT-дисплеем диагональю 1.44" и разрешением 128x128 пикселей, а также с диагональю 1.8" и разрешением 128x160 пикселей. Последние в большинстве случаев также имеют и разъем для подключения SD-карт. Дисплеи позволят отображать 65536 цветов в палитре R5G6B5. Интересны данные модули тем, что будучи чуть-чуть дороже популярных 0.96-дюймовых OLED-экранчиков на базе SSD1306 предлагают существенно большие разрешение и диагональ, а также в ~30 тысяч раз больше цветов.
Вы можете помнить заметку про интерактивный дизассемблер Hopper, в рамках которой мы познакомились с недорогой (99$) альтернативой IDA Pro. А если я скажу вам, что существует не просто недорогая, а полностью бесплатная и открытая альтернатива, которая по многим показателям превосходит Hopper, а по некоторым и саму IDA Pro? Лет 10 назад мне было бы трудно в это поверить, но сегодня существование такого решения — это объективная действительность. Решение называется Radare2.
Часы реального времени (Real Time Clock, RTC) — это интегральная схема, предназначенная для отслеживания хода времени. RTC питаются от батарейки, что позволяет им продолжать работу даже тогда, когда все остальные части устройства обесточены. Именно благодаря часам реального времени ваш ноутбук всегда знает текущие время и дату, даже если он год пролежал выключенным. В этой заметке мы познакомимся с часами реального времени DS1302 и рассмотрим пример их использования микроконтроллерами AVR.
В свете нашумевших атак на CPU (из последних атак — Meltdown и Spectre) наблюдается рост интереса к открытым процессорам. Тот факт, что спецификация и конкретные реализации таких процессоров полностью открыты, существенно упрощает их анализ с точки зрения безопасности. Еще одно преимущество открытых процессоров заключается в том, что любой производитель может просто взять и начать выпускать такие процессоры, и никто его за это не попытается засудить, как в случае с x86/x64 или ARM. Сегодня наиболее хайповыми открытыми процессорами, по всей видимости, являются процессоры RISC-V (читается «риск файф»).
Допустим, мы хотим отлаживать цифровую электронику. В предыдущих статьях я рассказывал об осциллографе Rigol DS1054Z, логическом анализаторе SUMP2 на базе iCEstick, а также плате Bus Pirate. Каждое из этих устройств поможет справится с задачей, но не то, чтобы слишком успешно. DS1054Z имеет всего 4 канала и его возможности по декодированию протоколов довольно скромны. Bus Pirate лучше может в протоколы, и каналов у него больше, но он медленный. SUMP2 быстрый и имеет 16 каналов, но с ним приходится самостоятельно считать единички и нолики. Неужели нельзя объединить сильные стороны этих устройств? Разумеется, можно. Иначе стал бы я начинать пост таким введением?
Разбираясь, какие сейчас существуют отладочные платы на базе ICE40, я обратил особое внимание на BlackIce II. Дело в том, что мне стало надоедать постоянно возиться с проводами при подключении сторонних модулей к iCEstick. Для решения этой проблемы BlackIce II имеет множество Pmod-разъемов, является совместимой с Arduino-шилдами, а также имеет распаянные 4 Мбит SRAM и разъем для подключения SD-карты. Интересно, что на плате есть не только FPGA ICE40HX4K, но и микроконтроллер STM32L433. Так получилось, что микроконтроллеры STM32 меня тоже интересуют. Было бы удобно иметь устройство «два в одном». Наконец, плата является полностью открытым проектом, и самое главное — она черная! В общем, я решил обзавестись такой.
После прочтения книжки «The Hobbyist’s Guide to the RTL-SDR» мне особенно запомнился эксперимент с RTL-SDR и генератором шума. По сути, эксперимент этот описывает, как можно использовать RTL-SDR в качестве очень дешевого анализатора спектра. В этом режиме устройство может решать задачи вроде проверки фильтров или определения частоты, на которую рассчитана антенна. Соответствующая глава книги доступна онлайн в блоге rtl-sdr.com. Здесь я коротко перескажу идею и поделюсь своими личными впечатлениями от использования RTL-SDR таким образом. Описанные действия с тем же успехом можно повторить для HackRF, LimeSDR и других Software Defined Radio.