Прошивка мк. Прошиваем AVR вручную

Этим постом я хочу начинать публикацию цикла, в которой подробнейшим образом будут, рассматриваться основные приемы разработки, прошивки и наладки устройств на микроконтроллерах. Посты будут полезны и тем, кто собирается лишь повторять готовые устройства не заморачивая себя их разработкой и отладкой. Мы (я и администрация сайта) надеемся, что публикации этого цикла поможет многим начинающим и не очень радиолюбителям приступить к разработке и (или) повторению аппаратуры на микроконтроллерной базе. В этой статье будут собраны и систематизированы материалы из различных открытых источников, в том числе и всеми нами любимого журнала Радио. Мы коротко рассмотрим, что такое МК, и с чем его едят, зачем нужны компиляторы, и что за страшные звери, сидят в файлах с расширением *. HEX , *. bin , *. asm , и т.п., не много окунёмся в историю и наконец, создадим наш первый программатор SI - Prog (на мой взгляд очень простой надёжный универсальный и не заслуженно предаваемый забвению) и прошьём МК кроме, того на конкретном примере, разберёмся с программными оболочками РопуРго g 2000 и IS - Prog . И так приступим. Не для кого не секрет что, среди цифровых интегральных микросхем МК сегодня занимают примерно такое же место, как операционные усилители среди аналоговых. Это - универсальные приборы, их применение в электронных устройствах самого различного назначения постоянно расширяется. Разработкой и производством МК занимаются почти все крупные и многие средние фирмы, специализирующиеся в области полупроводниковой электроники. Перечень и основные параметры МК некоторых популярных семейств можно найти, например, в интернете.

Современные МК (их раньше называли однокристальными микро-ЭВМ) объединяют в своем корпусе мощное процессорное Ядро, запоминающие устройства для хранения выполняемой программы и данных, устройства приема входных и формирования выходных сигналов, многочисленные вспомогательные узлы. Общая тенденция современного «микроконтроллеростростроения» - уменьшение числа внешних элементов, необходимых для нормальной работы. На кристалле микросхемы размещают не только компараторы, аналого-цифровые и цифроаналоговые преобразователи, но и всевозможные нагрузочные и "подтягивающие” резисторы, цепи сброса.

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

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

Между тем процессы разработки программы для МК и обычной принципиальной схемы цифрового устройства во многом схожи. В обоих случаях "здание" нужной формы строят из элементарных "кирпичей”. Просто "кирпичи" разные: в первом случае - набор логических элементов, во втором - набор команд микроконтроллера.

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

Еще одна трудность - недостаточное количество полноценной технической документации и справочной литературы на русском языке. Большинство публикаций подобного рода в периодических изданиях и особенно в русскоязычном Интернете, зачастую не более чем подстрочные переводы английских оригиналов. Причем переводчики, иногда мало знакомые с предметом и терминологией, истолковывают "темные” места по-своему, и они (места) оказываются довольно далекими от истины. Практически отсутствуют русскоязычные программные средства разработки и отладки программ МК.

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

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

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

Еще недавно, приступая к проектированию конструкции на МК, разработчик стоял перед проблемой: можно ли решить поставленную задачу, используя приборы одного-двух известных ему типов. Сегодня ситуация изменилась в корне. Из множества доступных МК следует выбрать тот, с помощью которого задача будет решена оптимальным образом. К сожалению, так поступают далеко не все. Возникла даже определенная "мода" на изделия тех или иных типов, образуются своеобразные группировки сторонников МК определенных семейств. Свой выбор они обосновывают, как правило, на уровне "нравится - не нравится”. Нередко отрицательное мнение о каком-либо приборе объясняется единственной неудачной попыткой его применения, зачастую без попытки анализа и устранения причин неудачи. Некоторые фирмы распространяют документы под названием "Правда о...” с "объективным" сравнением своих приборов с изделиями конкурентов, и, как правило, в пользу первых. Особо доверять подобным публикациям не стоит, всегда найдется отчет о сравнении с обратными результатами и выводами.

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

Если речь идет о замене МК близким по структуре и принадлежащим к тому же семейству или о замене устаревшего изделия современным аналогом, адаптировать программу, как правило, удается. Фирма Microchip и ATMEL даже включает в справочные данные своих МК рекомендации по такой адаптации. В общем случае полноценный перенос программы на другой МК требует наличия не только публикуемой обычно "прошивки" РПЗУ, а и полного исходного текста, желательно с комментариями программиста. Листинг, полученный в результате дизассемблирования "прошивки",далеко не полноценный эквивалент. От программиста потребуется значительно более высокая квалификация, чем достаточная для разработки "с нуля", не меньшими будут и трудозатраты.

Начинать самостоятельную разработку устройства на МК и, естественно, программы для него рекомендуется с проработки и составления блок-схемы алгоритма его работы. Только по результатам этого этапа можно сделать правильный выбор МК..

Наш дальнейший рассказ построим на конкретном примере. Как то недавно потребовался счетчик, способный подсчитывать пересечения неким предметом определенного рубежа в одну и другую стороны. Полистав номера журнала "Радио”, нашел подходящее устройство, но оно показалось слишком сложным (11 микросхем, в том числе РПЗУ большого объема) и к тому же не обладало некоторыми необходимыми функциями, в частности, возможностью предварительной установки показаний счетчика и запоминания его состояния после выключения питания. Появилась идея изготовить нужный прибор на МК. По причинам, изложенным далее, был выбран МК PIC16F84 (PIC16F84А). В результате родилась схема устройства (рис. 1 ),


содержащего всего две микросхемы. В устройстве допустимо применение микроконтроллера PIC16F84 и PIC16F84 A с любыми предельной частотой, типом корпуса и рабочим интервалом температур (об этих параметрах говорят цифровые и буквенные индексы после дефиса в обозначении микросхемы, например, -101/Р). А если совершенствование программы не предполагается, можно использовать и дешевый однократно программируемый аналог PIC16CR84 если конечно его удастся найти.

Датчики перемещения предмета - транзисторные оптроны с открытым каналом АОТ147Б (U1, U2). Нагрузкой их фототранзисторов служат имеющиеся в МК внутренние резисторы. Допустимо использовать и оптопары, состоящие из отдельных свето и фотодиодов (фототранзисторов). Оптические датчики при необходимости заменяют любыми другими: магнитными, контактными, индуктивными. Важно лишь, чтобы при их срабатывании на соответствующих входах МК изменялись логические уровни.

В устройстве применен четырехразрядный семи сегментный светодиодный индикатор СА56-11SR фирмы Kingbright. Возможно также использование любых семи сегментных светодиодных индикаторов с общим анодом, например, четырех отечественных АЛС324Б. Набор резисторов DR1 можно заменить семью обычными резисторами сопротивлением 300 Ом. Программа, которую необходимо занести в память МК DD2, чтобы превратить устройство в счетчик, приведена в табл. 1. При включении питания во всех разрядах индикатора зажигаются нули. После каждого выполнения цикла "затенен U1" - "затенены U1 и U2" - "не затенен U1” - "не затенен U2" показания увеличиваются на единицу. Счетчик реверсивный, поэтому при срабатывании датчиков в обратном порядке показания на столько же уменьшаются. Максимальное число - 9999, после него следует ноль.

В следующей статье цикла будет о рассказано о том, как создавалась и отлаживалась схема и программа счетчика, об её совершенствовании и введении дополнительных функций. Этим примером будут проиллюстрированы основные возможности МК PIC16F84 и приемы работы с бесплатными средствами программирования и отладки. Они объединены в пакет MPLAB, последнюю версию которого можно "скачать" с Интернет-сайтов www.microchip.com или www.microchip.ru. Или со станицы форума АЛЕКСАНДРА там же подробно описано как его установить.

Для того чтобы занести коды из табл. 1 во внутреннюю память МК, необходим программатор. Однако он не "умеет" читать коды с интернет страниц, поэтому прежде всего требуется создать в компьютере файл с этими кодами в формате, "понятном" программатору. В табл. 1 они приведены в так называемом НЕХ-формате, разработанном фирмой Intel и ставшем фактическим стандартом для программирования ПЗУ различного назначения. (Нужно сказать, что других одноименных форматов, например, Microchip HEX, не существует, используются подобные названия лишь по недоразумению). Аналогичные форматы, разработанные другими фирмами, не нашли широкого применения и предназначены, как правило, лишь для аппаратных и программных средств собственной разработки, в большинстве своем "понимающих" и Intel НЕХ-формат.

Коды вводят в компьютер с помощью любого текстового редактора, в том числе Microsoft Word, точно в том виде, в котором они приведены в табл. 1 .


Если имеется сканер и программа распознавания текста, например, FineReader, можно воспользоваться ими. Но в последнем случае считанные данные придется сверить с оригиналом, так как автоматическое распознавание не идеально (возможны ошибки). Учтите, что в НЕХ файлах применяются только символ двоеточия, цифры и латинские буквы A - F. Каждую строку начинают двоеточием в первой позиции и заканчивают нажатием на клавишу ENTER. Пробелы не допускаются. Закончив ввод и проверив коды, сохраните файл в режиме" Текст DOS" или "Только текст”, присвоив ему любое имя с расширением *.hex.

Нередко коды программ публикуют в виде так называемого "дампа памяти". Это более удобная для зрительного восприятия (чем в НЕХ-формате) таблица. Она состоит из строк, начинающихся шестнадцатеричным адресом (обычно четырехразрядным), за которым через пробелы следуют двухразрядные шестнадцатеричные коды, хранящиеся в следующих одна за другой ячейках (байтах) памяти. Адрес в начале строки относится к первой из ячеек, а всего их обычно 16. Для сравнения в табл. 2 приведен дамп, содержащий те же данные, что и табл. 1 . HEX и дамп легко преобразовать один в другой следующим образом (см. табл. 3 ).

Первые два знака после двоеточия - число байт информации в строке. В данном случае их 16 (10 H ). Далее следует адрес первого байта (0020Н), за ним - двухразрядный код назначения строки:

0 - строка содержит данные;

1 - завершающая строка файла (:00000001 FF); она не содержит данных, число байт и адрес в ней - нулевые. Во многих случаях для опознания строки как завершающей достаточно нулевого числа байт;

2 - в области данных находится адрес сегмента памяти, относительно начала которого, отсчитывают адреса, задаваемые в следующих строках. Следует помнить, что два байта адреса сегмента следуют в порядке старший - младший. Число, которое необходимо прибавлять к текущим адресам, получают сдвигом двоичного кода адреса сегмента на четыре двоичных разряда влево, т. е. умножением его на 16;

3 - в области данных находятся четыре байта стартового адреса программы в обычном для IBM PC формате CS:IP;

4 - в области данных находятся (в порядке от старшего к младшему) четыре байта абсолютного адреса, значение которого без всяких преобразований следует прибавлять к адресам, указанным в следующих строках;

5 - то же, что 04, но задает абсолютное значение адреса старта программы.

Строки с кодами назначения 02 и 04 используют, если необходимо задать адреса, превышающие 0FFFFH. Для программирования МК с памятью небольшого объема (таких, как PIC16F84) в них нет необходимости. Тем не менее, иногда подобную строку, задающую нулевой начальный адрес, помещают в начало НЕХ-файла. Ее можно безболезненно удалить.

Строки с кодами 03 и 05 встречаются весьма редко, поскольку адрес старта программы МК чаще всего определяется архитектурой последнего и не может быть изменен. У МК семейства PICmicro он нулевой.

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

Первоначально НЕХ-формат предназначался для хранения восьмиразрядных данных. Коды большей разрядности разбивают на соответствующее число байтов, которые записывают в файл в порядке от младшего к старшему. Например, каждой из 14-разрядных команд МК ИС16F84 отводят по два байта, причем два старших двоичных разряда второго байта остаются свободными (код в этом байте не превышает 3FH).

В результате адреса в НЕХ-файле удвоены по сравнению с действительными адресами команд программы. Например, строка

:080008008C0003088D000408C0 описывает такую последовательность программных кодов;

Адрес Код

4 008С

5 0803

6 008D

7 0804

Некоторые программные средства (как правило, ведущие свою родословную не от IBM-совместимых компьютеров) записывают в файл и воспринимают байты данных в обратном порядке - старший, за ним младший. На это стоит обратить внимание, если программатор "капризничает”, не желая правильно читать файл.

Описанный формат представления многоразрядных данных часто называют Merged (склеенный). Изредка встречается другой вариант: НЕХ-файл разбивают на два, один из которых содержит все младшие, а второй - все старшие байты слов программы. Такой формат называют Splitted (расщепленный).

Следует учесть, что файл может не задавать сплошной последовательности кодов. Например, между кодами в первых двух строках табл. 1 остается незаполненным промежуток в шесть байт (три команды программы). Никакой информации об их содержимом НЕХ-формат не дает. В зависимости от алгоритма работы программатора они остаются в незапрограммированном исходном состоянии или в них сохраняются коды, записанные ранее. В табл. 2 неиспользованные ячейки заполнены нулевыми кодами.

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

программировании приходится вручную указывать, куда именно ее записать. Но в семействе PICmicro принято решение, позволяющее объединить все в одном НЕХ-файле. Упомянутые выше области, находящиеся для процессора МК в разных адресных пространствах, с точки зрения программатора объединены в одно. Для PIC16F84 распределение следующее (в скобках - "байтные" адреса):

0-3FFH (0-7FFH) - коды программы; у МК с памятью большего объема эта область может быть расширена до 1FFFH (3FFFH) ;

2000Н-2003Н (4000Н-4007Н) - коды идентификации;

2007Н (400ЕН, 400FH) - слово конфигурации;

2100Н-213FH (4200Н-427FH) - коды, записываемые по адресам 0-3FH EEPROM.

Несмотря на то что, организация EEPROM - восьмиразрядная, в данном случае каждому из предназначенных для него кодов в НЕХ-файле отводят по два байта, старший из которых - с нулевым содержимым

ПРОДОЛЖЕНИЕ СЛЕДУЕТ >>>>>

ВСЕ ВОПРОСЫ НА

Подготовка к прошивке

В процессе прошивки самым сложным этапом является переключение устройства в режим recovery mode, позволяющий безопасно произвести прошивку. Дальнейший шаг, который также связан с определенными сложностями, заключается в инсталляции драйвера Windows. Поэтому для проведения данного процесса потребуется компьютер с установленной операционной системой Windows. Рассмотрим процесс прошивки на основе операционной системы Windows 7.

Важный нюанс! При подключении тв-приставки к компьютеру необходимо использовать на Android-устройстве только порт USB-OTG. В случае, если на Вашем девайсе имеется только один разъем USB, его смело использовать. При наличии нескольких разъемов, необходимо использовать тот, который обозначен как OTG.

Итак, теперь необходимо перевести Androidтв-приставку в режим прошивки. Здесь предусматривается два метода:

1. Аппаратный

2. Программный

Аппаратный метод

Итак, Вы нашли технологическое отверстие в корпусе, далее следует просунуть тонкий щуп и нажать на кнопку. Если услышали типичный щелчок, то Вы достигли цели, и можете переходить непосредственно к процессу перевода мини-компьютера в режим прошивки. Здесь следует строго придерживаться следующего алгоритма:

1. USB-кабель вставить в разъем USB-OTG на приставке

2. Клавишу Recovery зажать щупом

4. После того, как Windows обнаружит устройство, отпустить клавишу Recovery на мини-компьютере.

Следующий шаг – это установка драйвера. Этот процесс описан ниже в соответствующем разделе.

А мы переходим к программному методу прошивки. Его нужно использовать в случае, если в модели мини-пк не предусмотрена клавиша Recovery.

Программный метод

Прежде чем переключить Androidтв-приставку в режим прошивки, необходимо настроить соответствующим образом систему в мини-компьютере. При этом, мини-пк должен быть подключен к телевизору или монитору HDMI кабелем, а также к Windows компьютеру USB кабелем питания. Таким образом, получается такая схема подключения

Итак, на Вашем компьютере должен быть готов пакет с приложением и драйверами. Для этого следует , распаковать его в любой удобный для Вас раздел в компьютере.

При помощи кабеля USB, который поставляется в комплекте тв-приставки, необходимо установить подключение мини-пк к настольному ПК. К мини-компьютеру кабель подключается в OTG-разъем. К компьютеру кабель вставляется в полноразмерный USB порт. Таким образом, обеспечивается питание для мини-компьютера, теперь устройство можно включить, подсоединив его через HDMI порт к телевизору или монитору.

После полной загрузки Android тв-приставки следует зайти в настройки системы. В меню зайти в раздел «Для разработчиков». Если на «Отладка по USB» стоит галочка, ее следует убрать, соответственно, если галочка не стоит, так и оставляем.

В открывшемся экране нас интересует пункт «Mass storage» или в русской версии «Накопитель». Напротив этого пункта должна стоять галочка. Теперь Windows компьютер сможет определять Androidмини-пк как флэшку. Но для этого нам следует сделать следующий шаг.

Теперь компьютер определит приставку как внешний накопитель, и устройство будет отображаться в разделе «Мой компьютер» на Windows компьютере.

Теперь приступаем к переключению приставки в режим прошивки. Заходим в директорию распакованного архива, в каталоге «BatchTool» находим файл RKBatchTool.exe и запускаем его от имени администратора.

В запустившейся утилите в разделе «Connected Devices» должен быть помечен розовым цветом квадрат с цифрой «1». Это значит, что все настройки в Android произведены должным образом.

Квадрат с цифрой «1» из розового стал серым, в случае, если драйвер ранее не устанавливался, или зеленым, если драйвер уже инсталлирован на Android-устройстве

Android тв-приставка перестала передавать видео-сигнал на экран телевизора или монитора.

В случае, если драйвер инсталлируется на мини-пк в первый раз, Windows перейдет к процедуре установки драйвера на обнаруженное новое устройство.

Теперь нам предстоит произвести инсталляцию драйвера, если ранее он не был установлен на девайс.

Установка драйвера

Windows после тщетных попыток самостоятельно установить драйвер на обнаруженное оборудование, определит Ваше устройство как неизвестное. И это естественно, в библиотеке системы необходимые драйвера отсутствуют. Зато они есть в нашем распакованном архиве, и мы их установим в ручном режиме.

Для этого переходим в «Диспетчер устройств». В Windows 7 это можно сделать через Панель управления-Администрирование-Управление компьютером-Диспетчер устройств. Если на рабочем столе есть значок «Мой компьютер», то можно зайти в его контекстное меню, кликнув правой кнопкой мыши, зайти в свойства и выбрать пункт «Диспетчер устройств».

В разделе «Диспетчер устройств» нас интересует категория «Другие устройства». И здесь мы находим наш девайс, который Windows определил как «Неизвестное устройство».

Заходим в контекстное меню неизвестного устройства, кликнув по нему правой кнопкой мыши. Заходим в пункт «Обновить драйверы…»

Откроется окно с системным сообщением. Будет предложено два способа поиска и установки драйверов – автоматически и вручную, нам нужен второй вариант.

Далее через последовательный переход по кнопкам «Обзор» и «Обзор папок» находим на компьютере директорию с распакованным архивом, переходим в поддиректорию «drivers», и в зависимости от разрядности системы выбираем соответствующую папку «x64» или «x86», и уже внутри папки выбираем версию систему, у нас это «win7».

Подтверждаем выбранное действие нажатием на кнопку «ОК». Откроется окно «Поиск драйверов на этом компьютере». Поздравляем, процесс установки драйвера запущен. Однако, следует еще доказать бдительному и мнительному Windows свое твердое намерение. У Вас на экране монитора появится вот такое сообщение:

Смело выбираем «Все равно установить этот драйвер» и переходим к следующему шагу.

Если же осторожничающий Windows выдаст такое сообщение:

Нажимаем на «Установить» и упорно переходим к следующему этапу.

А следующий этап, собственно, и есть установка драйвера. Тут Windows справится сам.

Могут возникнуть проблемы, но это ложная тревога. По окончании инсталляции может выскочить такое вот «тревожное» сообщение от системы:

Не паникуем, а просто закрываем это окно, отключаем приставку от компьютера, через минуту снова подключаем и проделываем поэтапно всю операцию по настройке Android, описанную выше. В запущенной утилите RKBatchTool знакомый нам квадратик с цифрой «1» станет зеленым. Это добрый знак! Устройство готов к прошивке.

Когда драйвер будет установлен, в разделе «Диспетчер устройств» вместо неизвестного устройства появится «Rockusb Device» или «RK30 Device».

Теперь смело можно переходить к самой процедуре прошивки.

Прошивка

Мы проведем процесс прошивки на примере модели MK808b. В запущенном приложении RKBatchTool мы открываем диспетчер файлов. Для этого нажимаем на кнопку с тремя точками, которая находится на одной строке с полем FW Path.

Через диспетчер файлов утилиты выходим в директорию распакованного архива, находим файл update.img. Выделяем его и нажимаем «Открыть».

Мы вновь оказываемся в главном окне утилиты RKBatchTool. Внизу легко находим кнопку «Restore» и нажимаем на нее.

Процесс прошивки начался. Поздравляем! В ходе обновления в окне будет выдаваться сервисная информация и небезызвестный нам квадратик с цифрой «1» будет весело подмигивать нам солнечным желтым цветом.

А мы дожидаемся заветной надписи «Restore Done Succes» и – вуаля! – наше устройство обновлено и готово удивлять нас дальше своими впечатляющими возможностями.

Отключаем MK808b от компьютера и подключаем его к телевизору. Готово! Мы получили новое обновление для своей Android тв-приставки.

Первое включение после прошивки как правило занимает больше времени чем обычная загрузка.

Список прошивок и инструменты выложены на нашем Яндекс Диске .

Процесс прошивки мини-пк на Android для Amlogic.

Аппаратный метод

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

Однако, не во всех моделях такое отверстие обозначается надписью, но Вы знайте, что оно предназначено именно для этой цели. Также такая клавиша может просматриваться в одном из вентиляционных отверстий.

Для модели Vega S89 - кнопка Recovery спрятана в отверстии AV выхода.

Итак, Вы нашли технологическое отверстие в корпусе, далее следует просунуть тонкий щуп и нажать на кнопку. Если услышали типичный щелчок, то Вы достигли цели, и можете переходить непосредственно к процессу перевода мини-компьютера в режим прошивки. Здесь следует строго придерживаться следующего алгоритма (на примере модели Vega S89):

1. USB-кабель вставить в разъем USB-OTG на приставке.

2. Подключаем питание.

3. Подключить USB-кабель в порт USB настольного ПК с Windows

4. Клавишу Recovery зажать щупом (кнопка Recovery спрятана в отверстии AV выхода)

5. Жмем кнопку включения на приставке (светодиод загорается синим цветом)

6. После того, как Windows обнаружит устройство, отпустить клавишу Recovery на мини-компьютере.

7. Скачиваем и устанавливаем программу USB Burning Tool. Требуются права администратора. Во время установки программа должна установить драйвера. (может потребоваться перезагрузка)

Заходим в меню программы USB Burning Tool


7. Нажимаем кнопку Start. Прошивка занимает 4-6 минут. Во время процесса не отключать устройство.

Метод через CD-карту.

  1. Для этого скопируйте файлы из архива в корень CD карты;
  2. Отключаете блок питания от приставки;
  3. Нажимаете кнопку recowery;
  4. Подключаете блок питания и удерживая кнопку recowery, подключите кабель питания (нажимаете кнопку включения приставки);

___________________________________________________________________________________________________________________

Скачать программу и драйвера для Amlogic, с нашего Я.Диска

Итак, если программа установлена, приступим к изучению её возможностей.

Устанавливаем микроконтроллер в панель программации, подключаем программатор к компьютеру и запускаем "PICkit 2 Programmer".

При запуске программа производит опрос программатора и автоматически определяет тип программируемого микроконтроллера по идентификационным битам (так называемому device ID). Внимание! Микросхемы семейства Baseline, а также микросхемы EEPROM и KeeLOG не имеют device ID. Чтобы программа смогла работать с этими микросхемами, нужно выбрать конкретное изделие через меню "Device Family".

Если вместо такой дружелюбной картинки покажется вот такая...

То нужно проверить корректно ли подключен usb-кабель, и через меню "Tools" - "Check Communication" произвести переподключение устройства.

Открытие файла с прошивкой.

Чтобы записать программу МК в его память, необходимо выбрать в меню пункт "File" - "Import Hex".

Затем выбрать в открывшемся окне нужный файл прошивки.

После этого в окне памяти программ (Program Memory) и данных (EEPROM Data) отобразится содержимое.hex файла.

Запись программы в МК.

Теперь можно программировать МК. Для этого жмём кнопку "Write". Процесс записи занимает 3 - 5 секунд.

Об успешном выполнении процедуры записи уведомит надпись "Programming Successful".

Для большей уверенности можно провести процедуру проверки. При нажатии на кнопку "Verify" программа сравнивает данные hex-файла и данные, записанные в МК. Если верификация прошла успешно, то в окне сообщений появится надпись "Verification Successful".

Внимание! Если вы прошиваете микроконтроллеры PIC12F675, PIC12F629 и аналогичные с внутренним тактовым генератором, то при верификации может выскакивать ошибка. Дело в том, что PICkit2 Programmer (версии 6.21) сохраняет калибровочную константу, а затем записывает её в последнюю ячейку памяти МК. Понятно, что исходный файл прошивки и записанные данные в памяти будут отличаться. О калибровочной константе будет рассказано далее.

Быстрые кнопки.

Кнопка "Auto Import Hex + Write Device" понравиться тем, кто хочет "загонять прошивку" в МК нажатием одной кнопки. Один щелчок и программа предложит выбрать файл прошивки, а затем незамедлительно запишет её в МК.

Кнопка "Read Device + Export Hex File" выполняет обратную функцию - производит считывание данных с МК и предлагает сохранить файл прошивки в.hex файл.

Изменение битов конфигурации.

Биты конфигурации задают основные параметры работы МК. Это и тип генератора (кварц, RC-цепь), включение/отключение так называемого "сторожевого таймера", установка защиты от считывания памяти программ и некоторые другие. Как правило, при написании алгоритма работы МК (программы) прописываются значения, которые нужно записать в биты конфигурации. При "прошивке" программная оболочка берёт данные о конфигурации из самого файла прошивки и принудительно указывать эти данные не требуется.

Но, нам, как начинающим не будет лишним знать, как можно просмотреть или изменить конкретные биты конфигурации. Для этого щёлкаем по надписи "Configuration". Откроется окно редактирования битов конфигурации.

Если нужно поменять 0 на 1, то меняем - жмём "Save". Естественно, менять надо осознанно. Повторяю, при использовании готового файла прошивки менять ничего не надо, программа сделает всё автоматически.

Выбор модели микроконтроллера.

Микроконтроллеры бывают разные. Поэтому при программировании МК бывает необходимость указать конкретную модель микроконтроллера. При выборе пункта меню "Device Family" выпадает список семейств микроконтроллеров. Есть среди этого списка и микросхемы памяти EEPROM.

В отличие от микроконтроллеров, микросхемы памяти EEPROM не определяются автоматически по команде "Tools" - "Check Communication". Поэтому при считывании/записи микросхем EEPROM в программе необходимо указать маркировку микросхемы.

В меню выбираем пункт "Device Family" - "EEPROMS" - "24LC".

Калибровочная константа.

Как известно, для работы микроконтроллера требуется тактовый генератор. Элементом, который задаёт частоту работы этого генератора, может быть внешний кварцевый резонатор , RC - цепь. Но среди микроконтроллеров PIC есть такие, которые содержат необходимые задающие цепи внутри самой микросхемы. К таким МК относятся, например PIC12F629, PIC12F675.

На заводе в память таких микроконтроллеров записывается специальная константа, которая задаёт параметры встроенного генератора на 4 МГц. Эта калибровочная константа вида 34хх записывается в последнюю ячейку памяти программ по адресу 0x3FF.

При программировании микроконтроллера эту константу легко стереть . И хоть PICkit2 Programmer версии 2.61 автоматически сохраняет эту константу и затем записывает её при программации, не лишним будет записать значение константы OSCCAL.

При необходимости константу легко указать вручную. Для этого в меню выбираем пункт "Tools" - "OSCCAL" - "Set Manually".

В поле "OSCCAL value" указываем ранее записанное значение константы. Жмём кнопку "Set" (установить).

Теперь, когда вы знакомы с основными возможностями PICkit2 Programmer, можно смело начать сборку какого-нибудь устройства на микроконтроллере, например,

Как прошить микроконтроллер AVR? Именно этим мы и займемся в этой статье.

Что такое “прошить” и “прошивка”?

Давайте первым делом определимся, что означает слово “прошить” ? Думаю, вы часто слышали такие словосочетания, как “прошить телефон”, “слетела прошивка”, “кривая прошивка” и тд. А что такое “прошивка” ?

Прошивка – это грубо говоря, операционная система для маленьких устройств, таких как мобильный телефон, MP3-плеер, цифровой фотоаппарат и тд. То есть это небольшая программка, которая управляет этим устройством. Также часто можно услышать и такое:” У меня “глючит” сотовый телефон, его надо срочно “перепрошить “.

В данном случае это означает, что надо заново установить операционную систему на мобильный телефон. Значит, “прошить МК” означает закачать во внутрь него программу, которая бы управляла этим МК, а МК уже управлял бы каким-нибудь устройством. То есть по идее, МК – это посредник между программой и каким-либо устройством, которым надо управлять;-)


Оборудование для прошивки МК

Итак, что нам потребуется, чтобы прошить МК?

  1. Cам микроконтроллер.
  2. Компьютер, с заранее установленным программным обеспечением (ПО).
  3. Программатор.
  4. Несколько джамперов.
  5. Макетная плата . Я бы порекомендовал сразу купить набор для начинающего AVRщика. Этот набор питается от USB.
  6. Прямые руки, растущие из нужного места.

Мы с вами договорились использовать МК Atiny2313 в корпусе DIP-20:

Подготовка МК к прошивке

В прошлых статьях мы с вами рассматривали программатор Громова . Главный его минус в том, что нам требуется COM-порт, который с трудом можно сейчас найти в компьютере, а разъем USB зато есть на каждом компьютере. Поэтому, было принято решение о покупке самого дешевого USB программатора для AVR МК. Называется такой программатор и выглядит он примерно вот так


Если хорошенько порыться на Али , то можно найти очень сладкую цену на такой программатор. Например, . Может быть найдете даже дешевле. Если будете брать у другого продавца, то внимательно смотрите, чтобы его надписи и радиоэлементы располагались именно так, как у меня на фото . В среднем его цена на момент написания статьи около 120 рублей. Такой программатор в корпусе обойдется чуток подороже.

Вот его вид сзади:


Его рабочий разъем выглядит примерно вот так:


С программатором также в придачу идет шлейф


который одним концом цепляется к рабочему разъему программатора:


Другой конец шлейфа мы будем цеплять к МК.


Если внимательно присмотреться, то можно узнать, какой вывод в разъеме является первым. Стрелка укажет на первый вывод разъема:


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


Итак, наша задача – соединить выводы МК с выводами программатора.

Для этого в разъем шлейфа втыкаем провода в гнезда MOSI, RST, SCK, MISO, VTG (VCC), GND. GND я взял 10 гнездо, можно и другое, где написано GND. Итого 6 проводков-джамперов:


VTG (он же VCC) цепляем к 20 ножке МК

SCK(UCSK) цепляем на 19 ножку МК

MISO цепляем к 18 ножке МК

MOSI на 17 ножку

GND на 10 ножку

RST на первую ножку

Должно получиться как-то вот так:


После первого включения программатора в разъем USB ПК, Диспетчер устройств нам выдаст новое устройство:

Не пугаемся, качаем вот архивчик, распаковываем его и указываем путь на него при установке “дров”. Когда “дровишки” на программатор установятся, то мы увидим что-то типа этого:

Все ОК, программатор готов к бою.

В этом же архиве находим папку “avrdudeprog”, открываем ее, находим там исполняемый файл AVRDUDEPROG и запускаем. Это и есть программная оболочка для прошивки МК с помощью нашего программатора.

Она выглядит вот так. Не забываем выбрать наш МК в списке.

Для того, чтобы прошить МК, нам надо выбрать файл с расширением HEX. Итак, вот мой файлик. Первым делом я нажимаю кнопочку “Стереть все” . А вдруг кто-то уже использовал МК и там залита уже какая-нибудь программа? Поэтому, перед прошивкой стираем память МК. Если “стирка” прошла удачно, то программка выдаст нам примерно такое сообщение:

Прошиваем МК AVR

Нажимаем на кнопку выбора файла:

А теперь выбираем наш файл “Lesson 1.hex” . Это и есть наша программа.

А теперь жмем кнопочку “Программирование”

После того, как все прошло удачно, высветится что-то типа этого:

Но это еще не все! Как вы помните, в прошлой статье мы выставили частоту 8 Мегагерц. Чтобы не было неразберихи, нам эту частоту теперь надо поделить на 8. Для этого существует фьюз, который делит тактовую частоту именно на 8. Ставим маркер на “прямые фьюзы”, потом ставим галочку на CKDIV.

После того, как сделали эти два шага, нажимаем на кнопку “Программирование”:

Проверяем МК в железе

Теперь собираем нашу схемку, о которой говорилось еще в прошлой статье:


и наслаждаемся результатом:

Микроконтроллеры для начинающих. Видеоурок. Записываем программу в микроконтроллер (прошиваем чип)

________________________________________________________________________________________________________

Первая простейшая программа, управляющая напряжением на выводах микроконтроллера. Программирование в редакторе CodeVisionAVR. Перенос программы в память микроконтроллера (прошивка кристалла). скачать (36 МБ)


Содержание

Если видеозапись не идёт, установите flash-плеер и проверьте звуковую карту, либо скачайте материал (36 МБ). Если вместо видео - зелёный экран, переустановите flash-плеер (просто скачайте последнюю версию ). Если видео "дёргается", поставьте его на паузу и дайте немного подгрузиться. Плеер для просмотра flash-видео на домашней машине . Разверните видео на весь экран. Если напишут "Видео не найдено", "Video not found" - перезапустите видео ещё раз.

Редактор СodeVisionAVR - официальный сайт

Если микроконтроллер не прошивается, то:
1) Не суетитесь. Отложите конструкцию, отдохните, попейте чайку и расслабьтесь. Реальные конструкции редко начинают работать с первого раза - это нормально, тем более для начинающих (т.к. слишком много неучтённых факторов, которые мозг сходу осмыслить не в состоянии).
Профессиональные разработчики переделывают свои конструкции по несколько десятков раз:)))
Интересное свойство мозга: Как говорил Марк Твен: "Не откладывайте на завтра то, что можно отложить на послезавтра". Иногда в упор не получается написать программу, придумать электронную схему и т п. В этом случае не надо прикладывать сверхусилий. Отложите задачу в подсознание и подождите пару дней. После перерыва часто всё получается само собой. Причём намного быстрее и лучше, чем если бы вы эти же пару дней мучались с утра до ночи.

2) После отдыха еще раз внимательно проверьте:
Питание - не ниже 4.5 вольт , желательно взять от USB того компьютера, к которому подключён программатор (для исключения возможных выравнивающих токов). Проверьте напряжение тестером;
Не слишком ли длинные провода от компьютера к программатору. На длинные провода наводятся помехи и увеличивается вероятность сбоя передачи данных;
Может кабель внутри оборван? Прозвоните тестером все жилы.
Не перепутали ли провода MOSI , MISO , SCK , RESET, GND , в нужное ли место воткнули?
Правильно ли настроили программатор в Setting >> Programmer ;
Project >> Configure >> C Compiler ;
Правильно ли указали тип кристалла в Tools >> Chip Programmer ;

Фьюзы не трогали? Если трогали, придётся ставить внешний кварц.
Почистили чип перед прошивкой? Tools >> Chip Programmer >> Program >> Erase Chip ;
Иногда помогает полная очистка чипа Tools >> Chip Programmer большая к
нопка Reset Chip (равносильна подаче импульса на вывод RESET);
Поставьте в самом низу окна Tools >> Chip Programmer три галочки Check Signature , Check Erasure , Verify ;
Либо наоборот - снимите эти галочки. Попробуйте и так, и так.
Если уж ничего не поможет, тогда закажите новый чип . Вытащенный откуда-то чип может оказаться и горелый, и настроенный на внешний генератор, и с выжженными пинами и тому подобное.
Да и в магазинах их иногда бракованные подсосывают, т.к. хранят чёрт знает где. Иногда бывает проще купить новый чип, чем думать, что произошло со старым (но не выбрасывайте, когда наберётесь опыта - восстановите).
Если найдёте старый компьютер - попробуйт
е сделать LPT-программатор (вдруг USB-программатор бракованный подсунули?). Проще LPT-программатора ничего нет; я его делал на десятке компьютеров - он всегда начинал работать сразу и никогда не было сбоев.
Не забывайте перед монтажом заземлять руки о батарею, о водопроводный кран или о массивную стальную конструкцию (забор, стеллаж для книг), или купите антистатический браслет или коврик (статическое электричество с рук может повредить хлюпкие микросхемы).
Наконец, самый извращенский способ - попробуйте взять другой компьютер . Бывает, что материнские платы глючат, порты на них выгорают, проводочки от контактов отходят и т п.

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