Embedded SW/Firmware Engineer
Information
- Rating
- 62-nd
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Embedded Software Engineer, DevOps
Senior
Git
Bash
CI/CD
C
Embedded system
Programming microcontrollers
Software development
Algorithms and data structures
System Programming
Development of drivers
Можно написать custom реализацию malloc free и сборщик мусора для него прямо на С отдельной задачей или потоком. Это просто работа с массивами.
Второй пример. UART.
Алгоритм отправки "ждать окончания-отправить".
Идея такая: ждать окончаний предыдущей отправки, а после прерывания окончания отправки дать отмашку отправить данные из текущего вызова.
Данные которые мы хотим отправить лежат в стеке.
Чтобы данные на стеке не покарраптились их надо перекопать из стека в кучу. И дать отмашку отправлять в UART из кучи.
Сразу после побежать исполнять следующий код пока данный отправляются в UART.
А в прерывании закончившейся отправки освободить память.
Это оптимизирует производительность и избавит от антипаттерна Busy Wait при классическом алгоритме "отправить-ждать окончания".
То же самое для I2C, SPI, I2S, SDIO.
Микроконтроллерные ядра бывают с 8051,ARM,AVR,RISC-V,STM8,Xtensa,PowerPC,PIC,MSP430,Microblaze, Nios.
Вы программируете аудио систему.
Вам надо запрограммировать режим воспроизведения синуса для тестирования аудио тракта.
Частота, фаза, амплитуда синуса и частота дискретизации задаются в run-time из UART-CLI.
Вы хотите передавать семплы аудиодорожки по I2S циклически по DMA? чтобы был чисты звук.
Для этого надо рассчитать пару периодов и положить в RAM. Неизвестно сколько получится семплов, ведь частота задается в run-time.
Поэтому надо задействовать динамическую память для DMA, размер которой зависит от частоты дискретизации звука и периода синуса тестовой аудиодорожки.
Первое даже не соберётся без предупреждений
В статье это место верно.
Эти вопросы из продакшена, не из академической среды.
Целевая аудитория это те кто готовится к технический собеседованиям.
Вы из какого ВУЗ(а)?
Вот так.
Поделился ценнейшей инфой, добытой неимоверными усилиями и еще виноват.
Нормально вообще.
Часть ответов можно в поиске найти.
Часть в моих предыдущих текстах.
Цель статьи- сфокусировать внимание на реальных вопросах.
Предупрежден значит вооружен.
Как управлять фазой PWM сигнала на STM32?
Генерировать два PWM сигнала и двигать их относительно друг друга.
Например надо эмулировать высокочастотный сигнал с инкрементального энкодера.
Как управлять фазой PWM сигнала на STM32?
Например надо эмулировать сигнал с инкрементального энкодера.
Как управлять фазой PWM сигнала на STM32?
Например надо эмулировать сигнал с инкрементального энкодера.
А вот нет опытного производства. Офис в Moscow City на 30+ этаже. В здании только С++ программисты вокруг. Из инструментов только LapTop(ы).
Типичная ситуация в программировании микроконтроллеров.
Отвалившаяся вилка застряла в гнезде.
И тут вам никакие знания программирования не помогут, чтобы починить изделие и продолжить работу.
Можно задавать в качестве вопроса для собеседования при приеме на работу на должность "программист микроконтроллеров".
Как вытащить отломанную вилку.
На сайте
https://launchpad.net/gcc-arm-embedded/+download
самая свежая версия компилятора GCC для ARM 2016-09-28
https://docs.google.com/spreadsheets/d/1EXjUIrle0UApjYMmkSdSWOVntNabT557s2QKPl95xdA/edit#gid=0
В Яндекс.Драйв схемотехника телематики запрещена для программистов микроконтроллера телематики. Там начальник как-то написал: "программистам не нужна схемотехника"
В Sercomm. Схемотехника роутера S1010 запрещена. В Sercomm программистам даже даташиты на MIPS процессор и WiFi модуль запрещено получить доступ.
В НПЦ ЭЛВИС вендоры из ST запретили доступ datasheet PM6766.
Работа без Doc Food это обычная практика на территории РФ.
В этом тексте я подчеркиваю важность сборки сорцов из make файлов.
Какой при этом юзать текстовый редактор это вкусовщина.
Как расшифровывается акроним SWV?