Search
Write a publication
Pull to refresh
165
20.8

Embedded SW/Firmware Engineer

Send message

Хорошая статья, однако неплохо бы добавить примеров применения binary heap, дабы у читателя не возникло ощущения что он слушает лекцию про абстрактные материи

Можно в очереди к врачу стоять в виде бинарной кучи.

Сделайте радио приемник с переключением каналов от ТВ пульта.

Вы всё ещё любите ChatGPT?

Вот что сказал об этом ChatGPT o3

Я задал нейросети простой вопрос: "У меня есть металлическая чашка, но у нее заварено верхнее отверстие. Также я заметил, что у нее отпилено дно.
Как из нее пить?
"

Получается нейросети - это очередной пшик...

10+ лет опыта программирования микроконтроллеров на российском рынке - это скорее минус, чем плюс. Встречал мало подобных личностей, которые вообще бы умели программировать. Кодировать - да. Особенно учитывая специфику HW разработки и её относительную простоту.

Да.
Вот классическое Кащенко. Организация решила написать свою версию CMSIS и 20+ программистов за 35 лет не осилили написать аналоги функций NVIC_EnableIRQNVIC_SetPriorityNVIC_GetVectorNVIC_GetActive и прочее. Образования хватило только на одну функцию-Бог NVIC_Init(). При этом в файле драйвера NVIC (прерываний) у них получилось аж 29 тысяч строк!

Написали 29k строк и не смогли повторить даже минимальный функционал бесплатного CMSIS. Это как?

ctags.exe  --sort=no -fcTagReport2.txt -x --c-types=f irq_drv.c

head -n5 cTagReport2.txt && tail -n5 cTagReport2.txt

Да , именно так. Сам советчик Карнеги умер в одиночестве и без друзей. Пристроился от невыносимого беспокойства.

У хорошего разработчика так и есть.

А по факту в России обычно так.

Программисту дают только pcb . Принципиальная схема давно потеряна. А блок схему ты рисуешь сам по фотографии платы с одной стороны.

Тогда можно попробовать часть функций исполнять из RAM памяти. Вероятно производительность увеличится.

Текст Правила Хорошей Структурной Схемы для Электронных Плат
https://habr.com/ru/articles/667030/

Оказался настолько хорош, что его стали ре-постить от других имен на самых разнообразных сайтах.

28 Атрибутов Хорошей Блок-Схемы для PCB

https://temofeev.ru/info/articles/28-atributov-khoroshey-blok-skhemy-dlya-pcb/

https://www.pvsm.ru/razrabotka/375332

http://orion-int.ru/28-atributov-xoroshej-blok-sxemy-dlya-pcb/

https://akhceloo.livejournal.com/1267204.html

https://pcnews.ru/blogs/28_atributov_horosej_blok_shemy_dla_pcb-1171998.html#gsc.tab=0

Это как?

А это как раз и является лучшим доказательством, что моя нотация, как и сама методичка получились безупречной!

 на блок-схемах в своих статьях рисуете

Текст Правила Хорошей Структурной Схемы для Электронных Плат
https://habr.com/ru/articles/667030/

Оказался настолько хорош, что его стали ре-постить от других имен на самых разнообразных сайтах. Во как! Это является лучшим доказательством, что моя нотация, как и сама методичка получились безупречной!

28 Атрибутов Хорошей Блок-Схемы для PCB

https://www.pvsm.ru/razrabotka/375332
http://orion-int.ru/28-atributov-xoroshej-blok-sxemy-dlya-pcb/
https://akhceloo.livejournal.com/1267204.html

А вот если бы я начал знакомство с программированием микроконтролеров с подобных статей, то на этом бы всё и закончилось.


https://habr.com/ru/articles/668368/#comment_24388362

Не надо ничего мудрить.
В конце концов я запустил LittleFS и все проблемы исчезли сами собой.

LittleFS - лучшая реализация NVRAM.

Пуск LittleFS (NVRAM с запретом до-записи flash)
https://habr.com/ru/articles/925372/

Я вижу, что конфигурация тот в KConfig .


Существует ли stand alone реализация утилиты KConfig в виде *.exe файла для любого Cи проекта?

Иными словами, стартовый адрес региона памяти должен быть выровнен на его собственный размер. Если у вас, к примеру, регион 16 Кб, то выравнивать нужно на 16 Кб. Если регион памяти 64 Кб, то выравниваем на 64 Кб. И так далее. Если этого не сделать, то MPU может автоматически “обрезать” регион под размер соответствующий его стартовому адресу (проверено на практике).

Благодарю, Вас @alexkalmuk. Это мне помогло завести MPU на ARM Corteх-M7.

ARMv7-M MPU  не поддерживает Write only режим (((.

Может ли ARMv7-M MPU внутри прерывания MemManage_Handler как-то сообщить в каком именно из 16-ти регионов MPU произошло нарушение доступа к памяти?

Вы настроили MPU на запрет записи памяти.
Вот программа дошла до строчки записать в память.
Сработало прерывание MPU.
Окажется ли прописанное значение в памяти после выхода из обработчика прерываний MPU?

Правда, есть некоторые сомнения в том, что на реальных «микроконтроллерных» проектах задействование кеша приведет к настолько сильному увеличению производительности, что перекроет издержки. 

У меня на столе ARM Cortex M7. Можно включить iCache на ядре.

вызвать
void SCB_EnableICache (void)

У меня на частоте ядра 205 MHz

При включенном iCachе суперцикл делает 28156 итераций в сек
При отключенном iCachе суперцикл делает 13680 итераций в сек

28156.0/13680.0 = 2.05818713

Кэш в два раза увеличивает производительность.

Как будет вести себя MPU, если два региона памяти нахлестываются друг на друга (пересекаются)?

1
23 ...

Information

Rating
1,433-rd
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