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

 
 
> Как урезать exception stacking для Cortex-M4F
jcxz
сообщение Apr 24 2015, 04:31
Сообщение #1


Гуру
******

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



Подскажите: где в M4F устанавливается размер сохраняемого контекста при exception stacking-е?
У M3 и M4 (без F) он фиксированный и равен 8 словам. Но для M4F он опционально (вроде как опционально?) может включать регистры FPU (дополнительно 18 слов).
У меня сейчас в стэкинг пишутся регистры FPU. Мне это не нужно (FPU в ISR не нужен, а для задач ОС есть своё сохранение регистров FPU при переключении задачи).
Что-то навскидку не могу найти по мануалу - где конфигурится размер стэкинга. Ткните носом плиз!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Apr 24 2015, 04:55
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Lazy stacking feature.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 24 2015, 05:25
Сообщение #3


Гуру
******

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



Спасибо! До регистра Floating-Point Context Control я не дошёл wink.gif
Хм... похоже мне нужно: LSPEN=0; ASPEN=0.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 24 2015, 06:40
Сообщение #4


Гуру
******

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



Не помогло.... sad.gif
Похоже эти биты отвечают только именно за Lazy stacking. Место под регистры всё равно выделяется и SP смещается на 8+18 слов (вместо 8) и EXC_RETURN==0xE9.
Мне нужно не только чтобы регистры FPU не сохранялись при стэкинге, но и место под них не резервировалось. Вобщем чтобы 4-й бит EXC_RETURN был ==1.

Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 24 2015, 06:47
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(jcxz @ Apr 24 2015, 08:25) *
Хм... похоже мне нужно: LSPEN=0; ASPEN=0.

Ну как же? Написано же, что надо LSPEN=1; ASPEN=1.

Цитата(jcxz @ Apr 24 2015, 09:40) *
Место под регистры всё равно выделяется и SP смещается на 8+18 слов (вместо 8) и EXC_RETURN==0xE9.

Там же написано, что так оно и работает. Место в стеке выделяется, но не используется.
У вас, похоже, с чтением какие-то проблемы.

Цитата(jcxz @ Apr 24 2015, 09:40) *
Мне нужно не только чтобы регистры FPU не сохранялись при стэкинге, но и место под них не резервировалось. Вобщем чтобы 4-й бит EXC_RETURN был ==1.

Не судьба.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 24 2015, 07:05
Сообщение #6


Гуру
******

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



Цитата(scifi @ Apr 24 2015, 12:47) *
Там же написано, что так оно и работает. Место в стеке выделяется, но не используется.
У вас, похоже, с чтением какие-то проблемы.

Может и проблемы, но так я понял написанное в мануале на Tiva TM4C129DNCPDT (стр.127):
Код
When using floating-point routines, the Cortex-M4F processor automatically stacks the architected
floating-point state on exception entry. Figure 2-7 on page 128 shows the Cortex-M4F stack frame
layout when floating-point state is preserved on the stack as the result of an interrupt or an exception.
Note:    Where stack space for floating-point state is not allocated, the stack frame is the same as
that of ARMv7-M implementations without an FPU. Figure 2-7 on page 128 shows this stack
frame also.

А на Figure 2-7 приведены два стековых фрейма: один - с сохранением FPU, 2-й - без (и без выделения места под регистры FPU).
Т.е. - как я понимаю - где-то должна быть возможность не выделять место под регистры FPU.

И везде указано, что 4й бит EXC_RETURN может быть равен 1. Но у меня он всегда упорно ==0. Даже если FPU выключаю (через Coprocessor Access Control).
Go to the top of the page
 
+Quote Post



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

 


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


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