Микроконтроллер относится к программируемому типу микросхем, на основе которого можно собрать схему какого либо автоматического устройства. Такое устройство может представлять собой простейшую схему с мигающим светодиодом, или автомат, выполняющий сложные вычисления и управляющий другими устройствами. Основной элемент в обоих случаях может быть одним и тем же микроконтроллером, разница будет состоять лишь в записанной в него программе.
Доступность микроконтроллеров и простота составления своих собственных программ для них, делает микроконтроллеры очень заманчивым для сборки разнообразнейших схем. Раньше, для изменения функций устройства, построенного на обычных логических микросхемах, требовалось изменять саму схему, выпаивать и впаивать детали, а теперь конструкцию на микроконтроллере обычно достаточно лишь перепрограммировать. Отчасти как раз из-за этой простоты изменения функций, микроконтроллеры быстро вытеснили устройства, построенных на множестве логических элементах.
Извлекаем файлы из прошивки с помощью Еxt4 unpacker
Программы для микроконтроллеров могут быть написанны на различных языках программирования с использованием специальных компьютерных программ. Написанная и преобразованная (откомпилированная) программа переносится в микроконтроллер с помощью программатора.
Программатором называют электронное устройство, к которому подключается микроконтроллер, а так же программатор — это компьютерная программа, управляющая процессом переноса подготовленной программы из компьютера в микроконтроллер.
Конструкцию с микроконтроллером, в который прошивается прошивка, называют целевой конструкцией или целевой схемой.
Прошивка («прожиг») — (глагол) процесс переноса программы в электронное устройство. |
Прошивка — (существительное) подготовленная программа для электронного устройства. |
Определить, какое именно значение слов «программатор» или «прошивка» употребляется, можно обычно из контекста. Далее мы убедимся, что это не так сложно.
Большинство программ-программаторов могут быть настроены для работы с разными схемами программаторов-адаптеров. Программатор-адаптер подключается к компьютеру через какой либо порт ввода-вывода. В настоящее время существуют три наиболее распространённых возможности подключения программатора к компьютеру по какому либо порту:
В течении последних лет параллельный порт принтера LPT и последовательный COM-порт были вытеснены USB-портом. Тем не менее всё ещё имеются в продаже отдельные платы расширения для LPT- и/или COM-порта. Такие карты («мультипортовки») можно дополнительно установить в уже имеюшийся компьютер, но дополнить ноутбук COM- или LPT-портом нельзя или крайне сложно.
Для непонимающих.
Рис. 1. USB-COM адаптер.
Вместе с тем практически на всех современных компьютерах и ноутбуках имеется хотя бы один USB-порт, а так же распространены недорогие адаптеры USB-COM, которые позволяют создавать на компьютере с USB-портом недостающий COM-порт.
Часто схемы программаторов для USB-порта достаточно сложны для повторения начинающими электронщиками, и нередко содержат микроконтроллер, который тоже необходимо сначала каким то образом прошить, можно посоветовать несложную схему программатора, подключаемого к компьютеру на COM-порт или на USB через адаптер USB-COM. Через существующие адаптеры USB-LPT прошить микроконтроллер не удасться, так как эти адаптеры «эмулируют» не LPT порт, а лишь управляют работой с принтером.
Нужно предупредить, что программа в микроконтроллер через USB-COM-адаптер загружается в десятки раз дольше, чем через «нормальный» COM-порт и с этим придётся мириться.
Пожалуй, большинство начинающих выбирает восьмибитные AVR-микроконтроллеры RISC архитектуры фирмы ATMEL из-за их гибкости, хорошо описанных примеров применения и невысокой цены. Эти микроконтроллеры, как и множество других, могут быть запрограммированны через ISP-интерфейс.
ISP (In System Programming) – интерфейс внутрисхемного программирования, позволяет программировать контроллер не отсоединяя от остальной схемы. |
ISP-интерфейс состоит из пяти проводников: MOSI, MISO, SCK, RESET и GND. Подключение ISP-программатора позволяет программировать микроконтроллеры, (в большинстве случаев) не извлекая сам микроконтроллер из схемы.
Среди радиолюбителей распространнено много схем-программаторов для последовательного COM-порта. Многие из них собраны на нескольких транзисторах и стабилитронах, и даже на нескольких резисторах. Достоинством таких схем является их простота, но они имеют и важный недостаток.
Дело в том, что стандат RS-232 допускает отклонения уровней напряжения на выводах COM-порта, причём эти отклонения у разных производителей компьютеров могут сильно меняться, всё же оставаясь при этом в разрешённых пределах. Поэтому такая простая схема, работающая на одном компьютере, может работать с перебоями на другом или не работать совсем. Очень неудобно и то, что программатор, собранный по простейшей схеме, необходимо каждый раз подключать и отключать от целевой конструкции на время сеанса прошивки.
Вышеперечисленных недостатков лишина схема на Рис. 2. Это программатор для последовательного COM-порта всего на двух распространённых микросхемах: микросхемы RS232-драйвера MAX232 (или аналога) и логической микросхемы 74LS240 (отечественный аналог К555АП3).
Микросхема MAX232 представляет собой широкораспространённый четырёхканальный драйвер (преобразователь уровня) интерфейса RS-232 (примерно от минус 12 до плюс 12 вольт) к уровням CMOS/TTL (уровень 5-вольтовой логики). Микросхема 74LS240 является сдвоенным инвертирующим буфером четырёх линий с разрешением выхода.
Рис. 2. Схема myPROGGER.
Программатор, собранный по этой схеме обладает следующими достоинствами:
- благодаря MAX232 происходит гарантированное преобразование уровней сигналов
- программатор не требуется отключать от схемы после прошивки
- в схему программатора можно легко внести модификации, которые будут полезными в дальнейшем
- эту схему можно использовать как при работе через COM-порт, так и через переходник USB-COM
- с этой схемой работают многие программы-программаторы (например, avrdude и PonyProg200).
Для начинающих электронщиков эта схема может показаться сложной, но с этим мы постараемся справиться в следующей части статьи.
Смелых и Удачных Экспериментов.
Дополнения и файлы:
- URL: Обсудить статью на форуме myROBOT
- URL: Последовательный интерфейс RS-232
- URL: Обзор стандарта RS-232
- PDF: Описание микросхемы MAX232
- VIDEO: Особенности внутрисхемного программирования
Размещение этой статьи на других сайтах как полностью, так и частично разрешено только после согласования с администрацией myROBOT.RU |
Источник: myrobot.ru
Ремонт ТВ приставки. Прошивка FLASH с помощью Ардуинки.
Сегодня на ремонте очередная ТВ приставка — DV3 T8000 . Жалобы на «пациента» зависает на включении, на пульт не реагирует. Вот фото приставки. Внутрянка один в один как моей предыдущей статьи про ремонт такого же прибора. Вот тут можно посмотреть.
Внешний вид приставки
Начинаем диагностику. Вскрываем аппарат, начинаем промер напряжений. На выходе БП — 5 В. На стабилизаторе — 1,8 В. На DC преобразователях 1,18 В и 3,3 В. На всякий случай выпаял конденсаторы и проверил тестером — живые.
Внутренности приставки
Начинаем изучать тематические ресурсы на предмет похожих симптомов и находим на нашем любимом канале от Михаила «Лайфхаки по ремонту электроники».
Приставка OPENBOX T8000 зависла Ремонт-эксперимент
Лайфхаки по ремонту электроники 30 сентября 2022
Ага! Попробуем прошить FLASH! Но есть небольшое НО — я такого раньше не делал) Ну, как говориться, руки боятся, но все равно тянуться к пальнику) Номер шасси GX6701_R7_V1.8. Это по наклейке. На ней написана актуальная информация по версии прошивки.
Из указанной выше статьи взял прошивку на свой аппарат, так как шасси одно и то же, на тех же комплектующих. Микросхема памяти P25Q32SH .
Микросхема FLASH памяти P25Q32SH
Встал вопрос — чем прошить? Программатора у меня нет, а ждать из Китая месяц, другой не хочется. Тут на помощь приходит плата Ардуино нано, в лице контроллера Atmega 328 и распаянного на плате USB-TTL преобразователя CH341. Короче говоря будем гонять плату как простой внутрисхемный программатор.
Вот подробная статья на Пикабу. Там есть исходники программы для контроллера и сама программа прошивальщик. Там все рабочее, я проверил.
«Программатор» 2425 флешек на ардуино.
Чтобы подключить нашу микросхему ей пришлось приделать «ноги». Получился маленький паук.
Превращаем SOP-8 в DIP-8
Подключаем по следующей схеме.
Схема подключения Ардуино mini к микросхеме памяти
Картинка не очень крупная, но суть такая — подключаем МК-FLASH таким макаром: MISO-DO(SO), MOSI-DI (DI), SCLK-CLK, D2-CS. Питание берем 3,3 В и GND. Остальные выводы микросхемы вешаем на 3,3 В. Обратите внимание, что на схеме нарисована Ардуино-мини, но можно использовать любую, главное чтобы был контроллер 328. Пробовал загрузить в 168 — не влезла.
Запускаем программу прошивальщик. На экране вводиться то что считалось из микросхемы. Похоже не все так плохо. Теперь загружаем прошивку. Процесс идет ну очень не быстро. Ждал минут 5 пока прошивка не загрузиться.
По итогам программа выдала, что все ок.
Теперь возвращаем микросхемы на место. Пробуем включить. Барабанная дробь. приставка включилась. Пульт мне не принесли, поэтому тыкал кнопками на приставке. По меню переходит, ничего не зависает. Антенну увез в дом, проверить поиск каналов пока нет возможности.
Завтра попробую отыскать для проверки.
Источник: dzen.ru
Распаковка, редактирование и упаковка прошивок видеорегистраторов и IP камер от Xiong Mai
Не так давно приобрёл на Aliexpress IP камеру (чип Hi3516 платформа 53H20L) и 16-канальный гибридный видеорегистратор (чип Hi3521 платформа MBD6508E). Оба выполнены на чипсете от HiSilicon, так что проблем с совместимостью между собой не испытывают.
Разумеется, не обошлось и без глюков. Первый, и самый главный — у камеры криво работал WiFi — нельзя было подключиться к сети, если ключ был задан в HEX виде, а также периодически возникала проблема со шлюзом по умолчанию.
Прошивка оказалась старая, ещё июньская. Раздобыл несколько свежих прошивок и попробовал. Некоторые оказались глючными, но одна заработала нормально.
Возникла другая проблема — изменился пароль по умолчанию для telnet подключения. Этого я не стерпел и стал искать способы вернуть его обратно.
Сразу предупрежу, что данный способ опробован на видеорегистраторах и камерах на чипах HiSilicon, но должен сработать и с другой платформой, так как китайцы широко используют загрузчик U-boot.
Распаковка
Инструкция по распаковке довольно подробно расписана в этой статье, но вот процесс упаковки нигде не описан, что и побудило меня написать этот пост.
Расписываю по шагам, чтобы ничего не упустить:
Ставим Linux, я выбрал ubuntu.
Проверяем тип файла прошивки:
Распаковываем:
Смотрим содержимое Install:
InstallDesc:
«UpgradeCommand» : [ < «Command» : «Burn», «FileName» : «u-boot-all.bin.img» >, < «Command» : «Burn», «FileName» : «custom-x.cramfs.img» >, < «Command» : «Burn», «FileName» : «romfs-x.cramfs.img» >, < «Command» : «Burn», «FileName» : «user-x.cramfs.img» >, < «Command» : «Burn», «FileName» : «web-x.cramfs.img» >, < «Command» : «Burn», «FileName» : «logo-x.cramfs.img» >], «Hardware» : «53H20L», «Vendor» : «General» >
Слово u-boot-all наводит на мысль, что файлы img являются образами загрузчика U-boot, поэтому ставим соответствующий пакет:
Смотрим, что за файлы у нас были в архиве:
Прошу обратить внимание на два параметра Load Address и Entry Point. Я при первой сборке забыл их указать, они по умолчанию стали нулями, а это адрес загрузчика, который оказался затёрт после прошивки! Из-за этого я потратил лишний час на восстановление — пришлось снимать с улицы камеру, разбирать, и восстанавливать прошивку на программаторе. (Хотя камеру разбирал всё же не зря — добавил в кожух пакетик силикагеля, чтобы убрать возможную влагу из воздуха.)
Теперь небольшое пояснение: образ .img из данной прошивки является несколько изменённым образом файловой системы cramfs. Вот тут можно почитать поподробнее. Чтобы привести образ к нормальному виду, нужно отрезать 64 байта заголовка.
Для остальных файлов команды аналогичные.
Смотрим, что получилось:
Уже похоже на cramfs. Для работы с образами cramfs установим или обновим соответствующий пакет:
Распаковываем образы:
Каталоги я не создаю, они создадутся автоматически.
Загрузчик так не распаковать, это не образ cramfs, но его и не надо трогать.
Что внутри
- InstallDesc — описывает действия, которые нужно произвести с этими файлами при обновлении прошивки, install-скрипт.
- logo-x.cramfs.img — картинка в формате 800×600 с логотипом изготовителя, которая появляется при загрузке аппарата.
- romfs-x.cramfs.img — собственно сама операционная система linux под архитектуру ARM
- u-boot-all.bin.img — загрузчик U-boot
- custom-x.cramfs.img — содержит наименование платформы и дополнительные настройки
- user-x.cramfs.img — прикладной софт, в том числе Sofia — сама программа видеорегистратора
- web-x.cramfs.img — картинки веб-интерфейса, web.cab — плагин для Internet Explorer с локализацией, логотипы производителя.
root:$1$RYIwEiRA$d5iRRVQ5ZeRTrJwGjRy.B0:0:0:root:/:/bin/sh
Я же просто сгенерил новый хеш на сайте и поменял его в файле.
Собираем обратно
После сделанных изменений нужно всё запаковать обратно:
Помните, я заострял внимание на значениях Load Address и Entry Point? Самое время о них вспомнить и добавить в команду.
Создаём образ U-boot:
Кстати, чтобы обновить один модуль не обязательно прошивать всю прошивку, достаточно положить только нужный, и отредактировать файлы Install и InstallDesc, оставив только нужные строчки.
Складываем полученные файлы в отдельный каталог, пусть это будет new. Даём команду:
Всё, прошивка готова. Осталось только прошить её через web-интерфейс через пункт update
Предостережение
Выполняя рекомендации из этой статьи, вы делаете на ваш страх и риск. Автор не несет ответственности за ваши действия. Допустив ошибку при модификации прошивки вы легко можете получить кирпич, который можно будет восстановить только на программаторе. Поэтому, если не уверены в своих действиях, не делайте этого.
Источник: habr.com