В этом приложении рассказывается об отладочном интерфейсе MON08, который применяется для программирования 8-битных МК Freescale (Motorola) серии HC908. Также в нем приведено описание одной из моделей программатора и специализированного ПО к нему.
Так как МК серии НС908 широко применяются не только в бытовой технике, но и, например, в автоэлектронике, предложенный материал может быть полезен широкому кругу специалистов ремонтных служб.
Общие сведения
Изучать методику и алгоритмы программирования МК специалистов по ремонту бытовой техники заставило нежелание производителей делиться информацией на эту тему в полном объеме. Все, что сейчас имеют АСЦ - это доступ к некоторым файлам (конфигурации СМ и пр.), "сервисное" ПО для ПК и поставка специализированных программаторов. На самом деле этого недостаточно. При замене МК на новый нужны еще конфигурационные файлы (маски) самого МК (не путать с файлами конфигурации СМ!), основное ПО или так называемые файлы Full Flash, то есть полные копии Flash памяти МК (удобны при тиражировании МК). Так как производители не предусматривают ремонт ЭМ на компонентном уровне, данную информацию они считают излишней. В этом и есть основной недостаток АСЦ и преимущество независимых СЦ - первые вынуждены предоставлять услуги, список которых регулируется производителем, а вторые могут предоставить расширенный список услуг, в который, в том числе, входит ремонт ЭМ на компонентном уровне, тиражирование МК и др.
Необходимость в тиражировании МК для бытовой техники постоянно растет и препоны производителей в данном вопросе уже не являются особой преградой. Одними из первых специалисты наладили тиражирование МК Freescale серии НС908. Они используются, например, в ЭМ СМ ARDO (MINIJST, MINISEL), ELECTROLUX/ ZANUSSI (EWM1000 (+)), BOSCH (серии MAXX).
MON08 и порядок входа в отладочный режим
МК Freescale серии НС908 имеют отладочный интерфейс MON08, который работает под управлением встроенной в масочную память МК программы MONITOR (Отладочный Монитор). MON08 называют по-разному: отладочным интерфейсом или отладочным режимом. Будем считать, что принципиальной разницы здесь нет.
Отладочный режим работы позволяет организовать диалоговый режим работы между ПК и МК с помощью простых команд:
- считать байт из памяти (ОЗУ или ПЗУ);
- записать байт в память (ОЗУ или ПЗУ);
- считать/записать два байта памяти (ОЗУ или ПЗУ) с автоматическим увеличением адреса;
- считать указатель стека, начать выполнение программы и др.
Обмен между МК и ПК обеспечивается по однопроводной двунаправленной линии.
Что же касается прикладной программы, которая могла быть ранее записана в резидентную память МК, то при переходе в отладочный режим ее выполнение автоматически прекращается - все управление переходит программе МОНИТОР. По большому счету специалистам-ремонтникам отладочный режим необходим только для работы с памятью МК, в том числе, с ее защищенной областью- это нужно для тиражирования МК (для ремонта ЭМ).
Отладочные возможности этого режима в данном случае не востребованы.
Необходимо отметить, что существуют несколько способов перевода МК HC908 в отладочный режим, некоторые из них имеют определенные ограничения, поэтому остановимся на самом универсальном из них.
Чтобы перевести МК в отладочный режим, нужно выполнить определенные действия:
1. Переводят МК в состояние POR (Power ON Reset), то есть подают на него питание. МК поддерживает режим автоматического начального сброса после подачи питания, хотя это можно сделать принудительно, замкнув вход RESET микросхемы с общим проводом. После этого с задержкой (определяется внешней RC-цепью) на входе RESET должен установиться уровень лог. "1". Некоторые модели программаторов имеют специальную цепь формирования сигнала RESET на МК, управляемую программно.
2. На вывод IRQ (он же VPP) должно быть подано напряжение VTST, уровень которого зависит от конкретного типа микроконтроллера (см. документацию на конкретный тип МК). Обычно уровень VTST составляет от VDD+2,5 В до VDD+4 В (в схеме программатора, показанного на рис. П2.2, это напряжение равно 8,1 В, а на рис. 1 - это напряжение 8,5 В). Подача на вход IRQ повышенного напряжения автоматически выключает сторожевой таймер в составе МК.
Рис. 1. Рекомендуемая схема для перевода и работы в отладочном режиме МК MC68HC908AP32
3. На входы универсальных портов МК подаются комбинации логических "0" или "1". В разных типах МК наименования этих портов и комбинации уровней могут быть разными. Например, для МК MC68HC908MR24 эта комбинация следующая (используется внешний кварцевый генератор частотой 4,9152 МГц, подключенный к выв. 52 микросхемы):
- РТС3 (выв. 14) - лог. "1";
- РТС4 (выв. 15) - лог. "0";
- РТС2 (выв. 13) - лог. "1" или лог. "0" (скорость обмена данными с ПК, 4800/9600 бит/с соответственно);
- РТА0 (выв. 55) - лог. "1".
Для МК MC68HC908AZ60 комбинация несколько иная:
- РТС0 (выв. 60) - лог. "1";
- РТС1 (выв. 61) - лог. "0";
-РТС3 (выв. 63) - лог. "1" или лог. "0" (определяет скорость обмена данными с ПК);
- РТА0 (выв. 26) - лог. "1".
Рассмотрим на примере МК MC68HC908AP32 (применяется в ЭМ СМ BOSCH), как определяются подобные комбинации выводов и логические уровни на них. На рис. 1 показан фрагмент схемы включения МК и подключения к нему внешних компонентов для перевода его в отладочный режим. На нём также показана цепь обмена данными между МК и ПК.
Из этого рисунка видно, что комбинация выводов и уровни сигналов на них следующие:
- PTA1 (выв. 30) - лог. "1" (соединен через резистор 10 кОм с шиной питания VDD);
- PTA2 (выв. 29) - лог. "0" (соединен через резистор 19 кОм с общим проводом VSS);
- РТВ0 (выв. 14) - лог. "1" или лог. "0" (в зависимости от состояния переключателя SW1 задается скорость обмена данными с ПК);
- РТА0 (выв. 32) - лог. "1" (линия обмена данными с ПК, в исходном состоянии на ней лог. "1", соединена через подтягивающий резистор 10 кОм с шиной питания VDD).
Также на рисунке видно, что в отладочном режиме для этого типа МК можно использовать две тактовые частоты (с помощью кварцевого резонатора или от отдельного кварцевого генератора) - 4,9152/9,8304 МГц. Уровни на всех перечисленных портах, кроме PTA0, опрашиваются МК лишь в момент входа в отладочный режим.
Вывод РТА0 используется в отладочном режиме для обмена данными между МК и управляющим ПК в последовательном асинхронном полудуплексном режиме. На рис. 1 также показаны микросхемы MAX232 и 74НС125: первая используется для согласования уровней КМОП и интерфейса RS-232, а вторая представляет собой 4-канальный буферный драйвер (в схеме используются только два канала). Вентили 74НС125 объединяют дуплексные сигналы интерфейса RS-232 по схеме "монтажное ИЛИ" и соединены с портом МК PTA0 (см.рис. 1).
Для формирования повышенного напряжения на входе IRQ МК используется выход "схемы подкачки" V+ микросхемы MAX232. Как показала практика, данное решение не является оптимальным, лучше для этих целей использовать отдельный источник питания необходимой мощности.
После выполнения описанных выше действий МК должен войти в отладочный режим - при этом возможен обмен данными между ПК и МК. Если попытки обмена данными не увенчались успехом, то это не означает, что МК неисправен - можно, например, попробовать еще раз, предварительно изменив скорость обмена (см. выше) или, как в СМ BOSCH, обмен возможен, если селектор программ на панели управления находится в определенном положении.
Далее с помощью специального ПО (см. раздел "Программирование МК") с ПК необходимо ввести 8 байт, содержимое которых должно совпасть с векторами, прошитыми в МК по адресам FFF6-FFFD и хранящимся в защищенной области памяти микроконтроллера. Эти байты еще называют Security Bytes или SS (send 8 bytes security). От результата сравнения зависит, какие операции можно будет производить с содержимым Flash-памяти МК. При положительном результате сравнения постоянная память МК доступна для считывания, записи, стирания, а при отрицательном - только для стирания. Собственно, с помощью байтов SS реализована защита от несанкционированного чтения памяти в МК HC908.
В МК с "чистой" Flash-памятью (например, новые), а также после выполнения операции "СТИРАНИЕ", все 8 байт SS имеют значение FF. В качестве "утешения" можно сказать, что существуют специальные программные пакеты, определяющие методом подбора значение байтов SS.
Программатор MON08
Для программирования МК Freescale HC908 специалистами была разработана схема программатора, которая с успехом применяется для работы с ЭМ СМ ARDO, WHIRLPOOL (MC908JL3/JL8), ELECTROLUX/ZANUSSI (MC68HC08GP16/GP32), BOSCH (MC68HC908AP32/AP64) и др. Для связи программатора с ПК используется интерфейс RS-232.
Принципиальная электрическая схема программатора приведена на рис. 2, а его внешний вид - на рис. 3.
Рис. 2. Принципиальная электрическая схема программатора MON08
Рис. 3. Внешний вид платы программатора
В основу программатора положена схема, предложенная одним из польских радиолюбителей, но в нее были внесены определенные изменения, призванные улучшить качество работы устройства. Рассмотрим назначение основных узлов и цепей программатора.
Основой программатора являются элементы в цепи обмена данными между ПК и МК - это соединитель J1 (интерфейс RS-232), микросхемы MAX233 и 74НС125. Применение микросхемы MAX233 (вместо МАХ232, как на рис. 1) позволило улучшить помехозащищенность и надежность работы программатора в целом.
Коммутация напряжения VTST (+8,1 В) на входе IRQ МК обеспечивается ключами на транзисторах Q2 Q3 (управление с ПК по цепи: конт. 4 J1 - выв. R2 IN/OUT U2 - U1D - Q2 - Q3 - выход VTST (вход IRQ). Также ключ Q2 используется в цепи коммутации питания 5 В на МК (управление с ПК по цепи: конт.4 J1 - выв. R2 IN/OUT U2 - U1D - Q2 - Q1 - выход VDD_S).
В составе программатора имеется отдельный кварцевый генератор U4 на частоту 9,8304 МГц, его выход подключают к входу OSC1 МК. Питание генератора коммутируется транзистором Q1 (цепь управления напряжением VDD_S была рассмотрена выше).
Цепи обмена данными между соединителем J1 интерфейса RS232 и МК практически идентичны схеме, показанной на рис. 1, за исключением того, что используется микросхема MAX233. Программатор питается от сетевого ИП с выходным переменным напряжением 9...12 В. Напряжение выпрямляется диодным мостом BR1 и поступает на интегральный стабилизатор U3 (формирует напряжение +5 В), а также на цепь формирования напряжения VTST. Питание устройства от сети позволило избежать многих проблем с подобными программаторами, в которых питание организовано от интерфейсных линий (RS-232).
Наличие напряжений VDD_S и +5 В контролируют по свечению соответствующих светодиодов (D5, D4).
Для формирования комбинаций логических уровней на входах МК (одно из необходимых условий перевода микроконтроллера в отладочный режим) используются микропереключатели SW1/2, а также резисторы R10-R14. Сигналы на выходе программатора обозначены как SW1/2 и "0". На компоненты этого узла поступает коммутируемое питание VDD_S (5 B). Указанные сигналы подключаются к МК в соответствии с конкретными рекомендациями в зависимости от типа микросхемы (см. описание выше).
Для подключения к МК на программаторе имеется специальная 10-контактная колодка, на которую выведены все необходимые сигналы. Назначение выводов колодки показано на рис. 3.
Программатор испытывался только в варианте непосредственной связи с СОМ-портом ПК. Работоспособность устройства при подключении через специализированный переходник USB-COM на практике не проверялась.
Предложенная реализация последовательного программатора пригодна для программирования большинства МК семейства HC908. Однако нужно учесть, что у каждого подсемейства МК для входа в отладочный режим контрольные сигналы подаются на разные выводы ИМС, которые, кроме всего прочего, могут иметь разные обозначения. Поэтому для подключения программатора к МК нужно руководствоваться соответствующей документацией. Кроме того, для некоторых типов МК в отладочном режиме может потребоваться другая тактовая частота, отличная от той, которую формирует генератор U4 (9,8304 МГц). Также не следует забывать, что некоторые МК могут иметь питание 3,3 В - в таком случае в схему программатора также придется ввести соответствующие изменения. Эти же ограничения относятся к подбору уровня повышенного напряжения, подаваемого на вход IRQ МК.
Подключение программатора к МК
Программатор подключается к МК достаточно просто - достаточно лишь изучить соответствующие разделы документации на МК и рекомендации, описанные выше в этой статье. Применительно к МК MC68HC908AP32 (см. рис. 1) устройство подключают к точкам, показанным в таблице 1.
Таблица 1. Соединение программатора MON08 с выводами МК MC68HC908AR32
Сигналы на 10-контактной колодке программатора (рис. 3) | Обозначение и номер вывода МК MC68HC908AR32 | Примечание |
GND | VSS (выв. 7), VSSA (выв. 42) и др. | Подключают к общему проводу схемы |
NC | Не используется | - |
VDD | VDD (выв. 4), VSSA (выв. 43) и др. | Подключают к шине питания МК |
PTB0 | PTA0 (выв. 32) | 2-направленная однопроводная линия обмена данными. Обозначение PTB0 на программаторе выбрано условно |
VTST (IRQ) | IRQ1 (выв. 9) | Напряжение +8,1 В |
OSC | OSC1 (выв. 5) | Тактовые импульсы частотой 9,8304 МГц |
SW1 | PTA1 (выв. 30) | Выставляется переключателем SW1 состояние лог. "1" |
"0" | PTA2 (выв. 29) | Лог. "0" (линия соединена через резистор 2,2 кОм с общим проводом) |
SW2 | PTB0(выв. 14) | Выставляется переключателем SW2 состояние лог. "1" |
Многие специалисты для облегчения настройки и подключения программатора всегда имеют под рукой уже готовые распечатки контрольных точек из документации на разные ходовые типы МК или, что еще проще, подключаются к заранее известным контрольным точкам на ЭМ. Если модуль не имеет конкретных точек подключения, линии программатора подключают непосредственно к выводам МК. На некоторых типах ЭМ, применяемых в СМ, имеются отдельные соединители, на которые уже выведена часть сигналов для подключения программатора (например, соединитель JF модуля EWM1000+ (ELECTROLUX/ ZANUSSI)).
В качестве примера на рис. 4 показано расположение некоторых точек для подключения программатора к ЭМ MINISEL разных версий (применяются, например, в СМ ARDO).
Рис. 4. Расположение контрольных точек на ЭМ MINISEL для подключения программатора: а - на новой версии модуля с применением SMD-компонентов; б - на старой версии модуля с использованием только DIP-компонентов
Обозначение сигналов, подключенных к этим точкам, намеренно не приводится, эту информацию можно найти в документации на конкретный тип МК.
Часто не всегда удается определить тип МК (на корпус микросхемы может быть нанесена только служебная маркировка), это, например, можно сделать по коду маски (это своеобразный "код конфигурации" МК). Например, МК MC68HC908AP32 (используются в СМ BOSCH) можно идентифицировать по коду маски 4L47P (нанесен на маркировку корпуса). Рассмотрение вопросов выявления типа МК по нанесенной на его корпусе служебной маркировке - тема отдельной статьи, поэтому здесь данный вопрос подробно рассматриваться не будет.
Программирование МК
Для программирования МК с помощью программатора MON08 нужно соответствующее ПО. Выбор программных продуктов для этих целей достаточно широк. Свой выбор можно остановить, например, на программе РROG08SZ (разработчик Pemicro). Это вызвано тем, что программа проста, удобна и доступна для бесплатного скачивания. Процесс установки программы также достаточно прост и поэтому в особых комментариях не нуждается. Единственное, на что нужно обратить внимание - в процессе установки нужно отказаться от заполнения регистрационного окна. После установки ПО на диске С появится папка "Pemicro".
После этого запускают программу, ее основное окно показано на рис. 5.
Рис. 5. Основное окно программы РROG08SZ, где: 1 - окно выбора устройства (программатора); 2 - окно выбора последовательного порта на ПК; 3 - окно выбора стандартной скорости обмена (из списка); 4 - окно выбора нестандартной скорости обмена; 5 - окно ввода SS-кода; 6 - активация режима входа в отладочный режим без SS-кода; 7 - кнопка активации обмена между МК и ПК; 8 - кнопка "ВЫХОД"
Рассмотрим работу программы на примере подключения программатора к ЭМ MINISEL (рис. 4). После запуска программы и подачи питания на программатор желательно проверить МК на предмет обмена данными с ПК. Для этого ставят галочки USER (слева от окна 5, см. рис. 5) и Ignore (6). Далее нажимают кнопку 7 и, если сеанс связи между МК и ПК прошел успешно, должно появиться окно, показанное на рис. 6.
Рис. 6. Выбор алгоритма программирования в соответствии стипом МК и скоростью обмена
Появление дополнительного окна на рис. 6 означает, что нужно выбрать алгоритм программирования МК - в рассматриваемом случае в ЭМ используется MC68HC908JL8, поэтому выбирают строку 908_JL8.08P (она выделена на рисунке).
Если дополнительное окно (см. рис. 6) не появилось, это означает, что между ПК и МК связь не была установлена (неправильно была выбрана скорость обмена или установлены другие настройки, неправильно подключен программатор к МК, неисправен МК и пр.).
При запуске программы в первый раз дополнительное окно выбора алгоритма может не открыться, поэтому его выбирают вручную по пути Q/PEMICRO/ALGORITHMS/.
Затем нажимают кнопку "ОТКРЫТЬ", после чего на экране появится окно, показанное на рис. 7. Это означает, что выбранный алгоритм программирования загружен, МК исправен и готов к работе.
Рис. 7. Алгоритм программирования МК загружен
Так как ранее при запуске программы была установлена галочка IGNORE (без ввода кода защиты SS, см. рис. 5), можно только стереть память МК и затем записать свою прошивку. При попытке чтения памяти программа будет делать вид, что идет операция чтения, на самом деле в итоге будет сформирован файл без записанных в него данных.
Вход в полноценный режим отладки возможен только с вводом SS. Для этого в основном окне устанавливают галочку "USER", в окно 5 (рис. 5) вводят данные SS (8 байт) и нажимают кнопку 7.
Все операции с памятью МК (чтение, запись, стирание), как и другие операции, обеспечивают функциональные кнопки и вкладки программы (расположены в верхней части окна) - подробно говорить о них нет смысла, так как диалоговый интерфейс прост и интуитивно понятен. В режиме чтения прошивки с МК (UPLOAD) программа в отдельном окне по умолчанию предложит дать имя считанному файлу. При первом запуске программы (если вручную не выбрать другой путь) она по умолчанию будет сохранять файлы в папке PEMICRO (см. выше). С помощью этой программы также можно провести верификацию прошивки, корректировать программные модули (прошивки), наладить тиражирование прошитых МК и многое другое.
В заключение приведем принципиальную электрическую схему расширенной версии программатора (см. рис. 8) МК НС908, выполненного на основе микросхемы MAX232. В нем по сравнению с предыдущим устройством (рис. 2, 3) применяются два кварцевых генератора (4,9152 и 9,8304 МГц) и имеется отдельная программно-управляемая цепь формирования сигнала RESET.
Рис. 8. Принципиальная электрическая схема расширенной версии программатора MON08
Источник: Ремонт и сервис