← All posts tagged программазм

stanislavv
лытдыбр программазм Вместо того, чтоб делать что-то осмысленное (хотя б индикатор с кнопками припаять), засел на interrupt.memfault.com
Статей — достаточно, чтоб залипнуть. При этом есть многое, что хотел бы сделать, ибо пересекается с тем, что на работе, но понимаю, что это нах не надо любителю.
Но кой-чего надо будет всё ж сделать — таки развернуть на вдс не просто копию репы, а ещё и полноценный ci/cd с тестами и компиляцией.
stanislavv
лытдыбр программазм Ругань на implicit declaration разрешилась явным инклюдом того .h, в котором оно было определено. Почему не сработал #include "FreeRTOS.h" — непонятно, так как до разделения .h на .h и .c его хватало полностью.
stanislavv
лытдыбр программазм Решил, что все функции морзения в одном большом .h — не есть правильно и решил перетащить всё в .c, а в .h оставить константы и декларации того, что надо в основной проге.
Получил:
morse.c:36:3: warning: implicit declaration of function 'vTaskDelay' [-Wimplicit-function-declaration]
Наконец-то! Правда, я пока не понимаю, почему, но это уже другой вопрос :-)
stanislavv
лытдыбр программазм Добавил в опции компиляции -Wall и -Wextra.
Почему-то не ругается. Отсюда вывод: либо я ахренительный программист (по Станиславскому: Не верю!), либо ошибка где-то ещё.
Но, блин, после зашивки в контроллер работает так, как задумывалось — тихо и мирно выводит Hello World морзянкой на светодиод в отдельной задаче rtos.
Короче, что-то у меня в коде не так. Пора осваивать дебаггер :-)
stanislavv
лытдыбр URL программазм Обнаружил неожиданное: st.com — Migration guidelines from PIC18 to STM32F0 Series with software expansion for STM32Cube
С одной стороны — таки понятно, что конкурента надо бы пнуть. С другой — остальные Migration guidelines — для перехода между одними сериями stm32 к другим.
stanislavv
лытдыбр программазм Решил посмотреть на mbed-cli, раз уж пошел в эту сторону.
Ставится через pip install, не скажу, что это сильно хорошо, но, по-крайней мере, не от рута.
Но есть нюанс: оно ходит к github при помощи hg, что вообще-то странно.
stanislavv
лытдыбр программазм Резюме про Mbed Studio:
1) установка — строго через скриптик, который должен запускаться строго под sudo (su не годится).
2) из-за того, что скриптик запускается строго через sudо, в нём куча мелких телодвижений, ненужных при установке от пользователя.
3) в самом скриптике скачивается Mbed Studio, распаковывается во временный каталог, создаваемый прям рядом со скриптом, запускается install.sh + доустанавливается, если может, левый clangd (в поддерживаемых дистрибутивах он точно есть).
4) внутри install.sh рут нужен только для копирования конфигов udev для pyocd (в дистрибутивах есть штатный), отчего опять дохрена лишних телодвижений

Вишенкой на торте служит ошибка в uninstall.sh
stanislavv
лытдыбр программазм ВЕСЬ пакет Mbed Studio устанавливается в домашний каталог пользователя. Весь сыр-бор из-за рута — ради нескольких файлов udev. Похоже, надо будет подумать на предмет создания нормального пакета для сей студии, ибо подобная установка — не есть правильно...
stanislavv
лытдыбр программазм Попытался посмотреть на Mbed Studio. Может быть тот, кто делал её и программист, но, блин, установка строго через рута, при этом всё ставится при помощи волшебного wget и tar... Вобщем, хорошо ещё, errexit установлен, а то был бы полный конец обеда...
Сейчас буду разбираться, что сей скрипт делает, откуда и что скачивает и зачем устанавливает левый clangd вместе с ide. Запускать — не решусь.
stanislavv
лытдыбр программазм радиогубительство Обчитался статей про разработку и всякие тесты, отчего возник вопрос: как вообще тестировать фирмварь для небольших микроконтроллеров?
Если делать всякие ассерты на каждый чих в спецфирмвари с отладочной печатью в порт — не влезет в целевой контроллер или очень сильно замедлит выполнение, отчего тесты могут пройти, но вряд ли будут полезными.
Если тесты — на стороне компа, то накой они такие нужны, если основная проблема не всякие fft-функции из библиотек, которые тестами проверить можно, но смысла нет (библиотеки не мои), а работа с реальным железом, которого на компе нет и быть не может?

Ну то есть, юнит-тесты для алгоритмов я ещё понимаю — их можно проверить даже на стороне компа, если нет особенностей компиляции (если есть — см.выше про спецфирмварь). А вот как тестировать взаимодействие с железом? Скажем, что тот же АЦП действительно инициализируется в нужном порядке (некоторые виды оптимизации могут и переставлять команды), что работает с нужной скоростью, что есть взаимодействие с DMA, что прерывания от DMA таки идут, причём не только по окончании, но и по достижении половины буфера и т.п.

Вобщем, пока что вижу только, что отладочное дёргание выводом в прерывании (аналог print "буфер заполнен") и просмотр вывода осциллографом в прошлое не ушло, но это не тесты, это отладочная "печать" во время выполнения.
stanislavv
лытдыбр программазм Прочитавши st.com был несколько удивлён причиной лимита на частоту дискретизации DAC в STM32 — встроенный ОУ, а не сам DAC.
Надо будет поискать про ADC, может, тож чего найдётся... Вряд ли, конечно — там явно прописано число тактов и максимальная частота этих самых тактов.
stanislavv
баян программазм """
Я думаю, все в курсе, что в приличном обществе принято считать время в Unix-time формате. От 1 января 1970 года, потому что причины.
Но в мире не может быть просто так один формат времени! В OpenVMS (ага, они ещё живы) отсчёт ведётся с 17 ноября 1858. Вот тут должны быть действительно причины.
И знаете, после прочтения доки с разъяснениями, я подумал, что Фаренгейт не так уж сильно и наркоманил, когда выбирал свою нулевую отметку.


slac.stanford.edu
"""
stanislavv
лытдыбр программазм Надо будет дочери дать тестовое задание "вывести таблицу умножения".
У меня таблица вывелась однострочником чуть больше 80 символов, но она баша не знает, да и не факт, что будет выводить таблицу пифагора вместо кучи стро вида "2 * 2 = 4"
stanislavv
лытдыбр программазм Читал доку на golang, извращался.
Как язык — отличная штука.
Как инфраструктура... мягко говоря — не глянулся:

— все внешние пакеты обязаны тянуться из гитхаба/гитлаба/etc..., либо сделать вид, что тянулись. В теории оно правильно, на практике — я предпочту всё же, чтоб при развёртывании системы версии были гарантировано те же, что и на соседней, где билдилось пару дней назад перед выходными (коллеги уже наступали, когда в пятницу собралось и заработало, а в понедельник — на гитхабе был новый коммит и поменялся интерфейс)
— исходники обязаны лежать строго там, где указано, а не там, где удобно (на рабочей станции обошелся симлинками, но на мой взгляд — извращение, так как мои исходники и исходники пакетов go вообще — это разные вещи и должны лежать в разных местах)

Ну то есть, для хипстера с макбуком, не видевших тех же C/C++, perl, python, и даже ruby — норм, наверное...
Но, блин, я не хипстер и таки предпочёл бы отделить каталоги библиотек от того, что пишу я...
stanislavv
лытдыбр программазм Старое приложение, которым на телефоне ходил в samlib, внезапно сломалось, причём на уровне "показываем список аффтаров, даём скачать новые книги, можно почитать скачанное, но хрен вам, а не обновление скачанного".
В принципе и хрен бы с ним, но под вечер привык читать какую-нибудь графоманию, чтоб мозги не напрягались.
Новые приложения либо хотят нового андроида (ради единственного и необязательного приложения обновлять телефон — это перебор(, либо работают через пень-колоду, либо обладают чрезмерно интуитивным интерфейсом.
Пока что размышляю, сразу писать аналог на каком-нибудь kivy или вначале всё ж попробовать тупо снести, поставить с нуля и снова добавить туда авторов. Но сам kivy уже поставил :-)