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

 
 
> Выполнения обработчика прерывания из ОЗУ на stm32f103
Quantum1
сообщение Nov 27 2013, 18:40
Сообщение #1


Частый гость
**

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



Здравствуйте!
Есть проект в котором критична производительность и большое количество прерываний, так же есть камень - stm32f103. Для того что бы не тратить драгоценные такты на ожидание чтения из флеш-памяти есть желание записать несколько самых важных обработчиков в ОЗУ и оттуда их выполнять. Но поскольку я только начинаю изучать этот проц, не совсем понимаю как это сделать ни на асме, ни на си. Примеров в сети никаких не нашел*(
Если подскажите пару примеров для Keilа будет вообще замечательно.

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alx125
сообщение Nov 28 2013, 02:01
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204



"...The CortexM3 processor has a total of 4 GB of address space. Program code can be located in the code region, the Static Random Access Memory (SRAM) region, or the external RAM region. However, it is best to put the program code in the code region because with this arrangement, the instruction
fetches and data accesses are carried out simultaneously on two separate bus interfaces (I-Code, D-Code)
. "

Еще цитата:
"В процессоре CortexM3 при условии, что память имеет нулевую латентность, и учитывая, что архитектура шин позволяет одновременно ocyществлять
выборку вектора и сохранение контекста проrраммы, минимальная величина задержки обработки прерывания составляет 12 тактов. Это время yxoдит на сохранение реrистров в стеке, выборку вектора и выборку первых команд обработчика прерывания. В то же время указанная величина зависит от наличия циклов ожидания при обращении к памяти и ряда друrих факторов. "

3-х уровневый конвеер "выборки-декодирования-выполнения" команд тоже оптимизирован под код из Flash.

Кроме того, при наступлении прерывания (то же относится и к возврату из обработчика), в SRAM сохраняется контекст - стековый фрейм (8 регистров) одновременно с выборкой вектора и первой исполняемой команды оброботчика. Эта "одновременность" может быть достигнута если код обработчика будет во флэш! Иначе весь обмен будет по системной шине ч/з которую подключено SRAM. Что приведет к задержкам.
Если в обработчике идет интенсивный обмен данными с SRAM, то используйте выравнивание данных иначе будут лишние такты шины.

Cortex-M3 оптимизирован для обработки прерываний с маленькой задержкой (latenсy).
Поэтому для быстрого обработчика с минимальной latency все же лучше подходит Flash, чем SRAM.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 28 2013, 07:18
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(alx125 @ Nov 28 2013, 08:01) *
Поэтому для быстрого обработчика с минимальной latency все же лучше подходит Flash, чем SRAM.

А ещё лучше подходит ARM7/ARM9 wink.gif
Go to the top of the page
 
+Quote Post



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

 


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


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