Перейти к содержанию
    

AT91SAM3U4E

От ATMELа есть пример Getting Started Project. Загружаю его в проц. все работает как надо. Далее, удаляю весь код, оставляя только подключения заголовочных файлов и это:

 

 

int main(void)
{
    // DBGU output configuration
    TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);
     
     while(1)
      {
      printf("-- %s\n\r", BOARD_NAME);
      }
}

 

загружаю в проц. и привет, он не стартует, смотрю под отладкой программа крутится в

WEAK void HardFault_Handler(void)
{
    while(1);
}

это из exception.h

 

в логе дебагера вижу

Bus fault: Imprecise data bus error!

 

Из внешних проявлений, не вижу генерации на кварце.

 

Иногда запускается иногда нет, может постоять "подумать" потом запуститься.

В чем может сидеть проблема?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уж не знаю как отреагирует народ, но у АРМов от Атмела есть проблема судите сами:

 

Дабы исключить всякие разногласия и провести чистый эксперимент я перепаял нормально работающий процессор на борде на тот который удалось купить. Зашил, запустил, поведение точно такое же как я описывал постом выше. Прежний проц. работал нормально!!!

Бордовский проц. от середины 2009 года, с пометкой ES, купленный проц. имеет дату выпуска конец января 2011 года, без пометок. Errara есть только на процы с пометкой ES и ES4

 

Вот так-то!!!

 

Буду писать в Атмел, посмотрим что ответят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте правильность настройки PLL (особенно по нижней границе входной частоты - 8MHz) и EEFC_FMR (он должен инициализироваться кодом, находящимся в RAM).

Использование атмеловского примера никак не гарантирует правильность этих настроек.

 

P.S. Errata есть и на процессоры ревизии "A", находится в хвосте даташита.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Errata есть и на процессоры ревизии "A", находится в хвосте даташита.

 

У меня этот документ Errata on SAM3U Engineering Sample Devices датируется 9августа 2010г, ничего для ревизии AU я не нашел.

 

Проверьте правильность настройки PLL (особенно по нижней границе входной частоты - 8MHz) и EEFC_FMR (он должен инициализироваться кодом, находящимся в RAM).

 

Борд один и тот же, процессоры разные. На одном работает на другом нет. Я не могу утверждать, но мне кажется, что-то не так с процессором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использование атмеловского примера никак не гарантирует правильность этих настроек.

 

В качестве иллюстрации: год назад здесь пытался выяснить причины неадекватного поведения sam9263. Попытки локализации ошибки ни к чему не приводили. Причина была в конфигурации sdram из атмеловского стартапа.

Изменено пользователем Атмег

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня этот документ Errata on SAM3U Engineering Sample Devices датируется 9августа 2010г, ничего для ревизии AU я не нашел.

Еще раз: errata на процессоры ревизии "A", находится в хвосте даташита (раздел 47 doc6430.pdf).

 

Борд один и тот же, процессоры разные. На одном работает на другом нет. Я не могу утверждать, но мне кажется, что-то не так с процессором.

Я тоже ничего не могу утверждать, но мне кажется, что что-то не так с вашей программой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще раз: errata на процессоры ревизии "A", находится в хвосте даташита (раздел 47 doc6430.pdf).

 

есть такое, я не обратил внимание.

 

ATMEL ответил, что разница между этими процессорами есть и нужно ее учитывать, согласно errata документации. Если честно, мне не очень нравиться тот факт, что процессоры разных ревизий, так сильно отличаются. Я понимаю, когда какая-то мелочь может не работать или работать не совсем по документации, но глюк при запуске это уж слишком. ИМХО..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В процессе запуска выяснил, что в скопрированном один-в-один куске инициализации PLL десятки секунд ждём переключения на SLOW CLOCK:

#if 0

    if ((SUPC->SUPC_SR & SUPC_SR_OSCSEL) != SUPC_SR_OSCSEL_CRYST) 
    {
        SUPC->SUPC_CR = SUPC_CR_XTALSEL_CRYSTAL_SEL | ((uint32_t) 0xA5 << 24);
        //timeout = 0;
        while (!(SUPC->SUPC_SR & SUPC_SR_OSCSEL_CRYST) )
        ;
    }
#endif

 

Закомментарил, стало запускаться мгновенно. Кроме того, заработал RESET (в этом процессоре разрешённый сразу). До того как этот кусок закомментровал, запуск ускорялся от подачи сигнала на вход RXD USART0... WATCHDOG я запрещал до перенастройки PLL. В оригинальном примере, кажется, всё это под наблюдением собаки делается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...