реклама на сайте
подробности

 
 
> Запуск кода из ram
quandr
сообщение Nov 10 2017, 06:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Подскажите, кто знает, как в STM32F7 весь код загрузить вo внутреннюю ram и оттуда выполнять. Например в Keil. Для большей предсказуемости времени выполнения. Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Forger
сообщение Nov 10 2017, 09:11
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(quandr @ Nov 10 2017, 09:58) *
Для большей предсказуемости времени выполнения.

Может есть смысл размещать в ОЗУ не весь код, а только тот, который этого требует?
Особенно выгодно по скорости выполнения размещать код в области ОЗУ, которая напрямую подключена к ядру (в STM32 она называется TCM RAM).
В KEIL это делается очень просто, почитайте мануал.
Если нужно весь код, то я бы сделал так:
пишем простейший загрузчик (стартуемый из FLASH), который копирует и возможно даже на ходу распаковывает сжатый код из FLASH в ОЗУ.
Делает ремап векторов (в NVIC поправить всего один регистр) и запускает загруженный код.

А сам код для исполнения в ОЗУ собирается уже с другими параметрами линкера (в скрипте линкера нужно лишь поправить несколько строчек кода).

После чего его (BIN файл) можно упаковать (при желании) и добавить в прошивку загрузчика как внешний файл. KEIL это умеет.
Прикрепленное изображение



Т. е. можно так настроить, что нужный HEХ при компиляции будет формироваться автоматически, для этого лишь нужно выбрать нужный режим (у меня обычно DEBUG/RELEASE) в выпадающем списке.
Прикрепленное изображение



--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
quandr
сообщение Nov 10 2017, 12:05
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(Forger @ Nov 10 2017, 12:11) *


На каком этапе этот загрузчик поместить в код?

Сообщение отредактировал IgorKossak - Nov 10 2017, 13:59
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 10 2017, 12:24
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(quandr @ Nov 10 2017, 15:05) *
На каком этапе этот загрузчик поместить в код?

Создаете ДВА проекта -
проект А - для формирования финальной прошивки (бинарник берем из проекта B ) вместе с простым загрузчиком.
проект B - для целевого кода, в сборке DEBUG выполняется и отлаживается как обычно из флэш, в RELEASE сборке - финальная прошивка с размещением всего кода в ОЗУ.

А почему не хотите переместить в ОЗУ лишь части проекта, которым это действительно необходимо?


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
quandr
сообщение Nov 10 2017, 13:34
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282




А почему не хотите переместить в ОЗУ лишь части проекта, которым это действительно необходимо?


Код всего 56 кб, а ресурсов ему много надо. И к тому же скорость и повторяемость по времени выполнения. Иначе на экране дрожит сигнал.
Go to the top of the page
 
+Quote Post
Forger
сообщение Nov 10 2017, 13:39
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(quandr @ Nov 10 2017, 16:34) *
Код всего 56 кб, а ресурсов ему много надо.

Каких ресурсов?

Цитата
И к тому же скорость и повторяемость по времени выполнения.

Разметите критический важный кусок кода внутри отдельных функций, размещенных в отдельном С/CPP файле, поместите весь файл в секцию RAM (как это сделать, см. мануал на Keil).
Тогда не придется городить загрузчик лишь для того, чтобы весь код засунуть в ОЗУ.

Цитата
Иначе на экране дрожит сигнал.
Вы действительно полагаете, что перемещение ВСЕГО кода в ОЗУ поможет решить эту проблему? wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
quandr
сообщение Nov 10 2017, 13:42
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(Forger @ Nov 10 2017, 16:39) *
Каких ресурсов?

Вы действительно полагаете, что перемещение ВСЕГО кода в ОЗУ поможет решить эту проблему? wink.gif


Три четверти функций очень чувствительны и к скорости и к синхронности. Где-то так. Очень не хочется плиску ставить. Всё работает, но не хватает скорости совсем немного.
Отсутствие 5ти -6 ти waitstates может помочь.

Сообщение отредактировал quandr - Nov 10 2017, 13:54
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- quandr   Запуск кода из ram   Nov 10 2017, 06:58
- - scifi   Я делал вот так: Кодextern char __etext, __data_st...   Nov 10 2017, 07:41
|- - quandr   В F7 в принципе код выполняется странно. Даже кол-...   Nov 10 2017, 09:11
|- - jcxz   Цитата(quandr @ Nov 10 2017, 11:11) В F7 ...   Nov 10 2017, 12:19
|- - quandr   Цитата(jcxz @ Nov 10 2017, 15:19) На F7 (...   Nov 10 2017, 14:36
|- - Forger   Цитата(quandr @ Nov 10 2017, 17:36) В это...   Nov 10 2017, 14:39
|- - scifi   Цитата(quandr @ Nov 10 2017, 17:36) А как...   Nov 10 2017, 14:49
|- - jcxz   Цитата(quandr @ Nov 10 2017, 16:36) А как...   Nov 10 2017, 19:39
|- - Огурцов   Цитата(quandr @ Nov 10 2017, 15:36) А как...   Nov 10 2017, 21:00
|- - AVI-crak   М7 может выполнять код из ITCM в режиме шины AXI. ...   Nov 10 2017, 23:42
|- - Forger   Цитата(quandr @ Nov 10 2017, 16:42) Три ч...   Nov 10 2017, 13:46
|- - quandr   Цитата(Forger @ Nov 10 2017, 16:46) Чисто...   Nov 10 2017, 13:58
|- - Forger   Цитата(quandr @ Nov 10 2017, 16:58) Отсут...   Nov 10 2017, 14:07
|- - quandr   Цитата(Forger @ Nov 10 2017, 17:07) Если ...   Nov 10 2017, 14:23
|- - Forger   Цитата(quandr @ Nov 10 2017, 17:23) Внутр...   Nov 10 2017, 14:31
- - quandr   Цитата(Forger @ Nov 10 2017, 16:39) Каких...   Nov 10 2017, 14:54
- - quandr   Цитата(Forger @ Nov 10 2017, 16:39) Каких...   Nov 11 2017, 09:43
- - Forger   Цитата(quandr @ Nov 11 2017, 12:43) Этот ...   Nov 11 2017, 10:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016