Сегодня я хотел бы обсудить тему, с которой так или иначе сталкивался почти каждый программист встраиваемых устройств без использования настоящих операционных систем, а именно прямое управление периферийными узлами микроконтроллера. A конкретнее, я хотел бы обсудить повышение безопасностиЧитать полностью »
Рубрика «с++17»
Продление жизни временных значений в С++: рецепты и подводные камни
2022-06-04 в 12:20, admin, рубрики: auto, c++, c++11, C++14, decltype, l-value reference, nrvo, rvalue reference, temporary object, xvalue, Программирование, с++17Прочитав эту статью вы узнаете:
-
Способы, которыми можно продлить время жизни временного объекта в С++.
-
Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.
Информация из статьи может быть полезна как новичкам, так и профессионалам.
Если заинтересовало, то самое время налить чая, и погнали разбираться где тут референсы повисли.
Оглавление
Способы переписать логические параметры в С++
2022-03-05 в 14:00, admin, рубрики: c++, Cpp, IT-стандарты, skillfactory, Блог компании SkillFactory, код, Программирование, С++, с++17, С++20, с++23, Совершенный код, структуры, читабельностьПрограммисты читают код намного чаще, чем пишут его, поэтому важно писать понятный, последовательный, однозначный код. Автор книги С++17 in detail написал о способах избегать путаницы. Делимся его материалом к старту курса по разработке на С++.
Светодиод, таймер и прерывания на RISC-V с нуля (на примере GD32VF103 и IAR C++)
2020-08-26 в 17:00, admin, рубрики: c++, GD32VG103, microcontrollers, risc-v, riscv, микроконтроллеры, Программирование, программирование микроконтроллеров, с++17
Сегодня речь пойдет о модном — о RISС-V микроконтроллере. Я давно хотел познакомиться с этим ядром и ждал когда появится что-то похожее на STM32 и вот дождался, встречайте — китайский GigaDevice — GD32V.
Инфраструктура для этого микроконтроллера не такая обширная как для STM32, но есть все необходимое для того, чтобы начать с ним работать. Благо отладочные платы можно заказать на аликекспресс, например, вот тут: Longan Nano GD32VF103CBT6 RISC-V MCU
Китайцы продвигают для этого микроконтроллера среду разработку Platform IO, которую можно поставить как расширение под Visual Studio Code. Но мы не будем её использовать, это ведь не по инженерным понятиям, мы же инженеры и хотим разобраться во всем сами. Поэтому давайте попробуем запустить плату на IAR, написав все с нуля.
Кстати, IAR раздает отладочный комплект (отладочная плата + отладчик I-Jet + 30 Дней полная лицензия) IAR RISC-V GD32V Evaluation kit. Вот тут можно оставить заявку Request for Development Tools. Не уверен, что они посылают комплект всем желающим, но я получил в течение 5 дней. Спасибо им за это.
Ну что же, кто заинтересовался, добро пожаловать под кат
Переключение контекста и простой вытесняющий планировщик для CortexM
2020-06-11 в 21:48, admin, рубрики: c++, cortex-m, quantum lips, rtos, rtos осрв микроконтроллеры, sst, statemachine, stm32, микроконтроллеры, программирование микроконтроллеров, с++17, системное программирование, студенты
С каждым годом курсовые для моих студентов становятся все объемнее. Например, в этом году одним из заданий была разработка метеостанции, ведь только ленивый не делает метеостанции, а студенты они по определению не ленивые, поэтому должны её сделать. Её можно быстро накидать в Cube или собрать на Ардуино, но задача курсового не в этом. Основная задача — самостоятельно, с нуля разобраться с модулями микроконтроллера, продумать архитектуру ПО и, собственно, закодировать все на С++, начиная от регистров и заканчивая задачами РТОС. Кому интересно, здесь пример отчета по такому курсовому
Так вот появилась небольшая проблема, а именно, бесплатный IAR позволяет делать ПО размером не более 30 кБайт. А это уже впритык к размеру курсового в неоптимизированном виде. Анализ кода студентов выявил, что примерно 1/4 часть их приложения занимает FreeRtos — около 6 кБайт, хотя для того, чтобы сделать вытесняющую переключалку и управлялку задачами хватило бы, наверное… да байт 500 причем вместе с 3 задачами (светодиодными моргунчиками).
Эта статья будет посвящена тому как можно реализовать Очень Простой Планировщик(он же SST), описанный в статье аж 2006 года и сейчас поддерживаемый Quantum Leaps в продукте Qp framework.
С помощью этого ядра очень просто реализовать конечный автомат, и оно очень хорошо может использоваться в небольших проектах студентами (и не только), которые могут получить дополнительно 5 кБайт в свое распоряжение.
Я попробую показать как можно реализовать такой планировщик самому. Чтобы не сильно перегружать статью, рассмотрю переключение контекста на CortexM0 у которого нет аппаратного модуля с плавающей точкой.
Все кто заинтересовался и хочет понять как можно переключать контекст, добро пожаловать под кат.