All streams
Search
Write a publication
Pull to refresh
178
109.9

Embedded SW/Firmware Engineer

Send message

Можно написать 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

запрет доступа программистов к схемотехнике заставляют шевелиться волосы в самых неожиданных местах.

В Яндекс.Драйв схемотехника телематики запрещена для программистов микроконтроллера телематики. Там начальник как-то написал: "программистам не нужна схемотехника"

В Sercomm. Схемотехника роутера S1010 запрещена. В Sercomm программистам даже даташиты на MIPS процессор и WiFi модуль запрещено получить доступ.

В НПЦ ЭЛВИС вендоры из ST запретили доступ datasheet PM6766.

Работа без Doc Food это обычная практика на территории РФ.


В этом тексте я подчеркиваю важность сборки сорцов из make файлов.
Какой при этом юзать текстовый редактор это вкусовщина.


Как расшифровывается акроним SWV?

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