В данной статье я расскажу, как я в течение пяти лет переводил предприятия, на которых работал, с ведения проектов под микроконтроллеры на C на C++ и что из этого вышло (спойлер: все плохо).
Читать полностью »
Рубрика «C» - 31
Пять лет использования C++ под проекты для микроконтроллеров в продакшене
2019-07-24 в 3:41, admin, рубрики: C, c++, личный опыт, микроконтроллеры, программирование микроконтроллеровHello, World! Глубокое погружение в Терминалы
2019-07-16 в 15:20, admin, рубрики: C, linux, pseudoterminal, terminal, Разработка под LinuxНа написание данной статьи меня вдохновила статья об анализе Сишного printf. Однако, там был пропущен момент о том, какой путь проходят данные после того, как они попадают в терминальное устройство. В данной статье я хочу исправить этот недочет и проанализировать путь данных в терминале. Также мы разберемся, чем отличается Terminal от Shell, что такое Pseudoterminal, как работают эмуляторы терминалов и многое другое.
Встраиваем Lua интерпретатор в проект для микроконтроллера (stm32)
2019-07-16 в 10:42, admin, рубрики: C, cmake, Lua, stm32, микроконтроллеры, отладка, программирование микроконтроллеров, системные вызовыВ достаточно крупных приложениях немалую часть проекта составляет бизнес-логика. Эту часть программы удобно отлаживать на компьютере, после чего встраивать в состав проекта для микроконтроллера, ожидая, что эта часть будет выполняться в точности так, как было задумано без какой-либо отладки (идеальный случай).
Так как большинство программ для микроконтроллеров пишется на С/C++, то для этих целей обычно используют абстрактные классы, предоставляющие интерфейсы к низкоуровневым сущностям (в случае, если проект пишется только с использованием C, то зачастую используются структуры указателей на функции). Данный подход предоставляет требуемый уровень абстракции над железом, однако чреват надобностью в постоянной повторной компиляции проекта с последующим программированием энергонезависимой памяти микроконтроллера бинарным файлом прошивки большого объема.
Однако есть и другой путь — использование скриптового языка, позволяющего производить отладку бизнес-логики в реальном времени на самом устройстве или загружать сценарии работы прямо с внешней памяти, не включая данного кода в состав прошивки микроконтроллера.
В качестве скриптового языка я выбрал Lua.Читать полностью »
Ошибки, которые не находит статический анализ кода, потому, что он не используется
2019-07-15 в 13:31, admin, рубрики: bugs, C, c++, pvs-studio, static code analysis, static code analyzer, Блог компании PVS-StudioВремя от времени читатели наших статей о проверке открытых проектов обращают внимание, что статический анализатор кода PVS-Studio выявляет большой процент ошибок, которые незначительны или вообще не влияют на работу приложения. Это действительно так. Большинство важных ошибок уже поправлены благодаря ручному тестированию, отзывам пользователей и иным дорогим методам. При этом, многие из этих ошибок можно было бы найти ещё на этапе написания кода и исправить с минимальными потерями времени, репутации, денег. В этой статье будет приведено несколько примеров реальных ошибок, которые были бы сразу исправлены, если бы авторы проектов использовали статический анализ кода.

Errors that static code analysis does not find because it is not used
2019-07-15 в 13:30, admin, рубрики: bugs, C, c++, pvs-studio, static code analysis, static code analyzer, Блог компании PVS-StudioReaders of our articles occasionally note that the PVS-Studio static code analyzer detects a large number of errors that are insignificant and don't affect the application. It is really so. For the most part, important bugs have already been fixed due to manual testing, user feedback, and other expensive methods. At the same time, many of these errors could have been found at the code writing stage and corrected with minimal loss of time, reputation and money. This article will provide several examples of real errors, which could have been immediately fixed, if project authors had used static code analysis.

Как в 1995 году писали игры для Sega Saturn
2019-07-12 в 11:03, admin, рубрики: C, sega, Sega Saturn, ассемблер, Игры и игровые приставки, разработка игр, ретрогейминг, старое железо, старые консолиЭто документ, написанный мной в 1995 году, когда я работал над первой игрой студии Neversoft: Skeleton Warriors. Это была первая игра, в которой я не использовал язык ассемблера 68K.
Фото сделано примерно в то время. Комплект разработчика (dev kit) («Small Box» и ICE) стоит справа от меня.

Состояние игры
В представленном ниже документе вкратце описывается состояние кода Skeleton Warriors для Sega Saturn, а также упоминаются некоторые из множества аспектов, которые нужно было ещё сделать.
Документ нужен был, чтобы ускорить Дэну, Кену и Джеймсу знакомство с уже готовым кодом, объяснить им назначение каждого модуля и взаимодействие между ними. Также он позволил мне оценить печальное состояние этого кода, и, надеюсь, заставил меня взяться за ум.
Также я немного рассказываю о встраивании данных (файлы .GOV и .GOB) в программу, и о том, что мы будем делать в будущем.
Оборудование для разработки
Наша целевая платформа — Sega Saturn, имеющая два Risc-микропроцессора SH2 и один 68000. Пока мы используем только основной процессор Master SH2, вспомогательный slave SH2 будет использоваться, когда мы разберёмся, как это сделать. 68000 применяется для управления звуковым чипом, нам не пришлось писать для него код, потому что он будет использовать предоставленную Sega звуковую библиотеку.
Читать полностью »
Самые частые грабли при использовании printf в программах под микроконтроллеры
2019-07-10 в 10:45, admin, рубрики: C, c++, Cpp, debug, gcc, ld script, linker, stm, Компиляторы, компоновщик, микроконтроллеры, отладка, программирование микроконтроллеров, системы сборкиВремя от времени в моих проектах приходится применять printf в связке с последовательным портом (UART или абстракция над USB, имитирующая последовательный порт). И, как обычно, времени между его применениями проходит много и я успеваю напрочь забыть все нюансы, которые требуется учитывать, чтобы он нормально работал в крупном проекте.
В данной статье я собрал свой собственный топ нюансов, которые возникают при использовании printf в программах под микроконтроллеры, сортированный по очевидности от самых очевидных к полностью неочевидным.
Читать полностью »
Делаем процесс разработки тяжеловесного программного обеспечения под микроконтроллеры более удобным (нет)
2019-07-08 в 13:24, admin, рубрики: C, c++, CLion, cmake, debug, flash, gcc, ld, ld script, linker, makefile, st-link v2, Компиляторы, компоновщик, микроконтроллеры, микроконтроллеры stm, отладка, программирование микроконтроллеров, системы сборкиСейчас уже никого не удивить микроконтроллерами с энергонезависимой (чаще всего Flash) памятью объемом 512 килобайт и более. Их стоимость постепенно снижается, а доступность напротив, растет. Наличие такого объема энергонезависимой памяти дает возможность писать «тяжелые» по объему занимаемой памяти приложения, облегчая при этом последующее сопровождение кода за счет использования готовых решений из различных стандартных библиотек. Однако это ведет к росту объема файла прошивки целевого устройства, который требуется каждый раз целиком заново загружать в энергонезависимую память микроконтроллера при малейшем изменении в коде.
Цель статьи — рассказать о методе построения проекта на C и/или C++, при котором, в случае изменения участка кода, отладка которого производится чаще всего, большая часть проекта не нуждалась в повторной перезаписи. А так же показать, почему данный метод не всегда является эффективным решением.
Читать полностью »
PVS-Studio идёт в облака – запуск анализа на Travis CI
2019-06-28 в 11:53, admin, рубрики: C, c programming, devops, pvs-studio, travis-ci, Блог компании PVS-StudioНа данный момент облачные CI-системы — очень востребованный сервис. В этой статье мы расскажем, как, с помощью уже существующих средств, доступных в PVS-Studio, можно интегрировать анализ исходного кода с облачной CI платформой, на примере сервиса Travis CI.

PVS-Studio in the Clouds — Running the Analysis on Travis CI
2019-06-28 в 11:40, admin, рубрики: C, c programming, devops, pvs-studio, travisci, Блог компании PVS-StudioAt the moment, cloud CI systems are a highly-demanded service. In this article, we'll tell you how to integrate analysis of source code into a CI cloud platform with the tools that are already available in PVS-Studio. As an example we'll use the Travis CI service.
