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

 
 
 
Reply to this topicStart new topic
> AT91RM9200 не заводится из flasha, вдруг перестал
zhenja
сообщение Jul 3 2006, 20:53
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 5-01-06
Пользователь №: 12 854



Чип стартует из DBGU через XModem без проблем. Сначала бутлоадер потом у-буут потом линух. Все отлично работает.
А из флеша не грузится, и не пойму почему. Флеш прошит нормально, сравнивал. На референс боарде AT91RM9200DK такойже бут-лоадер и грузит нормально. Соединение СД-РАМа и флеша - как на референсе. Чип после ресета 32.768 КГц генерит на СД-РАМ клоке.
Подскажите где искать.
Go to the top of the page
 
+Quote Post
zhenja
сообщение Jul 3 2006, 21:45
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 5-01-06
Пользователь №: 12 854



Сам спросил. Сам и решение нашел. Надо было в бут-лоадере поставить цикл в момент включения главного клока побольше. И все отлично заработало. Поставил в 6 раз больше, на всякий случай. На время старта это не влияет. smile.gif
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 4 2006, 14:36
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Про запуск и конфигурирование 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


Каким бы код ни казался странным - каждая строчка буквально вымучена опытами на железе.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:04
Рейтинг@Mail.ru


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