-
- Объявляешь свои переменные в именованной секции - через __attribute__((section(".ram_dma"))). Далее - в линкерном
скрипте указываешь, где располагать эту секцию. il-2(218 знак., 22.08.2026 06:18)
- Кейл ваще не знает, что такая память существует. Хотя туда бы
положить и стек IBAH(567 знак., 24.08.2026 16:26)
- странно, если в МК есть несколько видов SRAM, то Кейл об этом знает. Если ему связно сказать - что за МК. К примеру, у меня STM32L476, там SRAM1 и SRAM2 - Лaгyнoв(144 знак., 24.08.2026 19:54, картинка)
- RW_IRAM2 - не оно? - Nikolay_Po(24.08.2026 17:19)
- Не оно. CCM data RAM (64 KB data SRAM) 0x1000 0000 - 0x1000 FFFF IBAH(124 знак., 24.08.2026 18:26, картинка)
- О. Тут по картинке отлично видно, на какую память какую шину с DMA периферии посадить. В принципе, если при исполнении кода, не использовать SDRAM1 и SDRAM2, а использовать только код и данные из FLASH и данные из CCM, то исполнение кода и работа DMA друг другу мешать не будут. - Nikolay_Po(25.08.2026 10:11)
- Ну, жонглёж битами - это, всё-таки не память. И когда с ним работал, я просто делал вычисляемые на этапе компиляции указатели для всего нужного. Выделять его в отдельную секцию памяти смысла нет - как память он не работает, а переменные компилятор всё равно не сможет разместить автоматически - привязку к адресам бит всё равно делаешь вручную. Nikolay_Po(44 знак., 25.08.2026 08:06)
- Не оно. CCM data RAM (64 KB data SRAM) 0x1000 0000 - 0x1000 FFFF IBAH(124 знак., 24.08.2026 18:26, картинка)
- Ну так пропишите недостающую секцию сами. - Nikolay_Po(24.08.2026 17:16)
- +1. Это такой вопрос, на который любой согодняшний ИИ должен дать вменяемый ответ. - SciFi(24.08.2026 17:17)
- Кейл ваще не знает, что такая память существует. Хотя туда бы
положить и стек IBAH(567 знак., 24.08.2026 16:26)
- Если очень хочется, чтобы определëнная переменная была в нужном Вам сегменте - нужно это явно указать. Не знаю про Иар, а в Кейле это возможно. - Пaлыч(21.08.2026 23:00)
- Как? Доверится компилятору ))) - POV(21.08.2026 20:09)
- А откуда компилятор узнает, что с этой переменной я работаю через
ДМА, а с этой только процессором? - IBAH(21.08.2026 20:15)
- Почему-то я уверен, что его решение "в среднем" будет лучше... POV(90 знак., 21.08.2026 20:49)
- Там развитой шинный коммутатор. И может так оказаться, что из
периферии в одну область памяти можно невозбранно лить поток
данных, когда из другой области идёт выполнение кода. На плотных
потоках, типа параллельного порта, разница в производительности
может быть заметна. - Nikolay_Po(23.08.2026 09:19)
- то есть, хочешь сказать, что если ДМА не вмешивается, то время
доступа к памяти SRAM1 и памяти ССМ будет одинаковое? - IBAH(24.08.2026 16:29)
- Не знаю. Найди схему шинного коммутатора. Там более-менее понятно подписано. - Nikolay_Po(24.08.2026 17:17)
- то есть, хочешь сказать, что если ДМА не вмешивается, то время
доступа к памяти SRAM1 и памяти ССМ будет одинаковое? - IBAH(24.08.2026 16:29)
- Там развитой шинный коммутатор. И может так оказаться, что из
периферии в одну область памяти можно невозбранно лить поток
данных, когда из другой области идёт выполнение кода. На плотных
потоках, типа параллельного порта, разница в производительности
может быть заметна. - Nikolay_Po(23.08.2026 09:19)
- Почему-то я уверен, что его решение "в среднем" будет лучше... POV(90 знак., 21.08.2026 20:49)
- А откуда компилятор узнает, что с этой переменной я работаю через
ДМА, а с этой только процессором? - IBAH(21.08.2026 20:15)
- Объявляешь свои переменные в именованной секции - через __attribute__((section(".ram_dma"))). Далее - в линкерном
скрипте указываешь, где располагать эту секцию. il-2(218 знак., 22.08.2026 06:18)