Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: at91sam9g20 - не запускается встроенный bootloader
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
alx2
Пытаюсь запустить плату с at91sam9g20 ревизии B.
Питания на него подаются в следующем порядке:
VDDBU есть всегда (подается от батарейки).
При включении VDDIO (он же VDDANA, VDDOSC, VDDUSB, ) растет от 0 до 3.3 В (несколько миллисекунд).
Когда VDDIO достигает 2.5В, появляется VDDCORE (он же VDDPLL). После его появления я вижу импульс сброса на NRST.
Вижу генерацию 32.768 кГц на часовом кварце и 18.432 МГц на основном. BMS притянут через 100 кОм к VDDIO (пробовал соединить напрямую, разницы нет).
Вместо ожидаемого выполнения программы из встроенного ПЗУ я вижу следующее: через 100 мс после сброса процессор начинает читать NAND FLASH: на NANDOE идут отрицаиельные импульсы длительностью 70 нс с периодом 650 нс. В это время периодически вижу импульсы на CLE. На ALE импульсов не замечено. Продолжается это примерно 4 секунды, после чего все стихает.
Попыток обращения по SPI не вижу. На SPI0CS0 и на SCK0 высокий уровень, никаких импульсов нет. В DBGU ничего не выдается (как я понял, загрузчик должен выдать что-то типа RomBoot?). Более того, на выводе DTXD низкий уровень (DBGU не инициализируется?).
Три платы ведут себя одинаково.

Подскажите, пожалуйста, в чем может быть проблема. У меня мысли кончились...
aaarrr
Цитата(alx2 @ May 14 2012, 18:13) *
У меня мысли кончились...

Не пробовали отключить NAND?
alx2
Цитата(aaarrr @ May 14 2012, 19:20) *
Не пробовали отключить NAND?

Пробовал. Отключал CE флешки от процессора и подавал туда высокий уровень. Никаких изменений.
seltec
Не сильно вникал в суть вопроса, так что может и не совсем в тему, но здесь было подмечено, что в SAM7 bootloader может не корректно работать с компами на чипсете AMD. С чипсетом Intel проблем не возникало. Может это поможет?...
aaarrr
Так тут до "чипсета" не доходит. Получается, что загрузчик стартует (запускает основной кварц), но работает некорректно.
Кстати, alx2, вы пробовали USB подключать, или смотрите только DBGU?
alx2
Цитата(aaarrr @ May 15 2012, 13:15) *
Кстати, alx2, вы пробовали USB подключать, или смотрите только DBGU?

Пробовал. Никакой реакции со стороны компьютера.

Насчет основного генератора - тут ситуация непонятная. У меня генерация (18 МГц с размахом 200 мВ) на кварце (вывод XOUT) появляется сразу в момент подачи питания, и я не вижу признаков того, что кто-то генератор "включает". В документации, действительно, написано, что после сброса генератор выключен, и его надо включать, но нигде не уточняется, что значит "выключен", и что при этом не должно быть никакой генерации...

Насчет NANDOE - как я понял, это просто сумма сигналов NCS3 и NRD, поэтому импульсы на этом выходе еще не свидетельствуют об обращении именно к NAND FLASH. Видимо, процессор обращается к области NCS3 как к статической памяти. А импульсы на CLE - на самом деле A22...

Так что пока у меня пока полное впечатление, что процессор пытается стартовать из несуществующей внешней памяти (NCS0 у меня не используется и не выведен из-под процессора)...

Кто-нибудь вообще использует sam9g20 с таким порядком подачи питаний (сначала VDDIO, потом VDDCORE)?
У меня осталась единственная мысль - попробовать поменять порядок подачи питаний, что не так-то просто сделать... sad.gif
aaarrr
Цитата(alx2 @ May 15 2012, 13:14) *
Насчет основного генератора - тут ситуация непонятная. У меня генерация (18 МГц с размахом 200 мВ) на кварце (вывод XOUT) появляется сразу в момент подачи питания, и я не вижу признаков того, что кто-то генератор "включает". В документации, действительно, написано, что после сброса генератор выключен, и его надо включать, но нигде не уточняется, что значит "выключен", и что при этом не должно быть никакой генерации...

Ну, если выключен, то по логике и генерации быть не должно. Проверять в голову не приходило.
Попробуйте переключить BMS на загрузку с NCS0 - тогда его точно никто включать не будет.

Цитата(alx2 @ May 15 2012, 13:14) *
Кто-нибудь вообще использует sam9g20 с таким порядком подачи питаний (сначала VDDIO, потом VDDCORE)?
У меня осталась единственная мысль - попробовать поменять порядок подачи питаний, что не так-то просто сделать... sad.gif

Используем. Для ревизии B это нормально.
alx2
Оп-па! Сейчас проделал простой эксперимент - посадил BMS на землю. И поведение изменилось!!!
Во-первых, на основном кварце нет никакой генерации, а во-вторых, на NANDOE нет никаких импульсов, постоянный высокий уровень.

Следовательно, процессор на BMS реагирует, и высокий уровень на нем видит. Включение основного генератора, видимо, производится осмысленно, под управлением встроенного загрузчика.
Остается непонятным, какого же хрена он дальше не хочет работать как положено...
aaarrr
Я бы еще батарейку посоветовал отключить пока, чтобы POR формировался на части, запитанной от VDDBU. У вас ведь предусмотрено "альтернативное" питание VDDBU от VDDIO?
alx2
Цитата(aaarrr @ May 15 2012, 14:54) *
У вас ведь предусмотрено "альтернативное" питание VDDBU от VDDIO?

Нет, sm.gif но припаять проводок недолго. Только мне непонятен смысл этого эксперимента. У меня VDDCORE и VDDBU делается двумя одинаковыми микросхемами (TPS71710). Если я вместо батарейки подам VDDIO, то VDDCORE и VDDBU будут появляться одновременно - плюс-минус разброс параметров микросхемы. И что?

Кстати, я могу вынуть батарейку, подать питание и вставить батарейку. sm.gif
aaarrr
Цитата(alx2 @ May 15 2012, 14:12) *
У меня VDDCORE и VDDBU делается двумя одинаковыми микросхемами (TPS71710).

Хм. Крутая батарейка должна быть.

Цитата(alx2 @ May 15 2012, 14:12) *
Если я вместо батарейки подам VDDIO, то VDDCORE и VDDBU будут появляться одновременно - плюс-минус разброс параметров микросхемы. И что?

POR у VDDBU части сработает.
alx2
Хм... Убрал батарейку. Оказалось, что и без нее на VDDBU появляется напряжение (видимо, через внутренние цепи контроллера).
После подачи основного питания контроллер отрабатывает все ту же процедуру. Только импульсы на NANDOE появляются не через 100 мс после включения, а почти через секунду (задержка на стабилизацию часового кварца?)...
aaarrr
Цитата(alx2 @ May 15 2012, 14:28) *
После подачи основного питания контроллер отрабатывает все ту же процедуру. Только импульсы на NANDOE появляются не через 100 мс после включения, а почти через секунду (задержка на стабилизацию часового кварца?)...

Да, это медленная раскачка кварца (до 1200мс по даташиту).

Меня тут смущает пара моментов:
- вы говорите, что DBGU не инициализирован, но внутренний загрузчик должен выплюнуть строку "ROMBoot" еще до всех попыток загрузки.
- "0" на выводе DTXD. Даже если он не инициализирован, должна быть единица за счет включенного pull-up'а.
Проверьте подключение DBGU.

А на SPI какая-нибудь память не подключена?
alx2
УРА!!! Заработала! (с) Матроскин.

Рассказываю. Оказалось, что проблема была в сигнале JTAGSEL. Он у меня был притянут к 1В чтобы включить режим JTAG. Отпаял внешний резистор, теперь этот сигнал стал притянут к нулю внутренним pull-down резистором. И получил в терминале долгожданную "RomBOOT".

Я и не предполагал, что сам факт переключения порта JTAG/ICE может влиять на работу ядра... К самому интерфейсу у меня ничего не было подключено, все JTAG сигналы имеют подтяжки куда следует...

Столько нервов потратил... sm.gif
Всем большое спасибо за участие и поддержку!

ЗЫ. На SPI никаких памятей нет, и, как я уже писал, я не видел никаких признаков обращения к SPI - ни на SCK, ни на CS0 не было никаких импульсов.
DmitryM
Цитата(alx2 @ May 15 2012, 15:13) *
Рассказываю. Оказалось, что проблема была в сигнале JTAGSEL. Он у меня был притянут к 1В чтобы включить режим JTAG. Отпаял внешний резистор, теперь этот сигнал стал притянут к нулю внутренним pull-down резистором. И получил в терминале долгожданную "RomBOOT".

Я и не предполагал, что сам факт переключения порта JTAG/ICE может влиять на работу ядра... К самому интерфейсу у меня ничего не было подключено, все JTAG сигналы имеют подтяжки куда следует...


Хых, кто бы мог подумать, ведь в datasheet сказано: "The JTAGSEL pin is used to select the JTAG boundary scan when asserted at a high level. It
integrates a permanent pull-down resistor of about 15 kΩ to GND, so that it can be left unconnected
for normal operations."
Естественно, в boundary scan лапы себя по другому ведут. А JTAG отладчик работает с JTAGSEL=0.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.