Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Reboot command in ARM processor
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Alina_Sh
Здрасти, Ребята.
Мне нужен soft reboot когда цифровая плата с Армом получает комманду с mother board to reboot.
Вот что у меня есть, но оно заикаеться и необходим hard reboot.

void Reboot_Command(void)
{
Enter_protection_mode(); //ash: disable all interrupts
// we don't need to reanable it, sys_init should do it
RCCU->CCR |= 0x808; // i.e. map reg and reset that value of reg
RCCU->SMR |= 0x2; // i.e. map reg and reset that value of reg
}
Это проблема возникает только тогда когда board получает входной сигнал через serial com port.
zltigo
Цитата(Alina_Sh @ Sep 19 2008, 20:28) *
...необходим hard reboot.

Правильный вариант - через активизацию/провоцирование Watchdog. За деталями - в документацию конкретного контроллера.
Alina_Sh
zltigo,
А почему ето работает если мы idle? оно замораживаеться только когда мы принимаем мессы с serial board.

BTW, спасибо за ответ.

Я всё таки думаю что в функции Enter_protection_mode мы не выключаем все интеррапты.
Может быть такое?
zltigo
Цитата(Alina_Sh @ Sep 19 2008, 21:20) *
Может быть такое?

Для начала надо говорить не о ARM вообще, а о конкретной реализации контроллера. Судя по всему речь идет о каком-то из STRxxx
GetSmart
Цитата(Alina_Sh @ Sep 20 2008, 01:20) *
BTW, спасибо за ответ.
А где ответ? Не у ж то телепатия?! biggrin.gif
singlskv
Цитата(zltigo @ Sep 19 2008, 23:09) *
Правильный вариант - через активизацию/провоцирование Watchdog. За деталями - в документацию конкретного контроллера.

У самых плохих контроллеров ARM всех времен и народов производства (о ужас!) Atmel,
почему то и без "собаки" сброс работает... smile.gif
Код
void sys_reset(void)
{
  RSTC_CR = RSTC_CR_PROCRST | RSTC_CR_PERRST | RSTC_CR_KEY;
}
zltigo
Цитата(singlskv @ Sep 19 2008, 23:32) *
...почему то и без "собаки" сброс работает... smile.gif

У поминаемого STRxxx - типа тоже некий softreset "работает", но поскольку условия использования радиционно для STR не описаны, то получется, судя по наличию вопросов, не всегда.
А собакой у некоего контроллера не имеющего понтовых наворотов, например, выглядит максимум так
Код
    WDFEED    = 0xAA; WDFEED    = 0x55;        // Start Watchdog
    WDFEED    = 0xAA; WDFEED    = 0x66;     // Watchdog incorrect access -> Reset

В чем проблемы-то?
singlskv
Цитата(zltigo @ Sep 20 2008, 02:04) *
В чем проблемы-то?
Разница в скорости перехода на ресет.
Хотя мне нравится и вариант ухода на ресет при неправильном задании ключа для "собаки".
И не очень нравится когда "собаку" нужно честно ждать...
Alina_Sh
Спасибо всем за информацию. Проблема разрешена. В функции Enter_protection_mode добавила следующее:

/* disable all ints and force USB reset */
_SetCNTR(CNTR_FRES);
/* clear interrupt status register */
_SetISTR(0);

/* switch-off device */
_SetCNTR(CNTR_FRES+CNTR_PDWN);

Алина
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.