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

 
 
> STM32L151 + SDIO + FreeRTOS, BusFault после выхода из прерывания SDIO
MiklPolikov
сообщение Feb 26 2015, 15:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Коллеги, добрый день.
Подскажите что-нибудь !

После выхода из обработчика прерывания SDIO программа оказывается в BusFault_Handler. Глюк происходит изредка и нерегулярно.
В окне Callstuck картина каждый раз одинаковая, глюк где-то в коде ядра ОС
Если установку эвентов в прерывании заменить на глобальную переменную, а ожидание эвентов на проверку этой переменной в цикле while , то глюка не происходит.

Приоритет прерывания 12.

FreeRTOS настроена так :
Код
#define configKERNEL_INTERRUPT_PRIORITY         255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY     191
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for(;; ); }  /*проходит не ругается  */


Обработчик прерывания
Код
void SDIO_IRQHandler(void)
{
       static portBASE_TYPE xHigherPriorityTaskWoken;
       static unsigned int  SDIO_STA_MASK;

        xHigherPriorityTaskWoken = pdFALSE;
    
     SDIO_STA_MASK=SDIO->STA & 0x00ffffff; //т.к. в EventGroup можно передавать только 24 бита
    
     xEventGroupSetBitsFromISR(x_SDIO_Transmit_EventGroup, SDIO_STA_MASK ,&xHigherPriorityTaskWoken);

     portYIELD_FROM_ISR(xHigherPriorityTaskWoken == pdTRUE);

     SDIO->ICR= SDIO_STA_MASK; //сбрасываем флаги прерывания //

        xxxx=123; //Глобальная переменная для поиска места глюка
}

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Feb 26 2015, 20:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Смотрите значения BFSR и BFAR.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 27 2015, 00:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



CFSR = 0x00008200 (во всех случаях)
То есть, стоят биты
15 BFARVALID BFAR holds a valid fault address.
9 PRECISERR Precise data bus error . A data bus error has occurred, and the PC value stacked for the exception return points to
the instruction that caused the fault.

BFAR=0xE000ED00 или 0xC0008830
Что по этим адресам, показано на картинках.

Мне не приходит в голову, что со всем этим делать.

Ещё, заметил, что глюк происходит не в одном месте, а в двух: а)во время ожидания эвента из прерывания(чаще) , и б) во время ожидания другого эвента просто из задачи. Т.е. вроде как и с прерыванием не связано, а связано только с эвентом. Множество других эвентов работают без проблем.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MiklPolikov   STM32L151 + SDIO + FreeRTOS   Feb 26 2015, 15:55
|- - aaarrr   Цитата(MiklPolikov @ Feb 27 2015, 03:15) ...   Feb 27 2015, 09:29
|- - MiklPolikov   Вот такой массив их эвентов и такое обращение к не...   Feb 27 2015, 10:48
|- - AHTOXA   Цитата(MiklPolikov @ Feb 27 2015, 15:48) ...   Feb 27 2015, 11:05
|- - MiklPolikov   Цитата(AHTOXA @ Feb 27 2015, 14:05) А где...   Feb 27 2015, 11:08
- - kolobok0   Цитата(MiklPolikov @ Feb 26 2015, 18:55) ...   Feb 27 2015, 19:43
|- - MiklPolikov   Цитата(kolobok0 @ Feb 27 2015, 22:43) туп...   Feb 27 2015, 20:12
|- - MiklPolikov   Другой вопрос: Делаю xTimerResetFromISR , после э...   Feb 27 2015, 21:45
- - aaarrr   Приоритеты прерываний настроены?   Feb 27 2015, 22:18
|- - MiklPolikov   Цитата(aaarrr @ Feb 28 2015, 01:18) Приор...   Feb 27 2015, 23:24
|- - aaarrr   Цитата(MiklPolikov @ Feb 28 2015, 02:24) ...   Feb 27 2015, 23:55
|- - MiklPolikov   Цитата(aaarrr @ Feb 28 2015, 02:55) Вроде...   Feb 28 2015, 00:38
|- - aaarrr   Цитата(MiklPolikov @ Feb 28 2015, 03:38) ...   Feb 28 2015, 01:02
|- - MiklPolikov   Картина проясняется. Есть две задачи. Есть два не...   Feb 28 2015, 14:36
|- - aaarrr   Цитата(MiklPolikov @ Feb 28 2015, 17:36) ...   Feb 28 2015, 15:01
|- - MiklPolikov   Цитата(aaarrr @ Feb 28 2015, 18:01) Прове...   Feb 28 2015, 15:27
- - aaarrr   С приоритетом KERNEL_INTERRUPT_PRIORITY работают в...   Feb 28 2015, 15:59
|- - MiklPolikov   Цитата(aaarrr @ Feb 28 2015, 18:59) С при...   Feb 28 2015, 17:13
|- - aaarrr   Цитата(MiklPolikov @ Feb 28 2015, 20:13) ...   Feb 28 2015, 17:54
|- - MiklPolikov   Поэкспериментировал ещё : Оказывается, если замен...   Feb 28 2015, 21:32
- - aaarrr   Сломается точно так же и с семафорами в конце конц...   Feb 28 2015, 22:22
|- - MiklPolikov   Проблема решилась. После перехода с версии FreeRT...   Mar 1 2015, 04:47
|- - aaarrr   Цитата(MiklPolikov @ Mar 1 2015, 07:47) П...   Mar 1 2015, 11:57
- - kan35   у меня аналогичное случалось при банальном перепол...   Apr 8 2015, 17:30


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 10:43
Рейтинг@Mail.ru


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