Аппаратная модификация программатора USBDM, повышающая его «внутрисхемность»
USBDM – это широко известный в узких кругах программатор микроконтроллеров Motorola/Freescale серий HCS08/12. С помощью него можно, например, прошивать приборки для свежих ВАЗ-ов (Гранта, Веста) или творить подобные непотребства www.drive2.ru/l/472435133639558124/. Известность его обусловлена опенсорсностью (исходники открыты и каждый может их модернизировать под собственные нужды) и низкой ценой (около 10$ на алиэкспрессе).
Покупался он для экспериментов с отопителем Webasto Thermotop V (проц MC9S12DG256). Для моих экспериментов программатор должен уметь прошивать как EEPROM, так и флеш-память у микроконторллера. Сперва по незнанию был куплен клон UPA-USB, но он умеет только EEPROM для данных контроллеров… Пришлось искать альтернативу, более продвинутые вещи (типа Orange / XProg) стоят довольно много (> 100$ ) даже в Китае, у нас — цены совсем без стыда…
Итак, был куплен USBDM, подпаян к целевой плате (ЭБУ от вебасты), было сделано много попыток читать проц. Основная ошибка, которую я видел – BKGD signal timeout. Очень редко прога цеплялась-таки к процу, но вычитывала что-то неохотно и с ошибками… UPA-USB при этом спокойно себе вычитывала EEPROM из него…
Покупать третий по счету программатор было влом, я начал задумываться о бренности бытия, и тут меня осенило: «WatchDog», внешний и аппаратный, Вебасто ведь ответственный агрегат, процу в нем – негоже зависать и сжигать тачку нафиг… Во время нормальной работы прощивки watchdog своевременно сбрасывается, а на программаторе он пытается, причем успешно, перезапустить проц, чем крайне удивляет программатор.
Watchdog был найден, им оказался LDO TLE4271, который «в нагрузку» имел функции аппаратного Watchdog. Третья нога – Reset Output, отвечает за формирование сброса проца watchdog-ом, 6-я WatchDog input, сброс Watchdog-a. Нога была поднята, USBDM стал нормально читать/писать проц, в общем, теория подтвердилась. Но UPA-USB умеет работать с тем же процом, каким-то образом игнорируя внешние сигналы сброса.
У обоих программаторов в качестве буферного выхода использована одинаковая микросхема 74HC125 (4 неинвертирующих буфера с управляемым выходом):
У USBDM управление Reset-ом сделано в виде инвертора с открытым коллектором (см. схему). У UP-ы же классический PUSH-PULL, который «пересиливает» сигнал WatchDog-а и не дает ему сбросить проц. (Ватчдог обычно через резистор к Reset-у подключают).
В итоге, захотелось переделать USBDM с «открытого коллектора» на «Push-Pull» в цепи управления Reset-ом. Был высвобожден элемент U1A от 125-ки, USBDM не мониторит состояние Reset-а (по крайней мере для HCS12-ых чипов). Переделка изображена на рисунке:
Переделки:
1. Перерезать дорожку между процем и 3й ногой 74HC125.
2. Перерезать дорожку между диодом TR2 и 1,2,11 ногами 74HC125.
3. Поднять 1-ю ногу 74HC125 и посадить её на землю.
4. Запаять перемычку между 3 ногой 74HC125 и диодом TR2 (сигнал Reset)
5. Между 14 и 11 74HC125 ногами припаять резистор в 10к.
По итогу переделки, USBDM стал стабильно и без ошибок читать проц, не смотря на внешний Wathdog. Переделкой – доволен…
В первоначальной версии статьи была допущена ошибка в рисунке "Переделки в схеме", теперь он исправлен
Комментарии 56
Здравствуйте.
Я здесь новичок не судите строго за мои вопросы.
Не могу считать данные с проца S9S12P96, подскажите что я делаю не так.
Прога USBDM Memory Dump при любой стартовой и конечной точке, все время пишет Failed, reason = Expected BDM command ACK missing.
Подскажите что я делаю не так ?
Для начала проверьте, что цепь reset-а свободна от всяких внешних мониторов и вачдогов. Что всё подключено правильно
Все проверял несколько раз, подключено верно. Проц она видит, если выставить к примеру hc08 то она сразу говорит что нет соединения. Может какой-то другой адрес листа нужен или в строчку инициализации что-то нужно добавить ?
Всем привет. Подскажите какие нужно задать диапазоны адресов, чтобы вычитать из 9s12xet256 D_FLASH, Р_FLASH и EEPROM? Даташиты смотрел, но знаний не хватает, а логика тут не срабатывает.
Вроде такие настройки по адресам
поднять 13 вывод и на массу, зачем огород городить не понял.
Оно и было сделано в процессе диагностики проблем с прошивкой. А дальше сравнил с "правильным" программатором и понял, что нужно делать активный push-pull на reset-e, что и было сделано
Приветствую! Подскажите, пожалуйста, прошивает ли usbdm процессор MC9S12XHZ512?
Не пробовал, но 256-й с другими буквами читает и прошивает. Так что дерзайте.
Добрый день
Можете провести небольшой ликбез?
Потребовалось прочитать МК 9s12xs256 ну и соответственно встав вопрос по каким адресам что читать?
Мой пытливый ум нашёл статью где сливали прошивку с аналогичных контроллеров 9s12 с помощью CodeWarrior
Там при конфигурации проекта есть файл с расширением .inc в котром как я понял указанна в том числе и адресация
Беру я для сравнения конфигурацию МК 9S12DG256 открываю и вижу
;*** Memory Map and Interrupt Vectors
;******************************************
EEPROMStart: equ $00000400
EEPROMEnd: equ $00000FEF
RAMStart: equ $00001000
RAMEnd: equ $00003FFF
ROM_4000Start: equ $00004000
ROM_4000End: equ $00007FFF
ROM_C000Start: equ $0000C000
ROM_C000End: equ $0000FEFF
PAGE_30Start: equ $00308000
PAGE_30End: equ $0030BFFF
PAGE_31Start: equ $00318000
PAGE_31End: equ $0031BFFF
PAGE_32Start: equ $00328000
PAGE_32End: equ $0032BFFF
PAGE_33Start: equ $00338000
PAGE_33End: equ $0033BFFF
PAGE_34Start: equ $00348000
PAGE_34End: equ $0034BFFF
PAGE_35Start: equ $00358000
PAGE_35End: equ $0035BFFF
PAGE_36Start: equ $00368000
PAGE_36End: equ $0036BFFF
PAGE_37Start: equ $00378000
PAGE_37End: equ $0037BFFF
PAGE_38Start: equ $00388000
PAGE_38End: equ $0038BFFF
PAGE_39Start: equ $00398000
PAGE_39End: equ $0039BFFF
PAGE_3AStart: equ $003A8000
PAGE_3AEnd: equ $003ABFFF
PAGE_3BStart: equ $003B8000
PAGE_3BEnd: equ $003BBFFF
PAGE_3CStart: equ $003C8000
PAGE_3CEnd: equ $003CBFFF
PAGE_3DStart: equ $003D8000
PAGE_3DEnd: equ $003DBFFF
Потом открываю нужный mc9s12xs256 и там
RAMStart: equ $00002000
RAMEnd: equ $00003FFF
ROM_4000Start: equ $00004000
ROM_4000End: equ $00007FFF
ROM_C000Start: equ $0000C000
ROM_C000End: equ $0000FEFF
EEPROM_00Start: equ $00100000
EEPROM_00End: equ $001003FF
EEPROM_01Start: equ $00100400
EEPROM_01End: equ $001007FF
EEPROM_02Start: equ $00100800
EEPROM_02End: equ $00100BFF
EEPROM_03Start: equ $00100C00
EEPROM_03End: equ $00100FFF
EEPROM_04Start: equ $00101000
EEPROM_04End: equ $001013FF
EEPROM_05Start: equ $00101400
EEPROM_05End: equ $001017FF
EEPROM_06Start: equ $00101800
EEPROM_06End: equ $00101BFF
EEPROM_07Start: equ $00101C00
EEPROM_07End: equ $00101FFF
RAM_FDStart: equ $000FD000
RAM_FDEnd: equ $000FDFFF
PAGE_F0Start: equ $007C0000
PAGE_F0End: equ $007C3FFF
PAGE_F1Start: equ $007C4000
PAGE_F1End: equ $007C7FFF
PAGE_F2Start: equ $007C8000
PAGE_F2End: equ $007CBFFF
PAGE_F3Start: equ $007CC000
PAGE_F3End: equ $007CFFFF
PAGE_F4Start: equ $007D0000
PAGE_F4End: equ $007D3FFF
PAGE_F5Start: equ $007D4000
PAGE_F5End: equ $007D7FFF
PAGE_F6Start: equ $007D8000
PAGE_F6End: equ $007DBFFF
PAGE_F7Start: equ $007DC000
PAGE_F7End: equ $007DFFFF
PAGE_F8Start: equ $007E0000
PAGE_F8End: equ $007E3FFF
PAGE_F9Start: equ $007E4000
PAGE_F9End: equ $007E7FFF
PAGE_FAStart: equ $007E8000
PAGE_FAEnd: equ $007EBFFF
PAGE_FBStart: equ $007EC000
PAGE_FBEnd: equ $007EFFFF
PAGE_FCStart: equ $007F0000
PAGE_FCEnd: equ $007F3FFF
PAGE_FEStart: equ $007F8000
PAGE_FEEnd: equ $007FBFFF
В принципе понятно, что тут надо использовать строки с
EEPROM и PAGE,
но я не пойму что такое ROM? И надо ли его считывать?
Mc9s08ac32 как прошить
Нам понадобится программатор, который покупается на Ebay, AliExpress или же собирается-паяется самостоятельно.
Я покупал такой , но что-то их в продаже не видно. Есть приборы побольше размером , ничем не хуже, насколько я понимаю.
Где-то я находил схемы-прошивки для самостоятельного изготовления, но не помню. Поискал ещё раз, вспомнил. (наглийске йазыг)
Установить драйвера и софт для прошивки в принципе не сложно. Считаем, что уже умеем записать нужную прошивку.
Самое сложное — заполучить в свои руки нужную прошивку. Нужно собрать воедино так называемый "Софт" и так называемый "Конфиг".
В "эти наших интернетах" есть софт версий 01.03.09; 01.04.02; 01.04.03; 01.04.09; 01.04.13; 02.00.10, но надо искать.
Например, с форума Радиокота из темы про подобный программатор можем скачать Софт версии 01.03.09 .
C сайта Manual-SMA можно после регистрации надёргать на халяву десять пошивок (Софт + Конфиг (для наших целей — всё равно какой конфиг)).
Кто скачал — можете выложить дампы прямо в этой теме.
На сайте zip-garant-ul.ru находим и покупаем(да-да, вот такая бяка) за 27рублей (через СМС) или за 0.3 WMZ подходящий конфиг. (Никто не призывает покупать именно там, просто это место мною лично проверено неоднократными покупками. Можно просто попросить конфиг на форуме, люди помогают, откликаются.)
Теперь будем собирать и прошивать всё вместе, потому что я лично не уверен, что "Софт" в прошивке не имеет повреждений.
Понадобится редактор, умеющий работать с файлами *.s19 . Так как нормального редактора таких файлов не нашлось, то берём программу от программатора Orange3
Если кто-то может предложить нормальный редактор для *.s19, буду только рад.
Ладно, продолжим. Когда я забуду, что и как делать, то приду сам и по пунктам буду повторять по написанному.
1 . Находим нужный Софт.
2 . Находим нужный Конфиг.
3 . Открываем Конфиг в редакторе (у меня — Оранж3), копируем содержимое файла в буфер. Больше конфиг не понадобится.
4 . Открываем Софт в редакторе и по адресу начала Конфига (1A00) вставляем содержимое буфера. Сохраняем полученный файл в формате .s19 с новым именем .
——
Тут можно не читать.
Редактор без моего ведома дописывает много лишнего, дополняя отсутствующие в дампе области байтами FF. Такой дамп программатор не может записать, потому что в дампе есть указания на запись в недоступные области.
Нам же нужно писать только по адресам в двух областях :
1080 — 17FF и 182С — FFFF
Это те области, которые описаны в даташите на процессор как Flash-memory. (стр.42 даташита на MC9S08GB60A, раздел 4.1 Memory map )
——
5 . Открываем полученный файл с новым именем банальным блокнотом и удаляем все строки с начала дампа до строки S214001070 включительно (в другом редакторе это может быть строка S1131070, но суть та же, просто на адрес выделено меньше байт (см. описание формата .s19 в Википедии)).
6 . Удаляем строки
S214001800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 (или же S1131800, см. Вики)
S214001810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 (аналогично)
S214001820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 (аналогично)
Потому что это адреса регистров и программатор не может их записать.
7 . Сохраняем полученный дамп. Его нам и нужно!
Запускаем программатор USBDM и прошиваем этим дампом модуль стиральной машины.
В аттаче несколько файлов, из названий файлов понятно их содержание.
————————
НО! Есть вариант попроще, без применения софта от Оранжа и ковыряния с дампами в блокноте. Завтра-послезавтра напишу.
Я же добавлю архив с картинками создания прошивки для ARTL1047RU с помощью софта программатора Тритон.
Настройка программатора USBDM для платформы Arcadia
Программатор USBDM замечательно подходит для процессоров семейства HCS08, которые шли на стиральные машины фирм Indesit, Ariston, Whiplpool, Electrolux и т.д. Штатная программа для данного программатора находится в свободном доступе в сети по адресу http://sourceforge.net/projects/usbdm/
После стандартной процедуры скачивания и установки нужно запустить программу HCS08 Flash programmer, из названия понятно, что данная программа позволяет записать фреш процессора, при первом запуске мы увидим окно с выбором программатора и вводных его данных.
Если ваш программатор определился в диспетчере устройств, то и по нажатию на кнопку «detect» он так же должен определится.
Затем в поле «Target Vdd Control» нужно выбрать питание для процессора, согласно его технической документации, к примеру для процессоров, стоящих в модулях управления стиральных машин Indesit (платформа Arcadia) данный параметр равен 3,3 вольта.,
. Если это поле заблокировано, значит ничего выбирать не нужно, все произойдет автоматически, но на всякий случай нужно вскрыть крышку программатора и убедится что джампер (переключатель) стоит в положения «авто» либо 3.3 вольта.
Теперь разберем вкладку «Target».
1) Необходимо выбрать чип (микроконтроллер — он же процессор), для модулей Arcadia это MC9S08GB60 или MC9S08GB60A, для Electrolux это MC9S08AW60 или MC9S08AC60.
2) Далее, нужно выбрать прошивку (ВНИМАНИЕ. ПУТЬ К ПРОШИВКИ НЕ ДОЛЖЕН СОДЕРЖАТЬ РУССКИХ БУКВ), в противном случае будет выведена ошибка.
3) В поле Security выбрать переключатель Image.
4) Осталось нажать кнопку Programm Flash и дождаться конца прошивки.
Если у вас возникает ошибка F1 суб04 , при которой слышны щелчки реле двигателя, но на этом вся работа заканчивается, то необходимо включить переключатель «Clock type and parameters», после чего активируется поля Trim Freguency и NVTPIM Address, их значения нужно оставить без изменения и прошить модуль еще раз, также стоит отметить, что одной из наиболее распространенных ошибок является ошибка подбора прошивки, которую нужно подбирать по серийному номеру и продуктовому коду, написанным на стиральной машинке или той технике, которую вы программируете.
Напоследок, хотелось дать ссылку на странице, где можно купить данный программатор в хорошей комплектации Купить программатор USBDM
Всем удачи в ремонте!
ПММ Bosch SPV40E10RU, КЗ проца в индикации, нужен полный дамп mc9s08ac32
Фишку сливного насоса воткнули в силовую плату. На шильдике платы индикации: BSH 9000693404 SW 3.3 проц mc9s08ac32.
ПММ Bosch SMV53L30EU/34, Нужен дамп проца индикации MC9S08AC32,ушел в Кз
Поделитесь прошивкой https://www.cyberforum.ru/savedimages/2017/06/16/9113270768.jpg.
Нужен дамп проца модуля индикации, ПММ Bosch SMV51E30EU
Доброго времени суток. Поступила данная ПММ с неисправностью не включается, в итоге проц на модуле.
ПММ Bosch SPV40E10RU/01, дамп проца
Нужен дамп на проц r5f2136CAN, родной блок в глухом КЗ! Заранее благодарен.
ПММ Bosch E-nr SPV40E10RU/14, Нужен дамп
Доброго времени суток! Нужен дамп R5F2136CAN на ПММ Bosch E-nr SPV40E10RU/14. Модуль после 380.