Как научиться программировать программатор коми блок
Перейти к содержимому

Как научиться программировать программатор коми блок

  • автор:

Прошивка ЦБКЭ (BCM) c помощью USBDM

Потребства в прошивке у всех разные, у кого то закусывает блок и авто не ставится / снимается с охраны. Кто-то обновляет по в надежде, что блок после этого не сгорит (это относится к старым блокам первых годов выпуска)
В теории можно менять привязку блока к авто (ее начали делать, начиная с 2017 года) Скоро проверю
Также допаяв не достающие элементы на плату блока нормы и прошить люксовой прошивкой можно получить полноценный люксовой блок)
Подробнее про блоки цбкэ можно
почитать / посмотреть вот Здесь turbomotor412 очень подробно все рассказал
Лично мне прошивка нужна для собственных маньяакальных ритуалов
"Но это уже совсем другая история"

До настоящего времени блок можно было прошить с помощью
1 — ДСТ-14 дилерская приблуда шьёт блок через разъём OBD2
2 — iprog и его собратья Читают / шьют блок на столе.
Оба варианта не из дешёвых
И мне не очень подходят особенно по цене
Покурив интернет было ясно что на борту нашего зверька Проц MC9S12G192 а также на плате имеется НЕраспаяный 6-ти контактный разъем (через который собственно и работает iprog)
Из это вывод что USBDM тоже должен читать/писать данный проц
Осталось только это проверить

И так для того чтобы прошить нам нужна прошивка. А где её взять?
Правильно считать с заведомо рабочего блока.

Первым делом я полез в CodeWarrior
Но в списке поддерживаемых процессоров MC9S12G192 нет, просмотрев datasheet я понял что проц очень схож с нашим любым MC9S12HY64 (стоит в приборках)
Создав проект с MC9S12HY64 мне удалось считать из MC9S12G192
Целый D-Flash и часть P-FLAH.
Карта процессора(назовём ее так) MC9S12HY64 не содержит всех нужных адресов для MC9S12G192 по этому и часть.
Я решил подлечить codewarrior, добавить недостающие адреса чтобы полностью читать MC9S12G192
Убил пару вечеров но так ничего и не удалось.
И в Один момент я вспомнил что примерно год — полтора назад RUPARADOX писал в своем блоге о правильном снятии дампа с помощью Memory Dump. Пост он почему-то удалил, но не беда я из тех кто полезную информацию сохраняет локально (целиком страницу на пк)
Следуя его инструкции, решил для начала считать прошивку с приборной панели с процессором MC9S12HY64 а потом уже приступать к MC9S12G192
Делая всё чётко по инструкции прошивка считывалась, но не вся только часть середины и эта часть повторялась только с разными адресами по совету RUPARADOX я пробовал разные варианты адресов, но нечего не менялось
Решение проблемы считывания подсказал kcctech
с "Если содержимое одно и то же, то значит не меняется страница памяти в контроллере, возможно не тот адрес регистра выбора страницы"
И тут я начал искать этот адрес регистра.
Как оказалось всё регистры для процессоров лежат под носом, а именно в папке USBDM "hcs12_devices.xml"
Ну и поставив правильный регистр, прошивка из приборки считалась целиком,
Затем я успешно считал прошивку из ЦБКЭ
По итогу
Сравнив считанный дапм и конвертированный из bin в s19 (снятый iprog, взят из интернета) идентичны, также считанный дамп и bin схожи по данным
А это означает Успех сего мероприятия)

И так с считыванием разобрались, но что же на счёт прошивки?
Да тут все намного проще
В более поздних версиях USBDM появилась поддержка проца MC9S12G192 и это значит что прошивается точно так же как и приборка)

Ну и непосредственно Гайд
1. Подготовка
1.1 На плате присутствует не распаянный разъем его можно распаять как сделал я, видно на фото, либо припаять проводочки, все в ваших руках)

1.2 Cкачиваем
Драйвера USBDM X64 X32
И сам USBDM_4_12_1_140_Win именно эту версию! (версии Выше 4_12_1_140 сохраняют дамп с длинной строки 32 символов нам же нужна длинна строки 64)
1.3 Устанавливаем
Сначала драйвера (возможно потребуется отключение проверки подлинности драйверов на win 8 — 10 у меня лично без отключения все отлично работает)
Затем устанавливаем usbdm пакет, все по дефолту
1.4 Подключаемся
Согласно схеме подключаем USBDM программатор к приборке

Ставим перемычку на 3.3в
Подключаем программатор к компу
2. Проверка
Если мы все сделали правильно то должны гореть все 3 светодиода и можно приступать к считыванию /прошивке

Если не горит средний светодиод то значит драйвер не встал, или встал криво. отключаем проверку подлинности драйверов и переустанавливаем драйвер пробуем снова)

Запускаем Memory Dump (находится в меню пуск)

1. Выбираем HCS12
2. Нажимаем Detect должен определиться наш программатор (если не определился, возвращайтесь драйверам)
3. Выбираем параметр Page и вписываем значения регистра "15"
4. Прописываем адреса
Внимательно! без пробелов!
D-FLASH
400 — 13FF

P-FLASH Для процессора MC9S12G192
48000 — 4BFFF
58000 — 5BFFF
68000 — 6BFFF
78000 — 7BFFF
88000 — 8BFFF
98000 — 9BFFF
A8000 — ABFFF
B8000 — BBFFF
C8000 — CBFFF
D8000 — DBFFF
E8000 — EBFFF
F8000 — FBFFF
P-FLASH Для процессора MC9S15G95
A8000 — ABFFF
B8000 — BBFFF
C8000 — CBFFF
D8000 — DBFFF
E8000 — EBFFF
F8000 — FBFFF
Внимательно! без пробелов!
5. Ставим галочку чтобы не пропускались пустые строки !
6. Читаем прошивку
7. Сохраняем прошивку

На этом со чтением все! если возникают ошибки, прежде чем писать еще раз внимательно все проверьте!
Да и не пугайтесь что прошивка ЦБКЭ в начале пустая, это нормально! данные начинаются с середины.

Прошивка
Запускаем HCS12 Programmer (находится в меню пуск)
1. Вкладка interface ставим галочки, Нажимаем Detect должен определиться наш программатор (если не определился, возвращайтесь драйверам)

2. Вкладка Advanced ставим галочку и обязательно ОБЯЗАТЕЛЬНО Меняем E на F (можно приложить блок, восстанавливать потом через CodeWarrior с большим бубном

3.Вкладка Target
1. Жмем Detect Chip, определяется проц MC9S12G192 (если не определился, возвращайтесь драйверам, или проверьте соединение )
2. Выбираем файл прошивки
3. В списке выбираем EraseMass — прошивка с полной очисткой (можно прошить только P-FLASH тогда выбираем EraseSelective)
4. Прошиваем, В конце прошивки выскочит окно об успешной прошивке, и предложением прошить еще одно устройство, жмем НЕТ

Точно также можно читать и шить приборные панели, естественно по другим адресам)
Ну и в заключении
Особая благодарность txsmp который подогнал подопытного ( над которым будет еще много экспериментов)
Большое спасибо RUPARADOX kcctech за подсказки и turbomotor412 за отличную инфу по блокам ЦБКЭ

>>>>> Папка с прошивками <<<<<
Список постепенно будет обновляться
Если у вас есть прошивки которых нет в папке, присылайте обязательно добавлю ( в любом формате)

Как я научился работать с микроконтроллерами — опыт новичка

Всем привет. В этой статье хотел рассказать о том, как я научился работать с микроконтроллерами
(далее по тексту — МК) и на какие подводные камни налетел. Сразу скажу — статья не претендует на эксклюзивность, так как любой человек работающий с МК проходил через то, что прошёл я. Прошу строго не судить, а прочитать как историю.

Вместо вступления

Впервые интерес к МК у меня возник, когда я учился в 10 классе. На тот момент был 2009 год. Я умел немного программировать на ПК в QBasic и Visual Basic — школьная программа, но так сложилась жизнь, что я особо не разбирался в программировании, да и отсутствие знающих людей по части электроники и МК рядом сделали своё дело — для меня это была новая ниша. Хотя я с детства ковырялся с платами и микросхемами найденными на помойках, но как оно работало я толком не понимал — толком никто не мог объяснить. Как работает транзистор нормально я узнал только спустя пару лет после описанных событий. Когда я выбирал первый МК то смотрел характеристики на сайте ЧИП-ДИП. Скажу честно — для меня это было как иероглифы. Так что не стоит этого бояться. И да, про Arduino тогда никто понятия не имел.

Как всё началось

Начал ковыряться в яндексах и гуглах. Понимал, что сам контроллер — половина дела, нужна ещё и программа. А как сказано во вступлении — с программированием у меня было не очень. В конце концов попал на какой-то сайт. Как стало позднее ясно, я с этим сайтом реально «попал». Создатель сайта написал ещё и учебник по программированию, я на радостях скачал учебник и первое что там увидел — «В качестве образца для работы я использовал PIC16F84A ». Собственно так я и выбрал свой первый МК. Теперь вопрос — почему я именно «попал». А попал я из-за того, что создатель этого учебника и сайта предлагал программировать МК на АССЕМБЛЕРЕ. Его не все практикующие проггеры то знают, а тут новичок… Контроллер я уже заказал, и только потом начал читать учебник, к сожалению.

Как я выходил из положения

После того, как я понял, что ничего не понял, я забросил МК на пару лет, но параллельно всё-таки шарился на форумах типа Схем.нет и прочих, и ко мне постепенно приходило понимание вопроса. Решил учиться кстати на модели PIC16F877A.

Итак, что нужно знать новичку:

Микроконтроллер — это маленький компьютер, в нём есть и Арифметико-логическое устройство — процессор по сути дела, и оперативная память и некое подобие жесткого диска — память программ и данных, но выполнено это всё в одной микросхеме. Соответственно в зависимости от модели и производителя у него следующие характеристики (ориентировочно):

    Рабочие частоты от единиц до

Языки программирования

Начал выбирать язык программирования и среду в которой можно программировать. Так как я хоть как-то знал Basic, то и задумался, что было бы хорошо прогать на нём. Да, он не очень совершенный и ещё куча недостатков, но для начала подходил как нельзя кстати. Мне повезло, оказалось, что есть язык PIC-Basic. По нему есть учебник, автор Чак Хелибайк и переведённое на русский руководство, собственно до всего доходил дальше по учебнику и руководству. Среда работает из-под ДОС, но можно прикрутить CodeStudio и всё будет работать из-под Windows.

Программатор

Следующая проблема, стоявшая у меня на пути — чем записать программу в чип. Понятное дело, что нужен программатор, я решил экономить, попробовал собрать несколько схем из этих ваших интернетов. Одной схемы недостаточно, нужна ещё программа которая используя программатор (саму железку) занесёт код в память. Все мои опыты окончились неудачами, по причине малого опыта. Решил я больше не смотреть на то, как от чипов идёт дым и заказал PICKit3, после этого не знал проблем, поигрался пару дней с ним и всё заработало.

Что нужно знать новичку:

  • В настоящее время есть адаптированные языки программирования для МК, тот же Бэйсик, СИ и прочие.
  • После написания программы она компилируется в машинный код — файлик с расширением HEX, его-то и надо прошивать в память МК.
  • Для того, чтобы «прошить МК» — записать в него выполняемый код нужно две вещи:

Несколько слов про периферию

Для связи с внешним миром и удобства работы и разработки в МК встраивают различные периферийные схемы, например АЦП — аналогово-цифровой преобразователь, так что можно без лишней обвязки измерять напряжение подаваемое на вывод МК, но оно должно быть не выше чем напряжение питания, иначе чип сгорит. Используя делитель напряжения можно сделать вольтметр, например. Периферия, количество встроенных функций и их характеристики тоже зависят от модели, как правило чем дороже модель — тем богаче комплектация. Так же следует не забывать, что у контроллера ограниченное число ножек, к которым можно подключиться.

Например у PIC16F877А их 40 штук, причем 7 штук вылетают сразу, т.к. используются для подачи питания, подключения резонатора и управления аварийным сбросом. Так же надо внимательно смотреть документацию на чип. Например тот же АЦП — в PIC16F877А он может измерять напряжение только на 8 конкретных ножках чипа, на других он это делать не может. То есть под каждую встроенную функцию отводятся конкретные выводы и поменять их нельзя.

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Если вы, как и я, используете в своих конструкциях как микроконтроллеры PIC, так и чипы AVR, было бы удобно для программирования обеих линеек микросхем использовать один и тот же программатор. Кстати, не так давно Microchip приобрела компанию Atmel и фактически сейчас обе линейки выпускаются одной и той же компанией. Посему можно предположить окончание многолетнего холивара на тему что же лучше. Оба типа контроллеров имеют свои недостатки и преимущества, но это тема для другой статьи или видеоролика.

Случилось так что когда-то давно я, как и многие другие, начал знакомство с миром микроконтроллеров с какой-то конструкции на микроконтроллере PIC16F84. Через много лет я купил свой первый фабричный программатор для контроллеров PIC. Это был фирменный (оригинальный) PicKit2, который я привез с международной конференции Microchip, которая проходила в Питере в 2009 году.

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Купил я его тогда на конференции с хорошей скидкой в 50 процентов. Сейчас можно купить клон такого программатора на Алиэкспресс очень дешево и он будет работать не хуже оригинального. Или, в крайнем случае сделать клон программатора самому, например как описано в этой статье.

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Нужно сказать, что программатор PicKit2 уже не поддерживается компанией Microchip (в плане обновления прошивки или управляющей программы) но это не мешает ему отлично работать и по сей день. Сейчас Microchip продвигает более новую версию — PicKit3, который внешне выглядит почти также как и вторая версия. С третьим я пока не имел дела, для моих задач мне вполне хватает второго.

Обычно если мне нужно запрограммировать микроконтроллер Pic я использую программатор PicKit2 с его родной программой PicKit2.61, а если я хочу прошить, например, контроллер ATMega16, то делаю это через программатор USBAsp который можно купить в Китае за полтора доллара.

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Однако сейчас появилась возможность использовать для прошивки как PIC так и AVR один программатор — Microchip PicKit2 или его клон, с использованием Бесплатной программы AVRDude, которая сейчас поддерживает PicKit2. Несмотря на то, что AVRDude — это консольное приложение и в чистом виде требует от пользователя навыков работы с командной строкой, но сейчас есть очень хорошая программа — оболочка для AVRDude, которая называется AVRDUDESHELL и позволяет очень удобно работать с AVRDude, не заморачиваясь с командной строкой. Фактически, работая в AVRDUDESHELL вы можете вообще не знать о существовании AVRDude. Скачать программу AVRDUDESHELL можно здесь. Сама AVRDude уже входит в состав AVRDUDESHELL и отдельно ее устанавливать не нужно.

Программатор PicKit2 имеет шести контактный разъем. Для программирования микроконтроллеров PIC используются первые пять контактов. Шестой — дополнительный, при программировании пиков он не задействован.

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Разъем программирования PicKit2

VPP / MCLR
VDD напряжение питания целевого устройства
VSS земля
ICSPDAT / PGD
ICSPCLK / PGC
AUX

Для программирования контроллеров AVR нам потребуется сделать специальный шлейф и использовать все шесть контактов PicKit2. Шлейф делаем в соответствии с таблицей ниже:

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Шлейф может выглядеть например так:

Программирование микроконтроллеров AVR через программатор Microchip PicKit2

Для работы подключаем PicKit2, шлейфом соединяем его с программируемым устройством (или адаптером микроконтроллера с Zif панелькой), Запускаем AVRDUDESHELL и выбираем в списке программаторов нужный нам PicKit2. Загружаем файл прошивки и программируем контроллер. Всё предельно просто.

Возможно вам потребуется USB драйвер программатора PicKit2. ВЫ можете скачать его по это ссылке. Он входит в состав родной программы Microchip PicKit2 V2.61. На сайте Microchip вы ее уже не найдете, но можете скачать здесь (см. ниже). Эта небольшая программка пригодится вам и для прошивки контроллеров PIC.

Что нужно для программирования микроконтроллеров?

Программирование микроконтроллеров Курсы

Теперь, когда мы уже ознакомлены с некоторыми возможностями и функциями микроконтроллеров, естественно, возникает логичный вопрос: что нужно для программирования микроконтроллеров? Какие необходимы программы и устройства, где их взять?

Программирование микроконтроллеров AVR

Для того чтобы микроконтроллер мог решать задачи и выполнять определенные функции, его нужно запрограммировать, т. е. записать в него программу или же код программы.

Структура и порядок написания программы

Первым делом, прежде чем приступить к написанию любой программы, а точнее кода программы, следует четко представлять, какие функции будет выполнять микроконтроллер. Поэтому сначала нужно определить конечную цель программы. Когда она определена и полностью понятна, тогда составляется алгоритм работы программы. Алгоритм – это последовательность выполнения команд. Применение алгоритмов позволяет более четко структурировать процесс написания кода, а при написании сложных программ часто позволяет сократить время, затрачиваемое на их разработку и отладку.

Следующим этапом после составления алгоритма является непосредственное написание кода программы. Программы для микроконтроллеров пишутся на языке Си или Ассемблере. Только Ассемблер больше относится к набору инструкций, нежели к языку программирования и является языком низкого уровня.

Языки программирования микроконтроллеров: Си и Ассемблер

Мы будем писать программы на Си, который относится к языку высокого уровня. Программы на Си пишутся гораздо быстрее по сравнению с аналогичными на Ассемблере. К тому же все сложные программы пишутся преимущественно на Си.

Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.

Сам код программы можно писать в любом стандартном текстовом редакторе, например в Блокноте. Однако на практике пользуются более удобными редакторами, о которых будет сказано далее.

Компиляция программы

Написанный нами код на Си еще вовсе не понятен микроконтроллеру, поскольку МК понимает команды только в двоичной (или шестнадцатеричной) системе, которая представляет собой набор нулей и единиц. Поэтому Си-шный код нужно преобразовать в нули и единицы. Для этого применяется специальная программа, называемая компилятор, а сам процесс преобразования кода называется компиляция.

Далее откомпилированный готовый код нужно поместить в микроконтроллер, а точнее записать его в память микроконтроллера или, проще говоря, прошить микроконтроллер.

Для прошивки МК применяется устройство, называемое программатор. В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.

Программатор

Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.

Программатор USBASP

После того, как микроконтроллер прошит, выполняется отладка и тестирование программы на реальном устройстве или, как еще говорят, на «железе».

Теперь давайте подытожим этапы программирования микроконтроллеров.

Что нужно для программирования микроконтроллеров

При написании простых программ можно обойтись без второго пункта, т. е. без составления алгоритма на бумаге, его достаточно держать в голове.

Следует заметить, что отладку и тестирование программы также выполняют до прошивки МК.

Необходимый набор программ

Существует множество полезных и удобных программ для программирования МК. Они бывают как платные, так и бесплатные. Среди них можно выделить три основных:

Все эти программы относятся к IDEIntegrated Development Environment – интегрированная среда разработки. В них можно писать код, компилировать и отлаживать его.

Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.

На начальном этапе программирования все программы лучше прописывать вручную, без каких-либо упрощений. Это поможет быстро приобрести необходимые навыки, а в дальнейшем хорошо понимать и редактировать под свои нужды коды, написанные кем-то другим. Поэтому я рекомендую использовать программу Atmel Studio. Во-первых, она абсолютно бесплатна и постоянно обновляется, а во-вторых она разработана компанией, изготавливающей микроконтроллеры на которых мы будем учиться программировать.

Прошивка и отладка программы

Прошивать микроконтроллеры мы будем с помощью дополнительной программы AVRDUDE .

Если микроконтроллера в наличии нет, то его работу можно эмитировать с помощью программы Proteus. Она значительно упрощает процесс отладки программы даже при наличии МК, чтобы его часто не перепрошивать, ведь любой МК имеет конечное число перезаписей, хотя это число и достаточно большое.

При прошивке и отладке МК его удобно располагать на макетной плате, но это вовсе не обязательно. Поэтому для большего удобства пригодится и макетная плата. Существует большой выбор макетных плат, однако я вам рекомендую брать ту, которая имеет по возможности большее число отверстий. Когда мы начнем подключать семисегментные индикаторы, вы оцените преимущества «больших» макетных плат.

Еще один важный элемент, который нам пригодится – это техническая документация на МК, называемая datasheet. В общем, нужно скачать datasheet на микроконтроллер ATmega8.

Итак, полный набор для программирования МК состоит из таких элементов:

2) Datasheet на ATmega8

5) Программатор USB ASP (+ драйвер на него)

6) Макетная плата

7) Микроконтроллер ATmega8

Если микроконтроллера нет в наличии, не стоит откладывать изучение микроконтроллеров на потом, достаточно скачать и установить:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *