Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91RM9200 не заводится из flasha
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
zhenja
Чип стартует из DBGU через XModem без проблем. Сначала бутлоадер потом у-буут потом линух. Все отлично работает.
А из флеша не грузится, и не пойму почему. Флеш прошит нормально, сравнивал. На референс боарде AT91RM9200DK такойже бут-лоадер и грузит нормально. Соединение СД-РАМа и флеша - как на референсе. Чип после ресета 32.768 КГц генерит на СД-РАМ клоке.
Подскажите где искать.
zhenja
Сам спросил. Сам и решение нашел. Надо было в бут-лоадере поставить цикл в момент включения главного клока побольше. И все отлично заработало. Поставил в 6 раз больше, на всякий случай. На время старта это не влияет. smile.gif
VladislavS
Про запуск и конфигурирование PMC у этого чипа большая ERRATA. Если использовать много разных режимов отладки, прошивки и штатной работы, то PMC шизеет. Долгие опыты в начале освоения чипа дали более менее устойчивый к смене режимов код:

Код
  //Включить главный генератор и задать время запуска 6/32768= 0,18 мс
  PMC_MOR = 1 | (6<<8); // MOSCEN | OSCOUNT
  while(!PMC_SR_bit.MOSCS); //Ждем пока генератор стабилизируется
  //Переводим процессор на главный генератор
  PMC_MCKR = 1 | (0<<2) | (0<<8); // MCK = MAIN  PRES=0  MDIV=0
  //Настроим PLLA на 196,608 МГц
  //Действуем согласно ERRATA
  PMC_PLLAR = (1<<29) | (32<<16) | (2<<14) | (28<<8) | 4; // MULA | OUTA | PLLACOUNT | DIVA
  while(!PMC_SR_bit.LOCKA); //Ждем пока PLLA захватится
  PMC_PLLAR = (1<<29) | (31<<16) | (2<<14) | (28<<8) | 3; // MULA | OUTA | PLLACOUNT | DIVA
  while(!PMC_SR_bit.LOCKA); //Ждем пока PLLA захватится
  //Настроим PLLB на 95,8464 МГц
  //Действуем согласно ERRATA
  PMC_PLLBR = (1<<28) | (24<<16) | (28<<8) | 5;
  while(!PMC_SR_bit.LOCKB); //Ждем пока PLLB захватится
  PMC_PLLBR = (1<<28) | (25<<16) | (28<<8) | 5; // USB96M | MULB | PLLBCOUNT | DIVB
  while(!PMC_SR_bit.LOCKB); //Ждем пока PLLB захватится
  //Переключим процессор на PLLA и MCK на PLLA/2
  //Действуем согласно ERRATA
  PMC_MCKR_bit.MDIV=1;  //MCK = PCK/2
  PMC_MCKR_bit.PRES=0;  PMC_MCKR_bit.CSS=2; //PCK = PLLA


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