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

 
 
> Возврат из MSP в PSP, Cortex M3. Priveledged mode
IXFN50N80Q2
сообщение Oct 7 2012, 11:16
Сообщение #1


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

Группа: Свой
Сообщений: 138
Регистрация: 12-05-09
Пользователь №: 48 987



Что то не понимаю.


Сказано что если поток использует PSP а HANDLER MSP то возвращайся через 0xFFFFFFFD
(прерывание у меня собственно одно)
Сам код.

Код
#include <stdint.h>
#define STM32F10X_MD
#include "stm32f10x.h"
#define SYSCLK_FREQ_HSE

register uint32_t CONTROL __asm("control");
register uint32_t LR __asm("lr");

unsigned long AAA;

void SysTick_Handler(void){
    AAA=1;    
}

int main(void)
{
    
    SysTick_Config(1600);
    CONTROL=(uint32_t)0x02;
    
    while(1)
    {
        AAA=2;
    }
}


Действительно в While(1) наблюдаю PSP, в HANDLERе MSP.
Вот возврат LR=0xFFFFFFFD:
Код
0x0800038E 4770      BX       lr
    22:         SysTick_Config(1600);


Вылетаю в HardFault. Почему не пойму.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
IXFN50N80Q2
сообщение Oct 7 2012, 15:40
Сообщение #2


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

Группа: Свой
Сообщений: 138
Регистрация: 12-05-09
Пользователь №: 48 987



Блин. Долбоптица. а psp то 0x00000000
Заметил еще. Стартую демо проект ChibiRTOS.
Так там уже на входе в int main используется PSP в ThreadMode с корректным значением указателя стека.
MSP тоже есть с корректным указателем. Интересно, включение PSP и MSP задается тогда получается как то в конфигурации ?
Я просто думал что через регистр CONFIG[1]
Т.е. тут похоже речь идет о начальном заполнении стека Process Stack Pointer чем то

Сообщение отредактировал IXFN50N80Q2 - Oct 7 2012, 16:29
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:06
Рейтинг@Mail.ru


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