HOWTO по прошивке ARM7-based AT91SAM7Sxxx-семейства

HOWTO по программированию ARM7-based AT91SAM7Sxxx -семейства
навеяло написать этот пост после прочтения этого поста — http://www.kharkovforum.com/showthread.php?t=144090

Этот пост это косвенное продолжение мой статьи — ARM7 HOWTO (AT91SAM7S256) — On-Line документ, на тему: Микроконтроллер AT91SAM7S256 — Быстрое обучение на примерах. по ссылке — http://projects.org.ua/new/index.php?mod=news&act=show&id=15

Сразу, на всякий случай! Вот схема включения платы фирмы «OLIMEX» — http://www.olimex.com/dev/images/ARM/SAM/SAM7-Pxxx_Rev_E-sch.gif

Итак, «пикантные подробности» про SAM-BA.
SAM-BA — это встроенный в контроллер загрузчик, по-нашему, bootloader. Он записывается из флеш.  Где его, при наличии кривых рук, можно благополучно убить. Потому копия этого загрузчика есть в ROMе ( ну или это просто кусок флеша, к которому нашим шаловливым ручкам никогда не добраться ). И если мы убили загрузчик, то можем его восстановить, путем нехитрых манипуляций. А именно:
— подтянуть пин TST и пины PA0, PA1, PA2 к «1»
— подать питание
— подождать коло 10 сек.

…и после этого он становится чистенький как девственник — готов к бою.

Итак, SAM-BA жив и здоров.
После включения чипа — управление передаётся ему.
SAM-BA поддерживает два интерфейса — USB и UART за это отвечает модуль DBGU.
По умолчанию SAMBA лезет в USB. Можно также и использовать UART.
USB — Нам это и надо.
Но для этого, USB должен функционировать.
SAM-BA устанавливает частоты, исходя из обязательного кварца 18,432 МГц.
Ещё нужно подтянуть USB_D+ через 1,5 кОм, что бы сигнализировать USB-хосту о подключении устройства к шине.
Можно тупо кинуть эти 1,5 кОма на 3,3 Вольта.
Либо повесить на ножку порта и включать по мере надобности.
Как я кое где нашел в инете, в SAM-BA прошита нога PA16.
И вот тут я не совсем догоняю сам. Есть дока, на Атмел’овском сайте AT91SAM7S64 USB Certification.
В ней сказано, что они отправляли на сертификацию свою оценочную плату AT91SAM7S-EK. В том же документе сказано, что они выкинули из неё ряд компонентов, для уменьшения энергопотребления, в том числе полевик TR2. Это ключ, который подтягивает 1,5 кОма к 3,3 Вольта при подаче питания. Они вместо него кинули перемычку, между стоком и истоком. Тогда получается, что для bus-powered устройства так и надо делать…
Если кто вешал USB pull-up резистор просто на 3,3 В — есть какие-нить побочные эффекты? я не вешал, но помоему не должно быть.
Ну там какое-нить незасыпание/непросыпание девайса… Где-то видел, описывались проблемы с NEC-овскими хостами, но это же устройство работало нормально на Интеле и VIA. Может это из той же серии?

Вот тут есть такой текст: «благодаря встроенной подтяжке и её поведению после резета ( активна ), только пин TST нужно удерживать в 1, что бы активировать SAM-BA».

Ещё насчёт запуска SAM-BA. Ссылка на пост перца из Атмел:
Как было описано выше, если при ресете ножка TST удерживается в «1», то происходит перезапись SAM-BA из ROM во FLASH.
При следующем ресете, если ножка TST оставлена неподключенной ( она внутри камня подтянута через 15 кОм к земле ), происходит запуск SAM-BA.
Так будет продолжаться до тех пор, пока мы не зальём свою прошивку в камень.
Причём наша прошивка _затрёт_ SAM-BA.
И соотвественно при последующих запусках будет исполняться наша прошивка.
До тех пор, пока мы не повторим вышеописанную процедуру с восстановлением SAM-BA, путём подтяжки ножки TST к «1».

Ну и на закуску.
Работа с SAM-BA без дополнительных телодвижений.
Как то: ресетов, замыканий ножек и т.п. Basic Bootloader Solution

Железка получается — проще некуда.
Программить Вашу программу в чип — еще проще!

Еще есть возможность его программировать по JTAG. Но я этого не делал ни разу с этим семейством, так что сказать не могу ни чего. Может кто про JTAG чтото и добавит, если снизойдет желание на когото.

Добавить комментарий