Как устроен типичный ISP (Internet Service Provider)
Многие задаются вопросом как устроена сеть провайдера или как им самим строить сеть, в данной статье я покажу как спроектирована и работает сеть у меня, на логическом уровне. Хотя не считаю свою структуру за идеальную, можно было сделать и лучше, но это мое имхо 🙂 ибо истина “спроси у 2-х провайдеров как строить сеть – получишь 3 разных варианта “
Теперь подробнее о том как это работает
Типичная сеть передачи данных состоит из 4-х уровней, многие говорят что 3 но на самом деле их 4
1 уровень – граница сеть, т.е стык с другими операторами, он же бордер
На этом уровне обычно ведется работа с магистральными операторами у кого берем Интернет и операторами клиентами – которым даем Интернет 🙂 Взаимодействие в 90% случаях осуществляется с помощью протокола динамической маршрутизации BGP
2 уровень – это само ядро сети
В него входят биллинг, radius сервер, центральные коммутаторы куда все воткнуто, NAT и шейперы (которыми нарезаем полосу клиенту. Можно резать и на порту управляемого коммутатора – но в таком случае и локальные ресурсы будут на тарифной скорости, нам-же надо предоставить тарифную скорость в Интернет и до 100мбит внутри своей сети
Взаимодействие между оборудованием обычно тоже происходит с помощью протоколов динамической маршрутизации таких как BGP (В этом случае внутреннее BGP или OSPF), но есть и приверженцы статических маршрутов
3 уровень – это уровень распределения, агрегация
В этот уровень обычно обычно входят управляемые коммутаторы (2-го или 3-го уровня) квартала или района, в зависимости от внутреннего устройства сети. В моем случае ставятся коммутаторы 3-го уровня и иногда дополняются коммутатором 2-го уровня, т.к при схеме VLAN на дом – не стоит разгребать домовые вланы в ядре сети
4 уровень – уровень доступа, акцесс, точка клиентского доступа
Это те самые домовые свитчи которые стоят в подвалах и на чердаках домов в ящике. К ним уже подключаются клиенты. В странах СНГ чаще всего используется D-Link DES-3526, D-Link 3026 и потихоньку начали ставить D-Link DES-3028, для юридических лиц обычно уже брезгуют длинками и ставят Cisco Catalyst 2950
Теперь о том как это работает у меня:
1) устройство 1-го уровня
В качестве пограничных маршрутизаторов используются 2 железки Juniper j4350 к каждой из которых подключен свой магистральный аплинк, взаимодействие с аплинками происходит с помощью BGP протокола (т.е отдаем аплинкам сети закрепленные за нашей AS (автономная система) и получаем от них полный список маршрутов в сети Интернет (full-view)
2) устройство 2-го уровня
На втором уровне происходит NAT-инг клиентов, шейпирование тарифных скоростей и маршрутизация (Интернет или пиринговые сети)
В качестве NAT-еров и шейперов используются две интелевских серверных платформы под управлением FreeBSD (на каждом из них производится и NAT и нарезка скоростей и каждый из них резервирует друг друга). Шейпинг осуществляется с помощью dummynet и таблиц (tablearg) а нат с помощью pf
Так-же между этими маршрутизаторами и пограничными маршрутизаторами (j4350) бегает внутреннее BGP для того чтобы в случае отказа одного из бордеров – быстро переключится на второй да и некая балансировка трафика тоже не будет лишней
Между маршрутизаторами и коммутаторами 3-го уровня бегает протокол OSPF для обмена внутрисетевыми и пиринговыми маршрутами + мы аннонсим с маршрутизаторов на них дефаулт роут, т.е маршрут по умолчанию. Маршрутизатор 1 имеет метрику 100
Маршрутизатор 2 имеет метрику 200, т.е в случае отказа одного из маршрутизаторов – все пакеты пойдут через резервные ( интервал переключения около 10 секунд)
3) устройство 3-го уровня
При моей схеме VLAN на дом на уровне распределения приходится держать коммутаторы 3-го уровня, которые занимаются маршрутизацией домовых сетей и вланов.
На коммутаторах работает IGMP snooping, обрезается весь ненужный мультикаст и режутся бродкасты и порты NetBIOS (tcp/udp 135-139, 445)
4) устройство 4-го уровня
На четвертом уровне стоят коммутаторы D-Link DES-3526, планируем ставить DES-3028, т.к 4-ре гигабитных порта очень часто нужны. Да и по слухам 3526 уже EOL
К коммутаторам напрямую подключаются клиенты, на абонентских порах включен loopback detect (для выключения портов с петлей), максимальное количество mac-адресов на порту равно 5, включен igmp snooping и фильтруется весь мультикаст кроме диапазонов 224.200.100.0-224.200.150.255 и 224.0.0.2, так-же зарезаются все бродкасты (кроме arp протокола) и весь NetBIOS
А теперь логическая схема всего этого дела:
Электроника для всех
Блог о электронике
AVR. Учебный курс. Трактат о программаторах
Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.
Итак, первым шагом в освоении микроконтроллера обычно становится программатор. Ведь без программатора невозможно загнать программу в микроконтроллер и он так и останется безжизненным куском кремния.
Что же представляет из себя это устройство?
В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя с компа залить файл прошивки в память контроллера. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.
Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:
Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).
К этим выводам подключается прошивающий шнур программатора и происходит заливка прошивки. После чего шнур отключается и контроллер начинает работу.
У AVR прошивка заливается по интерфейсу SPI и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):
Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:
![]() |
Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.
Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.
Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.
Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:
![]() |
Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:
Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.
Параллельное высоковольтное программирование
Обычно применяется на поточном производстве при массовой (сотни штук) прошивке чипов в программаторе перед запайкой их в устройство.
Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.
Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:
А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.
Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.
Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.
![]() |
Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал. После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру.
Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к. настройки FUSE для бутлоадера недоступны.
Бутлоадер также прошит по умолчанию в главный контроллер демоплаты Pinboard чтобы облегчить и обезопасить первые шаги на пути освоения микроконтроллеров.
Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)
Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!
А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.
89 thoughts on “AVR. Учебный курс. Трактат о программаторах”
А что это делает в учебном курсе? чего не на главной странице?
Здарова, Артем, вот я и зашел, чего то не мог зайти долго…
Я постепенно правлю и переписываю старые статьи, чтобы привести их в более стройный и завершенный вид.
Программаторы для AVR микроконтроллеров (USB, COM, LPT)
Узнаем что такое ISP-интерфейс, разберемся с недорогим и удобным программатором USB ISP. Рассмотрим принципиальные схемы простейших программаторов для AVR микроконтроллеров с использованием COM и LPT портов компьютера. Данной информации вполне хватит чтобы прошить большинство моделей AVR микроконтроллеров не только в Linux, но и в других ОС.
Интерфейс внутрисистемного программирования ISP
Для того чтобы записать программу в AVR микроконтроллер вам понадобится программатор.
Существует достаточно много разнообразных конструкций программаторов для AVR микроконтроллеров, которые подключаются к разным портам компьютера.
Как правило ISP интерфейс размещают на платах в виде десяти или шести штырьков, к которым посредством подходящего коннектора через шлейф подключается программатор.
Рис. 4. ISP интерфейс на плате.
Назначение пинов в ISP интерфейсе:
Для внутрисхемного программирования микроконтроллера достаточно всего 4 пина, поскольку питание микроконтроллера может осуществляться от самой схемы где он установлен.
Программатор USB ISP ASP
Для работы с AVR чипами я приобрел недорогой USB ISP программатор по цене примерно 10$. Такое устройство есть сейчас в продаже во многих отечественных и зарубежных интернет-магазинах, так что с покупкой проблем не должно возникнуть.
Данный программатор безопасен в использовании, имеет небольшие размеры и поддерживается большинством программ для прошивки микроконтроллеров AVR. USB ISP работает под операционными системами Linux, Mac OS X и Windows. Для Linux никаких драйверов устанавливать не нужно, после подключения программатора к USB порту устройство сразу же определится и будет готово к использованию.
Рис. 6. Расположение пинов на разъеме USB ISP (распиновка).
Рис. 7. Расположение контактов в гнездах коннектора подключенного к программатору USB ISP.
Рис. 8. Принципиальная схема самодельного программатора USB ASP ISP.
Подробную информацию по изготовлению USB ASP, а также печатные платы, драйвера и прошивку для микроконтроллера можно найти на официальном сайте: http://www.fischl.de/usbasp/
К тому же в интернете достаточно много ресурсов по данному свободному программатору, есть много готовых разводок печатных плат, в том числе и в программе SprintLayout, поэтому подробно в данной статье останавливаться на этом не будем.
Программатор с использованием COM-порта
Рис. 9. Принципиальная схема программатора AVR микроконтроллеров через COM порт компьютера.
Для полноты информации ниже приведу распиновку портов RS-232 для вариантов DB-9 и DB-25.
Программатор с использованием LPT-порта
Как мы знаем, LPT порт компьютера предназначен для подключения локального принтера (Local Printer Port), но тем не менее его часто используют для подключения различных устройств и самоделок. В данном случаем мы можем его использовать для программирования AVR микроконтроллеров, собрав для данной цели очень простую схему что приведена ниже.
Рис. 12. Принципиальная схема программатора для AVR микроконтроллеров с использованием LPT порта компьютера.
Как видим, схема еще проще чем в варианте с программатором Громова, здесь нам нужны всего лишь 4 маломощных резистора и разъем (папа, со штырьками) для подключения к LPT порту компьютера.
Рис. 13. Расположение пинов для разъемов LPT-порта.
Все детали и соединения можно разместить в корпусе LPT-разъема, а для подключения к микроконтроллеру вывести шлейф с коннектором под ISP-интерфейс или же просто необходимые проводники для подключения к микро-чипу.
Программное обеспечение и заметки
Подключив COM или LPT программатор к микроконтроллеру нужно не забыть подать питание на сам микрочип. В качестве источника питания микроконтроллера можно использовать батарейки или блок питания со стабилизатором, это будет наиболее безопасно как для порта компьютера, так и для чипа. О том как использовать источники питания для AVR микроконтроллера мы уже рассматривали.
Для прошивки AVR чипов под Windows с использованием данных COM и LPT программаторов нужна программа UniРrof от Николаева, которая представляет собою универсальный программатор для AVR (avr.nikolaew.org).
ВНИМАНИЕ! Будьте предельно внимательны и осторожны при сборке и использовании программаторов с использованием COM или LPT порта компьютера, простой ошибкой можно запросто подпалить эти порты. Для нормальной работы таких программаторов нужно стараться использовать по возможности максимально короткие проводники от разъема к схеме программатора и микроконтроллеру. Микропроцессор компьютера желательно чтобы имел частоту не более 1-2 ГГц, а в качестве ОС для программирования чипов желательно использовать Win2000 или WinXP.
Также важно знать что переходники USB-RS232 (USB-COM Port) скорее всего не будут работать с программатором Громова, заработают возможно только те у которых стоят более новые микросхемы, так что лучше искать машину с родным COM-портом.
Заключение
Теперь в любом случае вы сможете собрать доступный вам программатор и прошить хотя бы одну микросхему, на основе которой можно собрать другой более удобный программатор или же какое-то устройство.
В следующей статье мы разберемся как подключить разные модели AVR микроконтроллеров к программатору, узнаем где брать информацию о распиновке микроконтроллеров.
Внутрисхемное программирование
Метод внутрисхемного (внутрисистемного) программирования (ISP — In-System Programmability) на сегодняшний день является основным способом программирования микроконтроллеров, ПЛИС и других приборов, в состав которых входит память Flash или EEPROM. В основе внутрисистемного программирования лежит идея использования какоголибо стандартного интерфейса, интегрированного в программируемую микросхему для последовательного занесения в нее программных или конфигурационных данных.
Типичная система ISP-программирования представляет собой комплекс средств, состоящий из персонального компьютера, интерфейсной платы и специализированного программного обеспечения. В зависимости от типа программируемой микросхемы могут использоваться различные средства программирования:
Основные преимущества использования ISP-технологии отражены в таблице 1.
Для понимания особенностей внутрисхемной отладки и программирования по ISP-технологии далее будут рассмотрены три основных интерфейса, используемых для этих целей:
Бурное развитие электронной техники и связанный с этим рост степени интеграции микросхем к концу 70-х годов привели к необходимости разработки механизма тестирования, способного обеспечить полноценное тестирование сложных и функционально насыщенных печатных плат. В 1980 году группой JTAG (Joint Test Automation Group — объединенная рабочая группа по автоматизации тестирования) была начата разработка спецификации граничного (периферийного) сканирования, стандартизованная в 1990 году институтом IEEE. Получившийся стандарт известен как IEEE Std.1149.1–1990. В дальнейшем было выполнено несколько пересмотров стандарта. В 1994 году в него было добавлено описание языка BSDL (Boundary-Scan Description Language — язык описания устройств, поддерживающих периферийное сканирование). С этого момента стандарт был принят ведущими электронными компаниями во всем мире. В настоящее время многие небольшие фирмы, которые по экономическим причинам не могут воспользоваться дорогими внутрисхемными тестерами, используют технологию граничного сканирования. Последний раз стандарт был пересмотрен в 2001 году [1]. Текст стандарта можно приобрести в IEEE (http://shop.ieee.org).
Архитектура граничного сканирования (Boundary-Scan Test) обеспечивает тестирование соединений между интегральными схемами на плате без использования физических тестовых пробников. Предполагается, что тестируемые микросхемы имеют поддержку JTAG-интерфейса. Стандарт IEEE 1149.1 определяет 4-проводной (опционально 5-проводной) последовательный интерфейс доступа к микропроцессорам, DSP, CPLD. Любая совместимая с JTAG-интерфейсом микросхема (рис. 1) имеет регистры сдвига и модуль поддержки функций граничного сканирования. Ячейки регистра сдвига (BS-регистра) располагаются непосредственно между внешними выводами и функциональным ядром микросхемы.
Данные, поступающие в кристалл через вывод TDI, сохраняются в регистре инструкций или в одном из регистров данных. Последовательные данные выводятся из микросхемы через вывод TDO. Логический модуль интерфейса тактируется сигналом на входе TCK, не зависимом от системной тактовой частоты. Сигналы на входе TMS управляют состоянием порта TAP (Test Access Port). Вывод TRST является необязательным и служит для сброса логики интерфейса JTAG.
Множество микросхем, совместимых со стандартом IEEE 1149.1, могут последовательно соединяться друг за другом на печатной плате, формируя цепь граничного сканирования (рис. 2).
С ее помощью появляется возможность получать информацию о состоянии каждого вывода каждой микросхемы, являющейся частью общей цепи сканирования через последовательный TAP-интерфейс. При обычной работе устройства JTAG-интерфейс не оказывает никакого влияния на его работу.
При тестировании или внутрисхемном программировании с помощью JTAG-интерфейса можно воздействовать на логическое ядро микросхемы, выдавать логические сигналы на выводы микросхемы, считывать выходные сигналы от внутренней логики или значение логических уровней на выводах, впаянных в печатную плату.
Технология граничного сканирования позволяет испытывать плату на наличие структурных производственных ошибок и выполнять ISP-программирование почти всех устройств на плате, независимо от типа и размера встроенной памяти, через стандартный JTAG TAP-интерфейс. В результате происходит значительное сокращение необходимых точек тестирования на плате. Это приносит много выгод: упрощается разводка печатной платы, снижаются затраты и время тестирования [2], сокращается время выхода готового изделия на рынок.
Файлы, содержащие описание поддерживаемых инструкций и конфигурационных параметров регистров сдвига JTAG-совместимых микросхем на языке BSDL, бесплатно доступны на сайтах фирм-производителей.
Интерфейс SPI (Serial Peripheral Interface — последовательный периферийный интерфейс) обеспечивает высокоскоростную передачу информации в синхронном режиме между ведущим и ведомыми устройствами. На рис. 3 показано включение ведущего и ведомого устройств с использованием SPI.
Ведущее устройство содержит 8-разрядный регистр сдвига и генератор синхроимпульсов. Инициирование цикла обмена данными происходит, когда ведущий устанавливает на выводе SS ведомого устройства лог. «0». Ведущее устройство генерирует необходимую тактовую последовательность на выводе SCK для обмена данными между сдвиговыми регистрами устройств. Данные побитно сдвигаются от ведущего к ведомому по линии MOSI (Master Out — Slave In) и от ведомого к ведущему по линии MISO (Master In — Slave Out). В итоге содержимое регистра сдвига ведущего оказывается в регистре сдвига ведомого и наоборот. После передачи каждого пакета данных ведущий синхронизируется с ведомым установкой лог. «1» на линии SS.
Следует учитывать, что если устройство сконфигурировано как ведущее, модуль SPI-интерфейса автоматически не управляет линией SS. Передача нового байта данных происходит сразу же после его записи в регистр сдвига. При необходимости использования линии SS управлять ее состоянием должно программное обеспечение пользователя.
В AVR-микроконтроллере ATmega8 фирмы Atmel модуль SPI-интерфейса обладает следующими возможностями [3]:
С помощью SPI легко организуется внутрисхемное программирование микроконтроллеров Atmel (рис. 4).
Для этого используется три линии интерфейса: MISO, MOSI и SCK. Вывод RESET подключается к «земле» у AVR-серии или к положительному источнику — у серии AT89Sx. В этом режиме обеспечивается программирование (запись и чтение) памяти программ и данных, а также конфигурационных битов кристалла.
DebugWIRE
В мае 2003 года Atmel анонсировала интегрированный в устройства ATtiny13 [4] и ATtiny2313 интерфейс DebugWIRE (One-Wire Debug Interface — однопроводной отладочный интерфейс). Он представляет собой встроенный в кристалл механизм отладки на основе одной двунаправленной линии передачи информации, позволяющий управлять программным потоком, выполнять AVR-инструкции ядра микроконтроллера и осуществлять программирование интегрированной энергонезависимой памяти.
Основные возможности интерфейса DebugWIRE:
Режим отладки в устройстве активируется установкой бита DWEN (debugWIRE Enable) и сброса Lock-битов микроконтроллера. Физическое подключение эмулятора интерфейса к микроконтроллеру производится через вывод RESET, который работает как двунаправленный вывод с открытым стоком с подтягивающим к шине питания резистором. На рис. 5 показана схема подключения отлаживаемого микроконтроллера в режиме debugWIRE к эмулятору.
Тактовая частота определяется установками битов CKSEL и не зависит от debugWIRE. Когда разрабатывается система, в которой будет использоваться debugWIRE, необходимо соблюдать следующие требования:
Поддержка программных точек останова в debugWIRE реализуется при работе с интегрированной средой разработки AVR Studio. При установке точки останова в исходной программе в AVR Studio в программную память микроконтроллера будет вставлена инструкция BREAK. Инструкция, замещенная инструкцией BREAK, будет сохранена. Когда выполнение программы будет продолжено, сначала будет выполнена инструкция, сохраненная из памяти программ. Команду останова можно вставить вручную, поместив инструкцию BREAK в программную память микроконтроллера. Следует учитывать, что Flash-память микроконтроллера перепрограммируется при каждом изменении точки останова. Этот процесс автоматически выполняет AVR Studio через интерфейс debugWIRE. Использование точек останова уменьшает ресурс Flash-памяти. Устройства, применявшиеся в отладке системы, не должны передаваться конечным пользователям.
Использование интерфейса debugWIRE накладывает некоторые ограничения на устройство, в котором он применяется. Коммуникационный вывод интерфейса dW физически совмещен с выводом внешнего сброса. Поэтому источники внешнего сброса не поддерживаются при работе debugWIRE.
Система debugWIRE точно эмулирует все входные и выходные функции на полной скорости, когда выполняется программа в CPU. Если процессорное ядро остановлено, необходимо проявлять осторожность при доступе к некоторым регистрам ввода-вывода через отладчик AVR Studio.
При установке бита DWEN (активации debugWIRE), некоторые части системы тактирования остаются в активном состоянии при переходе в режим «sleep», что приводит к увеличению потребляемой мощности. Поэтому необходимо отключать DWEN, когда debugWIRE не используется. При работе с debugWIRE микроконтроллер использует 8-разрядный регистр DWDR, образующий коммуникационный канал между исполняемой в микроконтроллере программой и отладчиком. Этот регистр доступен только интерфейсу debugWIRE и не может быть использован как регистр общего назначения при нормальной работе.
Дальнейшее развитие идея внутрисхемного программирования получила в 8-разрядной серии AVR микроконтроллеров Atmel. В ней реализован механизм самопрограммирования Flash-памяти программ через интегрированные интерфейсы SPI, UART или TWI. Все операции по программированию и перепрограммированию процессорное ядро выполняет по программе, находящейся в загрузочной области программной памяти. Когда происходит самопрограммирование, данные считываются в оперативную память через внешний интерфейс и затем записываются в программную память блоками по 10, 128 или 256 байт. Особенности такого подхода состоят в следующем:
Комплексы внутрисхемного программирования
Практическое применение ISP-технологии возможно с использованием аппаратно-программных комплексов самых разных производителей. Наиболее развитым направлением в этой сфере является производство разнообразных модулей и программных средств для решений на основе технологии JTAG/IEEE 1149.1. Гамма предлагаемых устройств включает контроллеры, подключаемые к портам ПК, а также устанавливаемые в слоты ISA, PCI, USB, PXI. Программное обеспечение этих приборов функционирует на платформе Windows (некоторые версии адаптированы для UNIX) и позволяет проводить тестирование, отладку модулей и перепрограммирование пользовательских микросхем на плате через стандартный TAP-интерфейс. Оборудование для работы с технологией граничного сканирования производят:
Важно отметить, что профессиональное оборудование для граничного сканирования имеет достаточно высокую стоимость. Для оценки возможностей JTAG-технологии можно воспользоваться бесплатным программным обеспечением Дмитрия Кузнецова VEC4JTAG, которое доступно по адресу http://www.orc.ru/
dkuzn/index.htm. Пакет предназначен для получения доступа к средствам контроля и управления схемами ввода-вывода BS-чипов через порт JTAG при помощи кабеля ByteBlaster фирмы Altera. Пакет включает в себя:
Библиотека V4J поддерживается в следующих операционных системах:
Фирма BLIC (www.blic.ru) предлагает бесплатную программу PasByteBlaster, которая работает в среде Windows 9x и при использовании производимого фирмой загрузочного кабеля BLIC ByteBlaster обеспечивает следующие возможности:
Бесплатный программный продукт PonyProg от Claudio Lanconelli (www.LancOS.com) ориентирован на программирование в последовательном режиме большого количества перепрограммируемых микросхем памяти и микроконтроллеров различных фирм: Atmel, Microchip и пр. Версия PonyProg2000 V2.06a поддерживает следующие семейства:
Конструктивно программатор PonyProg состоит из базового модуля, подключаемого к последовательному порту компьютера, и набора адаптеров для различных интерфейсов: SPI, I2C, MicroWire и ICSP (для поддержки PIC Microchip). Схема программатора очень проста и может быть реализована на доступных компонентах, ее версия 2.2 свободно доступна на сайте www.LancOS.com.
Корпорация Atmel производит большой ассортимент средств ISP-программирования и отладки для своих изделий. Для микроконтроллеров AVR-серии на сайте фирмы (www.atmel.com) бесплатно предлагается интегрированная среда разработки AVR Studio, работающая в среде Windows 98/2000/XP. С ее помощью возможно программирование и отладка в исходных кодах на ассемблере, а также внутрисхемное программирование микроконтроллеров с помощью программаторов JTAG, ICE, STK500, ICE50 и AVR-ISP (работает через SPI).
Программатор AVR-ISP можно изготовить самостоятельно, на основе информации, содержащейся в Application Note «AVR910: In-System Programming» (находится на www. atmel.com). Схема этого программатора представлена на рис. 6.
Он обеспечивает согласование COM-порта персонального компьютера с SPI-портом микроконтроллера. Программатор питается от того же источника, что и программируемый микроконтроллер. Когда программирование не происходит, все выводы программатора, подключенные к SPI-порту микроконтроллера, переводятся в третье состояние, благодаря чему программатор может быть постоянно подключен к плате с микроконтроллером.
В целом, использование бесплатной программы AVR Studio и самостоятельно изготовленный вариант программатора AVR-ISP представляется идеальным решением для разработки и программирования устройств на базе линейки AVR-микроконтроллеров фирмы Atmel без каких-либо дополнительных затрат.























