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

 
 
> Соглашения по регистрам, Cortex M3, gcc 4.7.2
Genadi Zawidowsk...
сообщение Feb 12 2013, 18:55
Сообщение #1


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Вижу, что в документе Cortex-M3 programming manual написано - при входе в прерывание сохраняется
Цитата
● R0-R3, R12
● Return address
● PSR
● LR

Добавление __attribute__((__interrupt__)) (как я смог понять из кода) добавляет выравнивание стека на 8. В этом нет необходимости - обработка прерывания процессором это обеспечивает независимо от требования на выравнивание.
А что обеспечивает сохранение остальных регистров? Или эти регистры в gcc 4.7.2 в случае их использования в вычислениях сохраняются автоматически?
Сейчас при невнимательном тестировании на первый взгляд всё работает и без __attribute__((__interrupt__)).

В документе http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gc...tion-Attributes написано только то, что я и понял - на Cortex Mx только выравнивает стэк:
Цитата
On ARMv7-M the interrupt type is ignored, and the attribute means the function may be called with a word aligned stack pointer.

В start-up никаких изменений режима работы процессора не делается.
CODE
static void ResetException( void )
{

uint32_t * pSrc, * pDest ;


/* Low level Initialize */
arm_cpu_initialize(); // watchdog disable, clock initialize

/* Initialize the relocate segment */
pSrc = & _sidata;
pDest = & __data_start;

if ( pSrc != pDest )
{
// compiled for FLASH
for ( ; pDest < & __data_end ; )
{
*pDest++ = *pSrc++ ;
}
}
// Следить, чтобы переменные не оказались в стеке, очищаемом сейчас.
// Для этого, например, использована секция noinit
/* Clear the zero segment */
for ( pDest = & __bss_start; pDest < & __bss_end; )
{
* pDest ++ = 0;
}

/* Branch to main function */
main();

/* Infinite loop */
for (;;)
;
}


Сообщение отредактировал Genadi Zawidowski - Feb 12 2013, 19:18
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Genadi Zawidowski   Соглашения по регистрам   Feb 12 2013, 18:55
- - _Артём_   Цитата(Genadi Zawidowski @ Feb 12 2013, 20...   Feb 12 2013, 19:10
|- - Genadi Zawidowski   Цитата(_Артём_ @ Feb 12 2013, 23:10) Не п...   Feb 12 2013, 19:19
|- - VslavX   Цитата(Genadi Zawidowski @ Feb 12 2013, 21...   Feb 12 2013, 19:29
|- - _Артём_   Цитата(Genadi Zawidowski @ Feb 12 2013, 21...   Feb 12 2013, 19:33
- - ViKo   Из книжки J. Yiu ЦитатаIn many cases, the interrup...   Feb 12 2013, 19:33
- - Genadi Zawidowski   Спасибо, значит функции обработчиков перерывания в...   Feb 12 2013, 19:36
|- - demiurg_spb   Цитата(Genadi Zawidowski @ Feb 12 2013, 23...   Feb 13 2013, 05:38
- - ReAl   У меня Код#ifdef __cplusplus # define INTERRUPT e...   Feb 13 2013, 06:57
- - Genadi Zawidowski   Пока мне APCS встретилось только в таком контексте...   Feb 13 2013, 18:49
|- - ViKo   Цитата(Genadi Zawidowski @ Feb 13 2013, 21...   Feb 14 2013, 03:59
|- - VslavX   Цитата(Genadi Zawidowski @ Feb 13 2013, 20...   Feb 14 2013, 06:19
- - Genadi Zawidowski   ЦитатаGCC следует стандартным соглашениям для архи...   Feb 14 2013, 09:31
|- - ViKo   Цитата(Genadi Zawidowski @ Feb 14 2013, 12...   Feb 14 2013, 10:37
||- - _Pasha   Цитата(ViKo @ Feb 14 2013, 14:37) В качес...   Feb 14 2013, 10:53
||- - Genadi Zawidowski   Цитата(ViKo @ Feb 14 2013, 14:37) В принц...   Feb 14 2013, 12:14
||- - ViKo   Цитата(Genadi Zawidowski @ Feb 14 2013, 15...   Feb 14 2013, 12:24
|- - ReAl   Цитата(Genadi Zawidowski @ Feb 14 2013, 11...   Feb 14 2013, 13:17
- - Genadi Zawidowski   Для примера, как выглядит соответствующая глава до...   Feb 15 2013, 07:22
- - AHTOXA   Вот же: Procedure Call Standard for the ARM Archit...   Feb 15 2013, 07:28
- - Genadi Zawidowski   Цитата(AHTOXA @ Feb 15 2013, 11:28) Вот ж...   Feb 15 2013, 07:45


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

 


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


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