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

 
 
> Тестирование exceptions для STM32, Как гарантированно вызвать обработчики исключений?
Lyrri
сообщение Feb 25 2014, 09:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-01-11
Из: Киев
Пользователь №: 62 244



В текущем проекте сделал сохранение последнего исключения во внешнюю flash память для дальнейшего анализа (сохранение последней причины перезагрузки системы). Осталось это все дело протестировать. То есть написать тестовый код так, чтобы гарантированно вызвать исключения: NMI, HardFault, MemManage, BusFault, UsageFault.
Нашел как вызвать HardFault на просторах этого форума (попытка чтения по невыровненному адресу).

Код
void make_hard_fault()
{
    __asm volatile
    (
        "MOVS r0, #1       \n"
        "LDM r0,{r1-r2}    \n"
        "BX LR                \n"
    );
}


Как лучше/правильнее протестировать все остальные исключения?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ig_z
сообщение Feb 25 2014, 15:55
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Lyrri @ Feb 25 2014, 11:48) *
Как лучше/правильнее протестировать все остальные исключения?


Классика жанра - деление на ноль. Книги и интернет завалены примерами. У меня так
CODE
#ifdef TEST_HARD_FAULT

int div(int lho, int rho)
{
    return lho/rho;
}

void testFault(void)
{
  int a,b,c;
  a = 10;
  b = 0;

  TT_INFO_NM_STR("test HardFalt handler\n");
  c = div(a, b);
  TT_INFO_NM_MSG("c = a / b; => %d",c);
}

#endif  //ifdef TEST_HARD_FAULT
Go to the top of the page
 
+Quote Post



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

 


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


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