Хороший доклад о том, как применять гибкие методологии при разработке аппаратного обеспечения, какие есть сложности и как их обойти.
Месяц: Июль 2019
О сколько нам открытий чудных…
Узнал как инициализировать массив в Си несколькими повторяющимися значениями:
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
Поддерживается только GCC. Источник: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
На той же странице есть интересное замечание про инициализацию union из int и float — если явно инициализировать float целочисленной константой, то она будет преобразована к float. Если же привести целое к union, то оно останется целым.
Antenna theory
Хороший сайт для изучения антенн. Может, когда-нибудь попробую углубиться в эту область. Узнал про него из подкаста The Amp Hour.
О легаси коде
https://tiffnix.com/blog/2014/10/19/refactoring-legacy.html
«I’ve taken up maintaining a project that my friend Darkflux works on. It’s called Fate of the Republic (FotR), a Star-Wars MUD. The website is fateoftherepublic.com, and you can connect via Telnet to fateoftherepublic.com:1313.»
Отличная статья о том, что такое легаси код, насколько он может быть ужасен и как подходить к задаче приведения его в поддерживаемый вид.
Doxygen, gprof и другие
Начал использовать Doxygen для документирования кода. В поисках документации наткнулся на отличную статью Handbook of Open Source Tools из которой узнал про gprof, который можно применить к микроконтроллерам. Осталось найти время и разобраться с новым инструментом, т. к. выглядит он чрезвычайно полезным.
2.4 GHz Downconverter for an SDR
https://github.com/IanWraith/24DownConvert
Простой и дешёвый downconverter, чтобы подслушивать 2.4 ГГц. Когда-то очень хотел подобную штуку чтобы отладить передачу через NRF24 с помощью RTL-SDR, но находил только дорогие варианты.
OpenOCD RTOS Support
Оказывается, OpenOCD поддерживает отладку ОС для МК, но по умолчанию эта возможность выключена. Поскольку сейчас делаю проект на FreeRTOS, решил попробовать сделать отладку более удобной. Чтобы включить поддержку ОС нужно:
- Добавить флаг -rtos auto в строку $_TARGETNAME configure в файле target/xxx.cfg
- Добавить в проект файл с определением символа uxTopUsedPriority, т.к. он отсутствует в последних версиях FreeRTOS
- Исправить флаги линкера, как указано в файле, чтобы линкер не выкинул этот символ при сборке
Запустив отладку я увидел, что OpenOCD автоматически определил FreeRTOS и нашёл создаваемые ею задачи. К сожалению, собственно отладка у меня не заработала — при попытке дойти до точки останова в main() связь с отладчиком терялась. Пока что пришлось вернуться к отладке без поддержки ОС. Возможно, проблема связана с плагином cortex-debug для vscode. В Eclipse, судя по чужому опыту, всё работает без проблем. Возможно, ещё вернусь к этому вопросу.
Использованные материалы: