MENU

Fun & Interesting

Эффективное использование памяти MCU | Трюки и лайфхаки

Dmitry Muravyev 9,112 3 months ago
Video Not Working? Fix It Now

"Класс 101" о том какая бывает память, как она работает на разных архитектурах и как не тратить её впустую. На примерах рассмотрим чем отличается работа с памятью в Гарвардской и Принстонской (фон Неймана) архитектурах, какие бывают секции, как они используются, что такое стек и куча, как оценить минимальный объём свободной оперативной памяти и почему возникает фрагментация памяти. Примеры из ролика - https://drive.google.com/drive/folders/118RrPqYAyvBZbVwHCrt22N60LjBJyzot Ролик на Boosty - https://boosty.to/muravyev/posts/0705f4e4-5047-496c-9938-b57dc605cabd?share=post_link ********* СОДЕРЖАНИЕ: 00:00 - Вступление 00:42 - Память в МК 03:26 - Секции text, data и bss 10:06 - Стек 13:32 - Обзор вводной части 15:31 - Гарвардская и Принстонская архитектуры 19:15 - Секция progmem в Гарвардской архитектуре 20:22 - Особенности AVR с ПЗУ более 64КБ 25:17 - Современные МК на Гарвардской архитектуре 26:30 - Лирическое отступление 26:52 - Секция noinit 28:11 - Инициализация EEPROM 29:58 - AVRDUDESS 30:40 - optiboot и flash в качестве EEPROM 32:26 - Куча и динамическое выделение памяти 34:14 - Фрагментация памяти 42:10 - Окрашивание памяти 44:45 - Целочисленные вычисления 49:27 - Мощный финал ССЫЛКИ: Секции памяти: text, data, bss, and dec - https://mirzafahad.github.io/2021-05-08-text-data-bss/ Code segment - https://en.wikipedia.org/wiki/Code_segment Data segment - https://en.wikipedia.org/wiki/Data_segment Stack - https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA Memory management - https://en.wikipedia.org/wiki/Memory_management Manual memory management - https://en.wikipedia.org/wiki/Manual_memory_management Cекции памяти - https://microsin.net/programming/avr/avr-gcc-memory-sections.html Модель памяти в языке Си - https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_%D0%B2_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5_%D0%A1%D0%B8 Области памяти и использование malloc() - https://microsin.net/programming/avr/avr-gcc-memories-and-malloc.html malloc.c - http://svn.savannah.gnu.org/viewvc/avr-libc/tags/avr-libc-2_1_0-release/libc/stdlib/malloc.c?revision=2557&view=markup Memory fragmentation - https://en.wikipedia.org/wiki/Fragmentation_%28computing%29 Архитектуры: Архитектура фон Неймана - https://ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%84%D0%BE%D0%BD_%D0%9D%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD%D0%B0 Harvard architecture - https://en.wikipedia.org/wiki/Harvard_architecture Гарвардская архитектура - https://ru.wikipedia.org/wiki/%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0 ARM Cortex-M - https://en.wikipedia.org/wiki/ARM_Cortex-M Распределение памяти в ESP32 - https://kotyara12.ru/iot/esp32_memory/ AVR 64K problems - https://github.com/arduino/ArduinoCore-avr/issues/174 ATtiny microcontroller comparison chart - https://en.wikipedia.org/wiki/ATtiny_microcontroller_comparison_chart Программирование: Options That Control Optimization - https://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Optimize-Options.html STM32 Cortex-M4 programming manual - https://st.com/resource/en/programming_manual/pm0214-stm32-cortexm4-mcus-and-mpus-programming-manual-stmicroelectronics.pdf ESP system API - https://docs.espressif.com/projects/esp8266-rtos-sdk/en/release-v3.3/api-reference/system/system.html Guide to PROGMEM on ESP8266 and Arduino IDE - https://arduino-esp8266.readthedocs.io/en/latest/PROGMEM.html avr-gcc - https://gcc.gnu.org/wiki/avr-gcc AVR instruction set - https://en.wikipedia.org/wiki/Atmel_AVR_instruction_set AVR instruction set manual - https://ww1.microchip.com/downloads/en/DeviceDoc/AVR-Instruction-Set-Manual-DS40002198A.pdf Arduino Memory Guide - https://docs.arduino.cc/learn/programming/memory-guide/ PROGMEM - https://docs.arduino.cc/language-reference/en/variables/utilities/PROGMEM/ Работа с PROGMEM памятью - https://alexgyver.ru/lessons/progmem/ Профилирование памяти - https://habr.com/ru/articles/443030/ C Functions for Reading and Writing to Flash Memory (AVR) - https://ww1.microchip.com/downloads/en/AppNotes/Atmel-2575-C-Functions-for-Reading-and-Writing-to-Flash-Memory_ApplicationNote_AVR106.pdf Optiboot - https://github.com/Optiboot/optiboot ATtiny10Core - https://github.com/technoblogy/attiny10core megaTinyCore - https://github.com/SpenceKonde/megaTinyCore Дополнительно: Avrdudess - https://github.com/ZakKemble/AVRDUDESS (https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/) Hexspeak - https://en.wikipedia.org/wiki/Hexspeak Графика: https://freepik.com/free-vector/set-cute-cartoon-human-brain-character-lifting-dumbbell-looking-air-balloon-graduating_28189658.htmhttps://freepik.com/free-vector/illustration-different-expressions_1148476.htm https://freepik.com/free-vector/thunderbolt-icon-illustration_33168699.htm #программирование #ардуино #dmitrymuravyev

Comment