Как в нех редакторе посмотреть индексацию прошивки
Перейти к содержимому

Как в нех редакторе посмотреть индексацию прошивки

  • автор:

Как привести в порядок историю ваших коммитов в Git

Публикуем перевод статьи, которую мы нашли на hackernoon.com. Ее автор, Thiago Miranda, пишет о том, как сделать работу с Git более удобной и эффективной.

О некоторых крайне полезных командах в Git

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

1. Что такое история в Git?

Точный реестр всех коммитов, содержащих произведенные с файлами изменения. В нем вы можете отследить конкретные изменения и время их внесения или сравнить текущую версию с предыдущей. Где посмотреть историю? Введите через Git Bash команду:

git log --oneline

Если у вас слишком много коммитов, вы можете переходить от одного комментария к другому с помощью клавиш со стрелками или клавиш Page Up / Page Down — как и в любом другом файле. Чтобы выйти, нажмите горячую клавишу (q).

2. О комментариях к коммитам

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

  • Как не надо: «Исправлен index.html»
  • Как надо: «Улучшена скорость работы навигационной панели»

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

3. Всегда делайте коммиты

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

Возможно, вы думаете: зачем так много коммитов? Основная причина в том, что ваш новый функционал может вступить в конфликт с чьим-нибудь кодом, но если вы всегда коммитите небольшие изменения, найти их и поправить будет проще. Так вы сэкономите время на отслеживании десятков или сотен строк, измененных в одном и том же коммите.

4. Исправьте последний комментарий к коммиту

Что, если уже после добавления небольшого коммита в ваш локальный репозиторий вы захотели исправить допущенную опечатку или сделать комментарий к коммиту подробнее? Внести изменения довольно просто сделать с помощью команды:

git commit -m “correct message” --amend

Обратите внимание: если вы уже запушили коммит в удаленный репозиторий, эту команду лучше не использовать.

5. Объедините последние Х коммитов в один

Ситуация: отправив коммит к новой фиче, вы понимаете, что нужно еще одно небольшое изменение, вносите минимальные правки и снова коммитите… В итоге 5 коммитов об одном и том же. Бывало? Подобные коммиты выбиваются из общего вида вашей истории в Git, но при желании их несложно поправить, применив команду:

git reset HEAD~3

Команда HEAD~3 откатывает 3 верхних коммита, включая самый последний. В этом примере три ваших последних коммита будут стерты из лога, но изменения в коде останутся на месте. Теперь пора посмотреть, какой код нужно закоммитить, для этого вводим команду:

git stage --diff

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

Обратите внимание, что HEAD обычно относится к последнему добавленному вами коммиту. Если вы не уверены, сверьтесь с логом Git. Если ваш последний коммит был замержен (не самый распространенный случай), команда HEAD~1 сотрет все коммиты из замерженной ветки. Чтобы узнать больше, посмотрите документацию.

6. Удалите последний коммит с изменениями

Будьте осторожны, так как этот способ сотрет все изменения без возможности откатить. Обычно он используется после экспериментов с кодом, если их результат не соответствует ожиданиям. Я рекомендую сперва попробовать в репозитории-песочнице.

git reset –-hard HEAD~1

Теперь ваш последний коммит удален, как и все соответствующие изменения в коде.

7. Очистите историю своих коммитов

Самый эффективный способ очистить историю коммитов — воспользоваться командой rebase. Будьте осторожны: вы можете удалить коммит, случайно нажав не ту клавишу. Итак, давайте запустим rebase в диалоговом режиме (флаг -i) с помощью команды:

git rebase -i HEAD~5

Как только вы вошли в него, вы увидите список из 5 последних коммитов (HEAD~5) внутри терминала. Все коммиты отсортированы по дате, т. е. наверху будет самый новый (этот список открывается с помощью Vim — текстового редактора Git по умолчанию, позволяющего редактировать текстовые файлы внутри терминала). И здесь же краткая инструкция с несколькими полезными командами. В большинстве случаев вам понадобятся команды squash и reword.

Заменив команду pick командой squash, вы удалите этот коммит из лога, и все изменения в коде будут сгруппированы с последним коммитом, выделенным командой pick.

Если вы хотите откорректировать комментарий, можно заменить команду pick командой reword и переписать комментарий.

Теперь вы можете перейти к следующему окну, где нужно написать один комментарий для группы коммитов, которые вы собираетесь склеить с помощью squash. Чтобы продолжить, нажмите ESC и введите:

Двоеточие (:) необходимо, чтобы показать, что вы хотите передать команду, (w) — чтобы записать (сохранить) изменения, (q) — чтобы выйти, а (!) — чтобы выполнить команду.

Обратите внимание, что каждая группа коммитов получит ваш комментарий. Результат можно проверить в логе Git.

Если по какой-то причине вы покидаете это окно, не завершив операцию, вы можете вернуться в любой момент с помощью команды:

git rebase --edit

Если вы хотите покинуть окно, не сохранив изменения, нажмите клавишу ESC и введите:

Vim получит команду закрыть файл без сохранения.

8. Управляйте индексацией

Обычно следует отправлять коммиты к одному файлу или к группе связанных файлов. Но как тогда оперативно вносить изменения при индексации?

Скажем, у вас есть 3 файла, и нужно закоммитить только 2 из них. В этом случае можно попробовать следующую команду:

git add .

Теперь удалите из индексации тот файл, который вам не нужен:

git reset -- Readme.txt

И проверьте результат:

git status

Добавьте все файлы из какого-либо расширения, например CSS:

git add *.css

Добавили все по ошибке? Тогда очистите индексацию, воспользовавшись командой:

git reset --

Если вам нужны более сложные операции, можно добавить файлы в индексацию с помощью диалогового режима:

git add -i

Сначала выберите опцию, введя соответствующий номер, например (3), чтобы откатить свои действия.

Выбрав опцию, можно ввести список файлов, которые вы хотите убрать из индексации, один за другим.

Когда завершите, нажмите (Enter).

Добавление файлов происходит по той же схеме. С помощью опции (4) добавьте неотслеживаемый файл.

Чтобы выйти, введите (q) в меню опций.

9. Вывод

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

Хотите узнать больше о парном программировании и начать работать удаленно? Загляните на Microverse.org.

  • Блог компании Plarium
  • Программирование
  • Git
  • Системы управления версиями
  • GitHub

Программирование современных микроконтроллеров: лекция 1

Конспект первой лекции по программированию современных микроконтроллеров на примере STM32 и операционной системы RIOT. Лекции читаются в Институте информационных технологий МИРЭА по субботам, с 12:50 в актовом зале на 4 этаже корпуса Д. В занятиях отводится 1,5 часа на саму лекцию и 3 часа на практические занятия в лаборатории IoT Академии Samsung по теме лекции.

Привет, Гиктаймс! Как мы и обещали, начинаем публикацию конспектов лекций, которые сейчас читаются в Институте ИТ МИРЭА. По результатам первой, вводной лекции мы решили немного изменить структуру курса — вместо планировавшихся двух потоков по 5 занятий будет один поток на 7 занятий. Это позволит в более спокойном темпе разобрать ряд вспомогательных вопросов, а также статьи с конспектом будут появляться на GT каждую неделю в течение всего марта и апреля, а не через неделю, как планировалось раньше.

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

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

Цель курса — освоение навыков, позволяющих свободно работать с микроконтроллерами на ядре ARM Cortex-M на современном уровне и, при наличии такого желания, двигаться в сторону дальнейшего углубления своих знаний.

Сегодняшняя лекция — первая, поэтому на ней будут разбираться общие понятия: что такое вообще микроконтроллер и зачем он нужен, что такое прошивка и как она получается, зачем нам нужна операционная система, и наконец — как работать с git. Результат практического занятия — собственный репозитарий на GitHub с исходными кодами ОС, а также успешно настроенная среда сборки на локальном компьютере.

Микроконтроллер

Если говорить коротко, то микроконтроллер — это классический пример «системы на чипе», включающей в себя как процессорное ядро, так и набор вспомогательных и периферийных устройств, позволяющий микроконтроллеру во многих случаях быть полностью самодостаточным.

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

В микроконтроллере же, наоборот, на одном кристалле с ядром реализованы не только необходимые для его работы подсистемы, но и масса периферийных устройств, которые могут потребоваться в различных практических задачах. Более того, многие производители микроконтроллеров соревнуются друг с другом не по производительности ядра или объёму памяти, а по обилию и функциям периферийных устройств.

Микроконтроллеры уже достаточно давно развиваются параллельно с микропроцессорами — так, до сих пор встречающаяся в промышленных изделиях архитектура Intel 8051 была разработана в 1980 году. В каких-то моментах линии их развития начинают пересекаться с микропроцессорами — так, старшие модели микроконтроллеров имеют интерфейсы для внешнего ОЗУ, а производители микропроцессоров интегрируют на кристалл всё больше периферийных устройств (достаточно вспомнить, что на заре «персоналок» даже кэш-память набиралась внешними микросхемами) — но в любом случае они остаются двумя существенно отличающимися ветвями развития.

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

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

  • Рабочие частоты редко превышают 200 МГц, а чаще находятся в районе десятков мегагерц.
  • Объём оперативной памяти — в пределах мегабайта, а чаще — в районе десятков килобайт.
  • Объём памяти программ — в пределах мегабайта, а чаще — в районе десятков-сотен килобайт.
Память

В общем случае внутри микроконтроллера может быть четыре вида памяти:

  1. Постоянная память (флэш-память) используется для хранения пользовательских программ и, иногда, некоторых настроек самого микроконтроллера. Если при указании на характеристики микроконтроллера пишут объём памяти, не указывая, какой именно — как правило, это про флэш. Содержимое флэша не сбрасывается при пропадании питания, срок хранения информации в нём в нормальных условиях обычно не менее 10 лет.
  2. Оперативная память используется для выполнения пользовательской программы и хранения «сиюминутных» данных. ОЗУ всегда сбрасывается при перезагрузке или выключении питания, а также может не сохраняться при входе в некоторые режимы сна. В микроконтроллерах часто нет чёткого разделения на память программ и память данных — в результате можно встретить термин «выполнение из ОЗУ», означающий, что в ОЗУ находятся не только данные, но и сама программа; впрочем, это достаточно экзотические случаи.
  3. EEPROM. Тоже относится к постоянной памяти, но существенно отличается от флэш-памяти своими характеристиками. У флэша есть два больших недостатка, делающие его очень неудобным для сохранения из программы каких-то текущих данных — во-первых, у флэша ограниченное число перезаписей одной и той же ячейки, во-вторых, с флэшом часто можно работать только целыми страницами, которые имеют размер в сотни байт, даже если вам надо перезаписать всего один байт. EEPROM этих недостатков лишён — срок его службы обычно вдесятеро больше (от 100 тыс. до 1 млн. перезаписей), и работать в нём можно с каждым байтом по отдельности. По этой причине EEPROM используют для постоянного хранения данных, генерируемых самой программой (архивы измерений, настройки программы и т.п.), его типовой объём составляет единицы килобайт, но есть он не во всех контроллерах.
  4. Системная память. Области постоянной памяти, недоступные пользователю для записи, а записывающиеся при производстве микроконтроллера. Обычно в них находится исполняемый код загрузчика (о нём ниже), но могут также храниться какие-либо калибровочные константы, серийные номера или даже вспомогательные библиотеки для работы с периферийными устройствами

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

Регистры

Дело в том, что всё — вообще всё — общение со всеми периферийными устройствами микроконтроллера и всеми его настройками осуществляется с помощью всего двух операций:

  • прочитать значение по заданному адресу
  • записать значение по заданному адресу

Так, например, если мы хотим, чтобы на третьей ножке порта А микроконтроллера (PA2, нумерация идёт с нуля) появилась «1», нам надо записать «1» в третий бит регистра, расположенного по адресу 0x4002014. А если эта ножка настроена как вход и мы, наоборот, хотим узнать, какое на ней значение — нам надо прочитать третий бит регистра по адресу 0x40020010.

Да, чтобы указать контроллеру, входом или выходом является эта ножка — надо записать соответствующие значения в соответствующие биты по адресу 0x40020000.

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

Разумеется, работать с числовыми адресами довольно неудобно, поэтому для каждого микроконтроллера на ядре Cortex-M существует библиотека CMSIS (Cortex Microcontroller Software Interface Standard), самый важный компонент которой для нас — заголовочный файл, описывающий имеющиеся в конкретном контроллере регистры и дающий им относительно человекочитаемые имена.

С использованием CMSIS описанные выше операции с ножкой PA будут выглядеть так:

int pin_num = 2; /* PA2*/ GPIOA->MODER &= ~(0b11 MODER |= 0b01 ODR |= 1 MODER &= ~(0b11 IDR & (1  

Все названия регистров и значения полей в них описаны в документе, который можно считать Библией программиста микроконтроллеров — Reference Manual (он, разумеется, свой для каждого семейства контроллеров, ссылка дана на RM0038, соответствующий семейству STM32L1). Отмечу, что более чем 900 страниц RM0038 — это не очень большой объём информации, легко можно встретить контроллеры с руководствами по 1500-2000 страниц. Вряд ли есть кто-то, помнящий хотя бы треть такого руководства наизусть, но умение быстро в нём ориентироваться — обязательное качество для хорошего программиста.

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

Понимая это, производители контроллеров начали выпускать вспомогательные библиотеки, собирающие наборы обращений к регистрам в функции — например, если при работе с регистрами напрямую для включения какого-либо такового генератора вам надо сделать два действия (поставить в 1 бит, включающий генератор, и подождать, пока в 1 встанет флаг, индицирующий, что генератор вышел на режим), то в функции включения генератора в такой библиотеке они будут объединены.

В случае с STM32 основная библиотека называется Standard Peripherals Library, она же StdPeriphLib, она же SPL. Помимо неё, существует выпускаемая ST библиотека LL, и ряд сторонних библиотек — например, LibOpenCM3. Сторонние библиотеки часто поддерживают и контроллеры других производителей, но в силу распространённости STM32 они обычно оказываются на первом месте.

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

Впрочем, нельзя не заметить, что среди профессиональных разработчиков отношение к SPL — двойственное.

С одной стороны, SPL позволяет значительно быстрее набросать «скелет» проекта, особенно при использовании графических средств конфигурирования контроллера, таких как STM32 CubeMX. При этом код будет довольно хорошо (настолько, насколько у них совпадает набор периферийных устройств и возможностей, которыми вы пользуетесь) переноситься между разными контроллерами семейства STM32.

С другой стороны, как показывает практика, в сложном проекте нет вопроса «что делать, если что-то будет работать не так» — в нём есть вопрос «что делать, когда всё будет работать не так». В SPL, как и в любой библиотеке, могут быть ошибки, кроме того, логика разработчиков SPL может не совпадать с вашим представлением о том, что должно происходить с контроллером при тех или иных действиях — в результате при попадании в такую ситуацию вам всё равно придётся открывать исходники SPL и смотреть, что конкретно там происходит на уровне регистров. На практике это может иногда занять времени не меньше, чем написание нужной вам функциональности с нуля.

Кроме того, библиотеки, выпущенные конкретным производителем чипов, хоть и позволяют в каких-то пределах мигрировать между чипами этого производителя, но перескочить, например, с STM32L1 на ATSAMD21 с кодом, написанным для SPL, у вас не получится при всём желании.

Не всегда помогает SPL и читаемости кода — в программах, написанных с её использованием, нередко можно увидеть простыни размером в полстраницы, состоящие из одних только вызовов SPL.

Наконец, SPL решает лишь одну проблему — абстрагирования от «железа» и работы с регистрами. Однако по мере развития проекта вы столкнётесь ещё с несколькими, например:

  • Виртуализация периферийных устройств. Например, в вашем контроллере есть всего один таймер часов реального времени (RTC), на который можно установить два независимых события — и в то же время в серьёзной программе запросто может оказаться пять-шесть функций, который используют таймер регулярно (для периодического выполнения заданий) или разово (например, для отсчёта задержки), причём другие таймеры им не подходят. В этой ситуации вам потребуется функция-менеджер, которая будет организовывать одновременную работу всех этих процедур с единственным имеющимся таймером.
  • Многозадачность. Любая достаточно сложная система быстро обрастает большим количеством всевозможных процедур, которым надо срабатывать с различной периодичностью или по различным событиями. Знакомый многим по Arduino цикл loop() уже на полудесятке утрамбованных в него разношёрстных процедур начинает выглядеть уродливым монстром, а попытка организовать в его рамках ещё и приоритизацию задач вселяет ужас в сердца людей. В этот момент вы захотите вынести все задачи из loop() в независимые функции, оставив в цикле только планировщик, который будет к указанным задачам обращаться. Это будет первыми зачатками многозадачности (о полной её реализации, типах планировщиков и общении между разными задачами мы поговорим на следующей лекции).
  • Разделение труда. Как только разработка системы выйдет на уровень, на котором её ведут несколько человек, перед вами встанет задача разделения обязанностей — помимо оптимизации разработки, имеющая ещё и чисто практический смысл: в мире довольно мало программистов-универсалов, которые могут с одинаковой эффективностью отлаживать и работу с процессором, и сетевой стек, и пользовательский интерфейс. Со значительно большей вероятностью каждый из членов вашей команды будет лучше других разбираться в какой-то одной области — поэтому вам быстро захочется разделить эти области на уровне кода, чтобы, например, специалист по пользовательскому интерфейсу не был вынужден через строчку сталкиваться с обращением к регистрам контроллера, и наоборот. Это приведёт к разбиению вашего кода на отдельные модули, общающиеся друг с другом через стандартизированные API.

Несмотря на то, что ОС требует для своего существования дефицитных ресурсов контроллера (обычно 5-20 КБ постоянной памяти и ещё столько же оперативной), преимущества использования ОС настолько велики, что на данный момент в профессиональной разработке для встраиваемых систем около 70 % проектов используют ту или иную ОС.

Строго говоря, на нижнем уровне ОС может использовать вендорские библиотеки, подобные SPL. Однако в рамках нашего курса мы будем работать с RIOT OS, нижнеуровневый код которой для семейства STM32 написан на регистрах — работу с SPL же мы затрагивать не будем вообще.

Причина этого проста: хотя в целом мы будем изучать работу ОС и контроллера на верхнем уровне, но в тех случаях, когда мы захотим углубиться в детали их функционирования, нам всё равно придётся спускаться на уровень регистров, и прослойка в виде SPL довольно сильно бы этому мешала. Освоив же общие принципы работы с контроллерами, при желании с функционированием SPL вы сможете разобраться самостоятельно, тем более, что абсолютное большинство учебников по STM32, доступных онлайн, построены на её базе.

Операционная система

В виде максимально упрощённой схемы ОС можно представить как набор компонентов, выстроенных в определённую иерархию:

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

Точнее, если вспоминать фразу Артура Кларка про технологии, неотличимые от магии, то это мышлении можно скорее назвать псевдомагическим, переформулировав афоризм как «любая технология, достаточно хорошо спрятанная от пользователя, становится неотличима от магии».

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

Если мы посмотрим на то, как выглядит RIOT OS в виде набора файлов на диске, то без труда опознаем разложенные по папочкам компоненты системы: HAL лежит в папке cpu (и если мы её откроем, то увидим описания для десятков различных микроконтроллеров, от AVR до PIC32), описания построенных на этих контроллерах плат — boards, драйверы внешних устройств — drivers, ядро ОС — core, системные и вспомогательные сервисы ОС — sys, пользовательские приложения — examples.

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

Исходные коды ОС

Мы будем работать с исходными кодами в версии https://github.com/unwireddevices/RIOT/tree/mirea — это ответвление от основной разработки RIOT OS, в котором силами Unwired Devices улучшена поддержка микроконтроллеров STM32L1, а также добавлены некоторые полезные сервисы, например, таймеры на базе часов реального времени, включая миллисекундный таймер.

Исходные коды можно загрузить с Github, выбрав кнопку «Clone/Download» и «Download ZIP», но лучшим вариантом будет создание собственного репозитория. Для этого зарегистрируйтесь на GitHub, после чего вернитесь в указанный выше репозиторий и нажмите кнопку «Fork» — исходные коды будут скопированы в ваш аккаунт, откуда вы сможете уже без проблем работать с ними.

Я не буду описывать здесь детали работы с GitHub и Git — в интернете есть масса отличных пошаговых руководств, повторять которые нет смысла.

Компиляция простейшего приложения

Благодаря тому, что ОС берёт на себя всё взаимодействие с микроконтроллером, простейшее возможное приложение в общем-то ничуть не сложнее, чем традиционный «Hello world» на большом ПК:

#include int main(void)

В структуре нашей ОС это приложение располагается в папке example/hello-world в файле main.c (оно там уже есть).

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

1. Windows 8 и старее. К сожалению, придётся использовать среду MinGW, медленную и неудобную. Процедура установки нужных компонентов достаточно подробно описана здесь. Отмечу, что для работы с Git/GitHub придётся также отдельно поставить Git for Windows, который притащит свою урезанную версию MinGW. При желании всё это можно свести в один терминал MinGW, но проблем с очень низкой скоростью работы MinGW и общим его неудобством это не решит.

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

2. Windows 10. Откройте магазин Microsoft Store, найдите в нём Ubuntu и установите. Если при первом запуске Ubuntu будет ругаться на выключенный компонент Windows, откройте системное приложение «Включение или отключение компонентов Windows», найдите там «Поддержка Windows для Linux» и включите.

Вся дальнейшая работа происходит в среде Ubuntu, значительно более комфортной и быстрой, нежели MinGW.

Скачайте компилятор и сопровождающие его утилиты отсюда (внимание: вам нужна 64-битная версия для Linux!), откройте Ubuntu, распакуйте архив и укажите системе пути к нему:

cd /opt sudo tar xf /mnt/c/Users/vasya/Downloads/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 export PATH=/opt/gcc-arm-none-eabi-7-2017-q4-major/bin/:$PATH export PATH=/opt/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/bin/:$PATH echo "export PATH=/opt/gcc-arm-none-eabi-7-2017-q4-major/bin/:\$PATH" >> ~/.bashrc echo "export PATH=/opt/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/bin/:\$PATH" >> ~/.bashrc 

Последние две команды пропишут установку путей к компилятору и утилитам в файл .bashrc, так что вам не придётся вручную их устанавливать при каждом запуске Ubuntu. Обратите внимание на обратную дробь перед $ и двойную стрелку >> в конце — без первого путь будет записан некорректно, без второго (с одиночной стрелкой) вы сотрёте всё предыдущее содержимое .bashrc.

После этого выполнение в консоли команды arm-none-eabi-gcc --version должно сообщать, что такой компилятор есть, а его версия — 7.2.1 (на текущий момент).

Для работы с Git вам потребуется сгенерировать пару из приватного и публичного ключей командой ssh-keygen, после чего скопировать публичный ключ (в Ubuntu под Windows это можно сделать командой cat ~/.ssh/id_rsa.pub, потом выделить выведенное мышкой и нажать Enter — оно скопируется в буфер обмена) и добавить его в ваш аккаунт GitHub. После этого можно будет работать с GitHub из командной строки командой git.

NB: если вы ранее не работали в командной строке Linux, то обратите внимание на два полезных момента: курсорные стрелки вверх и вниз позволяют листать историю введённых команд, а клавиша Tab дополняет набранный вами путь к файлу или папке до конца (то есть cd /opt/gcc- превратится в строку cd /opt/gcc-arm-none-eabi-7-2017-q4-major). Последнее служит также хорошей проверкой, правильно ли вы набираете путь — если неправильно, дополнен он по очевидной причине не будет. Если возможных вариантов дополнения несколько, то двойное нажатие Tab выведет их все.

NB: в Windows вам будет удобнее работать, если сами исходные коды ОС размещаются в папке, напрямую доступной из Windows, например Documents/git/RIOT. Из-под MinGW она будет доступна по пути /c/Users/vasya/Documents/git/RIOT, из-под Ubuntu — /mnt/c/Users/vasya/Documents/git/RIOT. В этом случае вы сможете свободно пользоваться для работы с кодом, например, текстовыми редакторами, написанными для Windows, такими как Notepad++.

3. Linux. Установка среды сборки ничем не отличается от инструкции для Windows 10, кроме того, что Microsoft Store вам не потребуется. Также не ищите gcc-arm-none-eabi в репозитории вашего дистрибутива — скачайте наиболее свежую версию с его официального сайта.

После установки среды сборки откройте консоль, перейдите в папку с RIOT и в подпапку examples/hello-world, после чего запустите команду make.

Скорее всего, она быстро прервётся ошибкой и сообщением, что у вас не хватает unzip (под Windows 10 по умолчанию он не устанавливается), make или других утилит. В Windows 10 их можно установить командой (перечень недостающего даётся простым списком через пробел):

sudo apt-get install unzip make

После установки попробуйте ещё раз запустить make — точнее, оптимальным вариантом является вызов команды «make clean && make»: первая очищает мусор, оставшийся от предыдущей попытки. Без ней компилятор может ошибочно решить, что какой-то из уже собранных модулей не менялся, и не пересобирать его — в результате вы получите прошивку, собранную из кусков старого и нового кода.

NB: в оригинальном RIOT приложение hello-world собирается для архитектуры native, то есть, в нашем случае ноутбука или десктопа, x86. Однако в нашем коде в параметрах сборки проекта уже указана плата unwd-range-l1-r3, использующая контроллер stm32, поэтому в начале процедуры вы должны увидеть строку

Building application "mirea" for "unwd-range-l1-r3" with MCU "stm32l1".

В случае успеха за ней вы увидите десяток-два строчек, начинающихся с команды make — это сборка отдельных компонентов операционной системы. Закончится всё сообщением об успешном создании файла прошивки mirea.elf с указанием размеров различных типов данных (объёмов используемой флэш-памяти и ОЗУ).

Итак, мы немного разобрались с тем, как выглядит микроконтроллер, скачали исходные коды нашей ОС, настроили среду сборки и убедились, что она работает.

На следующем занятии мы рассмотрим подробнее устройство микроконтроллера, начиная с портов GPIO, и загрузим в него первое приложение — оно, по старой традиции, будет мигать светодиодом — а далее вернёмся к операционной системе и внимательнее изучим, из каких компонентов она состоит и как настраивается её сборка.

P.S. И в качестве дополнения — живая 360-градусная запись лекции (запись семинаров не проводилась по понятной причине: «у доски» там говорится мало, значительная часть работы идёт уже с отдельными студентами, у которых что-то получается или не получается):

Помогите разобратся с HEX редактором

Здравствуйте!У меня такой вопрос как научится менять калибровки в HEX редакторе? Понимаю что в рамках форума не научусь, но может кто подскажет где искать. через гугл ничего не могу найти( хотелось бы узнать как именно находить нужные переменные из всей этой матрицы байтов

sychyov1991

Bosch ME17 от Ras.667 Hyundai и KIA PSA Bosch ME7.4.5 от Art PRO™

Регистрация: 22.01.2006 Сообщений: 5,273 Адрес: Салехард
#2 pioneer, 03.03.2013 23:22
Сообщение от sychyov1991: ^
хотелось бы узнать как именно находить нужные переменные из всей этой матрицы байтов
Нажмите, чтобы раскрыть.

Ничего сложного. Берёте прошивку, меняете в ней что то, сравниваете, смотрите где что поменялось, и вуаля.

pioneer

ЗУЙОК Местный житель
Регистрация: 27.01.2013 Сообщений: 63 Адрес: Москва
#3 ЗУЙОК, 04.03.2013 00:35

Кстати,тоже заинтересовался этим вопросом, пока понял, что это связанно с асемблером, вот только никак не могу найти программку по десемблированию.
rebe, я здесь конечно новичек, но то что ты предложил это очень опасно, как пример. Взял eeprom и изменил там что нибудь и пока искал что изменил через софт потерял строку, в итоге изменил подачу кокого нибудь напряжения или снял защиту и будет тогда вуаля.

ЗУЙОК

автоэлектрик

Регистрация: 13.03.2009 Сообщений: 1,644 Адрес: Гатчина, Ленинградская обл
#4 leha, 04.03.2013 00:54

ЗУЙОК,Сохранять надо всегда дампы, прежде чем ковырять. Не поможет вам программка.

Сообщение от sychyov1991: ^
как научится менять калибровки в HEX редакторе?
Нажмите, чтобы раскрыть.
Купите редактор калибровок и не мучайтесь.
Последний раз редактировалось leha; 04.03.2013 в 00:56 .

leha

Регистрация: 22.01.2006 Сообщений: 5,273 Адрес: Салехард
#5 pioneer, 04.03.2013 00:55
Сообщение от ЗУЙОК: ^

но то что ты предложил это очень опасно, как пример. Взял eeprom и изменил там что нибудь и пока искал что изменил через софт потерял строку, в итоге изменил подачу кокого нибудь напряжения или снял защиту и будет тогда вуаля.

Нажмите, чтобы раскрыть.
Я думаю на этой конференции нет идиотов, которые работают с оригиналом дампа, а не с его дублем.

pioneer

ЗУЙОК Местный житель
Регистрация: 27.01.2013 Сообщений: 63 Адрес: Москва
#6 ЗУЙОК, 04.03.2013 00:57

Есть уже редактор. Но к примеру нужно скрутить километраж в мозгах?
Для этого на сколько я знаю необходимо в определенной строке заменить шеснадцатиричные символы.

Добавлено через 4 минуты

Сообщение от rebe: ^
Я думаю на этой конференции нет идиотов, которые работают с оригиналом дампа, а не с его дублем.
Нажмите, чтобы раскрыть.
Согласен откатить всегда можно. Но если что то изменил и эти изменения вырожаються не сразу?
Последний раз редактировалось ЗУЙОК; 04.03.2013 в 01:02 . Причина: Добавлено сообщение

ЗУЙОК

автоэлектрик

Регистрация: 13.03.2009 Сообщений: 1,644 Адрес: Гатчина, Ленинградская обл
#7 leha, 04.03.2013 01:02
ЗУЙОК,дело за малым, найти строку, изменить значения и подсчитать контрольку

leha

ЗУЙОК Местный житель
Регистрация: 27.01.2013 Сообщений: 63 Адрес: Москва
#8 ЗУЙОК, 04.03.2013 01:07

Вы меня конечно извините, я никого не хочу обидеть, просто охото разобраться с НЕХ. Я понимаю что это код записи программы (алгоритма) в соответствии с которым работает ЭБУ. Вот и интересно где в этом коде что?

Добавлено через 2 минуты

Сообщение от leha: ^
ЗУЙОК,дело за малым, найти строку, изменить значения и подсчитать контрольку
Нажмите, чтобы раскрыть.

Вот я это и имею ввиду, как найти эту строку? К примеру один ЭБУ имеет 10 строк, другой 11 и не факт, что в обоих 5 строка отвечает за километраж.

Добавлено через 5 минут

Мало ли может кто нибудь подскажет где моно найти информацию по строкам в НЕХ редакторе?
Находил информацию только по одометру.

Последний раз редактировалось ЗУЙОК; 04.03.2013 в 01:14 . Причина: Добавлено сообщение

ЗУЙОК

Tom Вечная память
Диагност-ремонтник

Регистрация: 01.04.2001 Сообщений: 5,709 Адрес: Сухум. Абхазия.
#9 Tom, 04.03.2013 01:47
Сообщение от ЗУЙОК: ^
Мало ли может кто нибудь подскажет где моно найти информацию по строкам в НЕХ редакторе?
Нажмите, чтобы раскрыть.

Вот парни, ну вот как вы можете не обидеться на достойные ответы,ну? Задайте нормально вопрос, типа, "я пытаюсь изменить километраж в регистраторе/доске Роллс-Ройса. Подскажите, по какому адресу и в каком виде лежить пробег и контролька".
Вот тогда вам нормальным языком ответят или подскажут и попытаются помочь.
А так как в топике задано - ну ниачом ваще, соответственно ниачомные ответы. Какой нех-редактор. винхекс, тоталком или стп или чо там ещё. Любой НЕХ-редактор - это обычная отвёртка. А что будем ей крутить, по топу неясно.
Как-то-каг-бе так.

Tom

Регистрация: 22.01.2006 Сообщений: 5,273 Адрес: Салехард
#10 pioneer, 04.03.2013 01:50
Сообщение от ЗУЙОК: ^

Вот я это и имею ввиду, как найти эту строку? К примеру один ЭБУ имеет 10 строк, другой 11 и не факт, что в обоих 5 строка отвечает за километраж.

Нажмите, чтобы раскрыть.

А голова для чего, шапку носить? Небольшой мозговой штурм, и радость от маленькой победы превзойдёт ожидания!

pioneer

sychyov1991 Завсегдатай
машинист автогрейдера

Регистрация: 12.08.2011 Сообщений: 7 Адрес: Казахстан, Костанай
#11 sychyov1991, 04.03.2013 06:19
Сообщение от ЗУЙОК: ^

Кстати,тоже заинтересовался этим вопросом, пока понял, что это связанно с асемблером, вот только никак не могу найти программку по десемблированию.
rebe, я здесь конечно новичек, но то что ты предложил это очень опасно, как пример. Взял eeprom и изменил там что нибудь и пока искал что изменил через софт потерял строку, в итоге изменил подачу кокого нибудь напряжения или снял защиту и будет тогда вуаля.

Нажмите, чтобы раскрыть.

с дизассемблером как раз проблем нет, от простенького Hiew до IDA Ильфака Гильфанова

Добавлено через 49 минут

Tom, но ведь мы же не будем ради каждого байта тему на форуме создавать) понимайте нам как начинающим интересен не ответ на задачу а сам метод решения

Как я был бараном в бинарном аду.

Этот дневник я от себя совсем не ожидал. Его мог написать любой гуру Драйва, с заточенными под электронику мозгами. У меня с электроникой давняя вражда, поскольку я с детства туповат и у меня чисто гуманитарный склад ума (((
Но, по неведомым причинам, никто из них не взялся за такой объёмный дневник, но они честно передавали нам знания, публикуя части того материала, который, я на вас сегодня вываливаю оптом )))

Не люблю писать в сообщество субаристов, поскольку дневники здесь теряются ((( Но, сейчас я хотел бы, что бы более грамотные субаристы поделились своим опытом, закрыв пробелы в моём самообразовании и дав другим субаристам уверенность, в том, что и они могут постигнуть все тонкости общения с авто !

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

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

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

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

Если бы я понимал, что и в моторе масса проблем, я бы на новой машине его снял и переделал. Но, объём необходимых переделок стал понятен только сейчас.

2 Обзавестись средством, позволяющим мониторить большое количество параметров авто. Об этом мы сегодня поговорим.

3 Обзавестись средствами диагностики применявшимися в автремонте издавна. На данный момент у меня их много, но не все освоены из-за отсутствия времени. Надеюсь летом всё освоить и рассказать вам о базовой диагностике.

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

Но, это моё личное мнение, в сознание обычного владельца моментально вспыхивает вопрос — зачем ? Зачем такие сложности ? Ведь всё хорошо, прекрасная маркиза. Можно писать о годе владения. можно писать, что обслуживание не дороже других марок. да, о чём угодно можно писать )))

Зачем городить сложности папаслям ? )))

Рассмотрим несколько примеров .

1 Вы встречаете девушку. Она прекрасна, весела, обаятельна ))) Но, никто не подозревает, что она тяжко больна. Если бы вы владели соответствующей диагностикой, вы бы спасли ей долгую жизнь ? Или сильно расстроенные поели бы салатик, в виду безвременной кончины ?

2 На днях вышел очень интересный дневник от Дмитрия bitomaxsp

Казалось бы, чем может быть интересен дневник о масле моторном ? А интересен он тем, что половина респондентов не знает зольность применяемого масла ))) Те им плевать, что будет с мотором и при выборе масла они ориентируются на слух. Мягче работает, тише работает … ((( Вот, несерьёзные критерии выбора масла ((

А при заправке бензином, на что нужно ориентироваться ? На расход ? Нет. Никто не знает (((

Те, большинство субаристов не владеет базовой информацией о своей машине, напрямую влияющей на ресурс и долгое здравие. Оно и понятно, к 200 000 км пробега большинство продаёт авто и правильно делает !

Но, с критериями оценки работы авто, мы сегодня поборемся. Вдруг пригодится ))))

3 Есть люди, типа меня, которые громко заблуждаются. Но, находят в себе силы исправить текст, по мере приобретения опыта.
Меня, в своё время, поразил дневник из серии — "никогда такого не было, и вдруг, опять ". Написал его, уважаемый Алексей meccup

К сожалению, тот дневник канул ((( Но, смысл был в следующем. Что прошивка ЭБУ даёт иногда странный эффект. В комментариях выяснилось, что очень многие владельцы обратили на это внимание )))
Прошивала авто некая глобальная сеть, задабривающая владельцев печенками ))) И после прочтения этого дневника, а особенно, комментариев, создавалось впечатление, что эта самая известная сеть прошивальщиков косячит напропалую )))

Возникает вопрос, как оценить прошивку и всегда ли она нужна ?
И главное, можем ли мы всё это освоить сами . ?

Ведь часто возникает ситуация банальная.

1 У вас кончились катализаторы, их удалили, надо убрать ошибочки по ЕГР и иже с ним. Вы можете сделать пару кликов и жить спокойно.

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

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

4 Ну, и более серьёзный случай. Мне нужно увеличить ресурс мотора. Сделать давление масла в пробках удовлетворительным. И настроить работу электровентиляторов для максимального охлаждения маслорадиатора. Это просто !

Если вам это не интересно, можно дальше не читать.

А для продвинутых пользователей продолжу.

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

Поэтому, я позволю себе немного теории. Что бы субаристам неопытным пройти быстрее нудный этап поисков базовой информации.
В этом мне в разное время помогало общение с разными людьми.

Хочу им выразить глубокую благодарность и кратко дать характеристику, чем они вам могут помочь, как помогли мне. Причём помощь эта была бесплатной.

Андрей Голубев 2350
который в момент моего прихода на сайт, исповедавал помощь всем желающим изучать технику. Очень мне помог с базовыми элементами радиоэлектроники и неоднократно.

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

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

Именно Александр дал мощный пинок, по моему жирному заду, подарив первый К-лайн адаптер, установив программы мне на комп для снятия логов. Сам бы я никогда не решился )))

Потом я познакомился с Юрой yura2507
Он является приверженцем стоковых прошивок. Ставит он их бесплатно. И многие вернувшись на стоковую прошивку, испытали эффект ВАУ )))

Юра совершил ещё один мощный пинок по моей заднице, и под его влиянием я уже сам прошиваю свою машину ))) Для этого он мне посоветовал необходимое оборудование и установил нужные проги.

Юра посоветовал мне пообщаться с Дмитрием dimespb
Люди, которые начнут продвигаться в описываемой мной теме, будут на многих форумах встречать его тексты. Где он даёт много помощи в теории. Поскольку является программистом и субаристом.

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

Если такая тупая обезьяна как я чему то научилась, то и вы подавно сможете !

А теперь кратко рассказываю, как я учился общаться со своим авто посредством проводов.

Немного теории, нетерпеливым можно не читать, а перейти к финалу.

В настоящее время, обмен параметрами в авто по обычным проводам исчерпал себя полностью. Современные автомобили содержат в себе до 80 блоков управления. Обмен между ними идёт по цифровой CAN шине. Фактически это сборище компьютеров объединённое в сеть. Обмен данными происходит мгновенно. Это создаёт определённые неудобства пользователям, тк трудно прицепить инородный блок для тюнинга.

На первых субариках ставились блоки управления моторами 16 разрядные или как иногда говорят 16 битные. Сейчас ставят 32 разрядные блоки управления.
В чём принципиальная разница ?

Приведу отрывок украденный в сети на Майле.

"Компьютер оперирует битами и байтами. Бит — это логический "+" (единица) или логический "-" (ноль). В одном байте восемь бит. Самое большое число, которое можно передать одним байтом это 255. (в двоичной системе 11111111) . Что бы 8 разрядному процессору сложить 300+300 придётся 300 представить в виде 255+45 и проделать 4 операции (отдельно с каждым байтом). Если процессор 16ти битный, то потребуется 2 операции. Так как работает он сразу с двумя байтами. Соответственно, 32х разрядные могут оперировать четырьмя байтами, а 64х разрядные сразу восьмью. Это существенно влияет на скорость обработки информации."

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

Итак, прошивка, это по сути набор цифр. Пишут её программисты. Но, тут надо понимать. Что по своей основе моторы повторяют моторы Генри Форда. Происходит оптимизация камеры сгорания. Систем впрыска, что ведёт к улучшению характеристик мотора. В то же время, моторы облегчают, и специально перегревают, что ведёт к уменьшению их ресурса.

Так же и программисты, широко используют предыдущие наработки, ведь принципы горения топлива неизменны )) А вот количество узлов, которыми надо управлять, растёт. Растёт количество адресов в прошивке. И иногда, купленные для вашей машины мозги, с иного рынка обитания не будут управлять вашей машиной полностью.

Существует много языков программирования. Они делятся на уровни. Например, языки известные многим — Ява и 1С являются языками высокого уровня. А прошивка для авто пишется на языках низкого уровня. Что это значит ?

Наиболее известным языком низкого уровня является язык ассеблера.

Цитата из Вики —
"Язык ассемблера (англ. assembly language) — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам машины или их последовательностям, также он может предоставлять дополнительные возможности облегчения программирования, такие как макрокоманды, выражения, средства обеспечения модульности программ. Может рассматриваться как автокод (см. ниже), расширенный конструкциями языков программирования высокого уровня[2][3]. Является существенно платформо-зависимым. Языки ассемблера для различных аппаратных платформ несовместимы, хотя могут быть в целом подобны.
В русском языке может именоваться просто «ассемблером» (типичны выражения типа «писать программу на ассемблере»), что, строго говоря, неверно, так как ассемблером именуется утилита трансляции программы с языка ассемблера в машинный код компьютера."

Как сообщил мне один из упомянутых выше специалистов по прошивке, субаровские программы написаны на языке "С".

Когда вы подойдёте к необходимости общаться по проводам с авто, то вам потребуется установить себе на комп язык Ява. Это язык высокого уровня. Если язык "С" указывает машине, что надо совершить, то Ява выступает в качестве надстройки, переводчика, который указвает, что надо получить. Иногда говорят, что Ява, это виртуальный компьютер на вашем компьютере, который тормозит быстродействие, но учит ваш комп делать, то, что он не умеет в принципе )))

Существует ещё язык Ява скрипт, который продвигается энтузиастами как некоммерческий проект для частного пользователя без лицензии.

Так зачем нужна такая обуза для вашего компа ? Для того, что бы победить главный недостаток низкоуровневых языков — привязку к платформе. Высокоуровневые языки работают практически с любым железом.

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

Цитата из Вики —
"Дизассемблер (от англ. disassembler [ˌdɪsəˈsɛmblə®]) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера."

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

Теперь переходим к самой полезной части. Какие приборы и программы нам полезны

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

Мы будем работать с данными в режиме оф-лайн.

Я разделил бы их на 2 группы:
1 Ленивый уровень.
2 Пытливый уровень.

Что можно сказать о первой группе ?

Самые удобные приборы и программы это те, которые позволяют нам всё время косится на интересные нам параметры в поездке и не требуют никаких усилий.

Мне в своё время, несказанно повезло и Андрей taurus-13
установил мне для испытаний один из первых своих БК. На фото его экран.

Можно вывести много данных. Для этого прибор надо соединить с OBD разъёмом у себя в авто. Грубо говоря, вилку БК воткнуть в розетку автомобиля ))) А если не лень, то кинув к мотору несколько проводов, можно установить датчики, которых нет в авто и контролировать параметры, которых нет в авто.

Нечто подобное, параллельно создал Евгений addelectronics

Называется прибор Медуза www.drive2.ru/c/458325650676192716/
Пожалуй, он покруче будет, тк создавался для серьёзных целей.

Но, народ побаивается таких мощных средств и идёт более простым путём. Это прибор ELM 327 Стоит недорого, втыкается опят же в OBD разъём авто. И передаёт много данных через блюпуп на смартфон или магнитолу с Андроидом. И посматривай себе на нужные параметры.

Я долгое время, гнобил в своём сознании этот прибор.
Невозможно к нему подключить дополнительные датчики и это фатальный прокол ((

Невозможно им прошить блок управления авто. И совсем было я этот прибор загнобил, но тут, из кустов появился огромный рояль, в виде моего учителя Андрея avsem
который, изменил моё мнение одним фото.
Но, об этом позже.

А пока поговорим о второй группе. О пытливой.

На фото вы видите набор юного старпера диагноста прошивальшика в моём лице.

Обычно, ЕЛМ покупают из-за того, что дешево, сердито, богато выглядит ))
Елм стоит условно 1000 рублей, смартфон стоит от 6000 р, андроид балалайка от 16 000 р. Если всё покупать новыми.

Но, посмотрим сколько денег вам потребуется, что бы стать крутым профи.
Ноутбук мне знакомые подобрали на свалке ))) Починка вышла в 1000 рублей, на удивление работает как танк и даже аккумуляторы в строю. Сейчас есть мысль купить на Али блок питания для ноута в прикуриватель за 600 р. Что бы не очковать во время прошивки.

Шнур чёрного цвета это К-лайн адаптер VAG-COM 409.1 на чипе FTDI. Марка чипа важна ! Он позволяет ноутбуку считывать информацию с авто. Снимать параметры мотора в движении, так называемые логи.

Те шнурок по К-линии (один простой провод) передаёт данные с OBD разъёма вашего авто в ноутбук. Самый простой шнурок на Али стоит 300 р. Но, лучше взять за 1000 р, он более надёжно выходит на связь с ноутом. С помощью этого шнурка можно прошивать мозги старых Субар, у которых нет CAN шины.

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

На ноуте лежит прозрачный блок с серым проводом. Это устройство называется Open Port. Разработан американской компанией для работы с мозгами автомобилей Субару и Мицубиси.

Первые версии прибора Опен Порт до версии 1.3 позволяют читать логи и прошивать мозги машин без CAN шины. Для свежих моделей с CAN шиной создана версия 2.0. Опен Порт заточен для работы с программой EcuFlash.

Версия 2.0 позволяет снимать логи и шить все модельные года Субар. За исключением самых старых. Оригинальный прибор продаётся в разных комплектациях. Полная комплектация сейчас стоит около 14 000 р ((( Если я куплю такой прибор, то дети мои умрут с голода (((

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

Этот момент попытался обойти некто Казимир. Он стал заливать в китайский процессор белые ключи. и продавать прибор под именем Кази за 3500 р. Они тоже горели, как танки на Курской дуге (((

Поэтому, я сильно удивился, когда Юра yura2507
посоветовал мне купить китайский Опен Порт за 1000 р. "Бери, бери", -уверенно написал он мне. "Этот — верняк работать будет." Потом он помолчал и дописал: " Сколько проработает, потом расскажешь" )))))
Как пишут тинэйджеры — LOL )))))

Прибор принесли домой через пару дней после заказа на Али. Они есть на складах в России. Но, при покупке надо помнить 2 вещи.

1 Китайцы делают 2 клона. Надо брать полностью прозрачный прибор с золотыми контактами.
Почему, почитайте пожалуйста здесь — www.drive2.ru/l/546625780235370643/

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

И один вечер. Рецепт переделки выложил наш коллега Драйвовчанин
ruparadox

Подробности прочитайте пожалуйста, в его дневнике — www.drive2.ru/l/546040015415673901/ вместе с комментариями.

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

Итого всех затрат на серьёзную работу с логами и прошивкой — 3000 р )))

Теперь кратко о том, что собственно, я считаю нужным мониторить и менять.

Я провёл небольшой опрос владельцев ЕЛМ327. Оказывается, владельцам не только плевать на зольность моторного масла, но и на необходимые параметры мониторинга. Оно и понятно, проще писать о том какой багажник в авто и о расходе топлива. (((( О ништяках, тоже.

Мониторя несколько лет параметры авто в он-лайне. Я более всего обращал внимание на следующие параметры.

1 Температура масла. В пробках и на отжиге это просто печаль и беда ((( Оно греется и рубит следующий параметр.

2 Давление масла. При температуре масла 95 градусов в пробке, давка масла падает. На изношенных моторах до неприличных 0,3 бар, как мне пишут читатели ((( Это сокращает срок службы мотора. У меня опоры распредвалов самоуничтожились к пробегу 100 000 км (((
Установка маслорадиатора мало помогает, тк нужны изменения в прошивке.

3 IAM — Ignition Advance Multiplier.
Этот параметр учитывается при расчёте угла зажигания. В 16 разрядных блоках управления мотором он меняется от 0 до 16. В 32 разрядных блоках управления он меняется от 0 до 1.
Чем больше, тем лучше. Он уменьшается при детонации, при некачественном топливе и … от новой прошивки (((
При плохом топливе он падает, но при переходе на нормальный бенз растёт.

На данный момент я знаю 3 человек у которых IAM упал и стал колом навсегда.

У первого владельца неудачный свап. Моторы серии FB свежих годов из-за распредвалов не заменяют первые моторы серии FB. Сначала, мозги попробуют что то сделать, но потом прекратят попытки адаптироваться и отсохнут (((
У другого владельца, адаптация пропала и ИАМ отсох из-за изменений в прошивке.
У третьего комплекс проблем, усталость мотора, изменения в прошивке.

Никто из троих ничего бы не узнал, если бы не мониторил ситуацию. А с розовыми соплями описывал ощущения от счастливого владения и о переделке ламп в светодиоды ))) Машина едет.

Но, как выясняется ехать может лучше ))) Когда адаптация восстановится. В случае с прошивками, надо залить сток и аккуратно вносить нужные вам изменения.

4 Углы поворота муфт фазовращалок. При проблемах с ИАМ, при засорении фильтров в банджо болтах эти углы начинают усыхать, что должно насторожить владельца.

5 Ignition total timing — полный угол зажигания.
Формулу вычисления потырил из дневника Романа —
www.drive2.ru/l/722275/

Получается путем вычисления берется значение из таблицы Base Ignition Timing + Коррекция "Advance" + Прочие корректировки.

В свою очередь, коррекция адванс получается путем умножения значения из таблицы Timing Advance Maximum на (IAM/16) + feedback knock correction + fine learning knock correction

Тут есть вопросы к спецам. У меня он лайн мониторится параметр с названием Ignition timing При плавном движении он растёт, при тапке в пол падает. Значит это не Ignition total timing. А что тогда ? И знает ли кто нибудь адрес параметра Ignition total timing в 32 битной прошивке ?

6 Мониторится у меня параметр с названием Knock Correction.
Меняется от нуля до минус одного, но очень редко. . Какое полное название этого параметра ? Говорит о детонации, минусит при её появлении.
Знает ли кто то адрес параметров feedback knock correction + fine learning knock correction в 32 разрядной прошивке ?

Какие параметры и почему мониторите вы, в первую очередь на своих машинах ?
7 Learned Ignition Timing вижу изменение этого параметра на разгоне от 0 до минус 2, но очень редко. Говорит о детонации.

Итак, как мы можем всё это увидеть он-лайн в ленивом режиме без ноутбука и снятия логов ?

Можно увидеть в БК Андрей taurus-13
и Евгения addelectronics
если авторы пропишут адреса этих параметров в прошивке своих приборов. Поэтому и интересуюсь у вас адресами.

Неожиданно выяснилось по фото Андрея avsem
что ЕЛМ 327 иногда показывает наиболее редкий IAM

У него в ЕЛМ загружена прога Active obd, которая создавалась именно под субарики. Видимо, определения этой программы самые обширные, всё отображается само. Но, об определениях позже.

У популярной программы типа Torque часто используемой в ЕЛМ есть файл с названием PID. В этом файле содержатся определения с адресами параметров для разных блоков управления мотором. Можно настроить эти параметры. Подробности прочитайте, пожалуйста здесь

Дальше, рассказ пойдёт для пытливых автовладельцев.

Предположим, ноутбук и К-лайн адаптер у вас есть. И вы мечтаете как и я увидеть у себя в машине такую картину —

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

Как он умудряется в маленьком Питере хранить столько своих Субар, уму не постижимо )))

Что из программ логеров я пробовал ?

1 Саша А80 установил мне программу EcuExplorer
Я считаю, что для начала это лучший вариант. На фото скрины программы.

Если после включения проги и присоединения шнурка К-лайн адаптера в левом нижнем поле появилось название COM порта и шнурка, значит всё Ок.
Жмём кнопку Insert для начала записи логов. В верху появится название записываемого файла.

Для выключения опять жмём Инсерт. Потом сохранённый файл логов даёте посмотреть спецам, я им не являюсь (((

Александр, также установил мне прогу FreeSSM.

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

2 Программа EcuEdit позволяет снимать логи и читать править прошивку.
Мне она показалась интуитивно понятной. К этой программе, единственной есть в сети подробное описание на русском языке. Она умеет строить графики в динамике. Управление программой понятно по скринам.

ROM файлы это прошивки.

Но, к сожалению, эта программа проигрывает следующей.

3 RomRaider. Эту программу разрабатывают и продвигают энтузиасты.
Она единственная, из моих логеров отображает по умолчанию параметр IAM.

Вид программы на скрине. Начало записи логов зелёная кнопель, окончание красная.

Там вы, например можете бесплатно на сайте программы качнуть нужную прошивку —

Там же вы можете скачать определения для своей прошивки. Определения, иногда говорят дефинишины (по названию файла) содержат в себе адреса нужных параметров. Что позволяет программам логерам и программам работающим с прошивкой, эти параметры нам показывать. Вот к примеру, определения для прошивки моего мотора ФБ 20 —

как видите там есть определения для Romraider и для EcuFlash

Подробнее про определения можно почитать здесь —

Но, вот окончание его дневника мне не понравилось, тк при настройке горячие клавиши моего ноута не работали ((( Лучше бы автор описал все настройки через менюшки.

Программа развивается и программист, как я понял, может заточить её под себя. Тоже умеет строить красивые графики ))
Если бы было описание на русском языке, было бы здорово.

4 Существует ещё экзотический способ записи логов на карту микро SD вставленную в Опен Порт 2.0, подробности прочитайте, пожалуйста здесь —

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

Огромный массив информации создал у себя в дневниках Драйвовчанин Роман feelsti

Итак, с логами закончили. Переходим к прошивкам. Я сделаю отдельный дневник с инструкцией по прошивке через Опен Порт и EcuFlash/

А пока, предлагаю посмотреть мотивирующее видео, только не стоит так делать !

Не правда ли, всё просто ? Но, так можно умертвить мозги (((

Ставить опыты с 32 разрядными мозгами Denso не страшно.
Наши Драйвовчане хорошо описали восстановление окирпичинных мозгов серии 7055 и 7058

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

Но, мне кажется, проще купить китайский Опен Порт, переделать его, либо не лезть в интернет с ним и шить прямо на машине. Вам могут помочь гуру. Я им не являюсь ((( Скачивайте прогу для удалённого доступа —
www.teamviewer.com/ru/

И любой гуру, из любого города, всё сделает за вас ))) Прогресс, понимаешь, да !

И последнее, поскольку сил соединять буквы уже нет ((

Для чего нам нужна работа с прошивкой ? Приведу наиболее типичные примеры.

1 Пропала самоадаптация мозга.

2 Вы, как многие драйвовчане узнали, что для двигателя хорошо поставить в систему охлаждения термостат с более ранним открытием. Поставили, молодца. Но, вентииляторы у вас в моторе включаются под старый термостат ! И установка более холдного термостата не до конца позволила вам помочь мотору (((
Читаем подробности у Юры здесь — www.drive2.ru/l/514292991553176474/
скачиваем свою прошивку, правим несколько цифр, сохраняем и льём обратно.

3 Хотим построить долговечный мотор. Написали мне в личку, я вам рассказал, что нужно переделать в современных моторах, вы переделали.
Теперь в прошивке изменяем включение вентиляторов, как в дневнике Юры, я это буду делать к лету, максимально остужая вентиляторами масляный радиатор в пробках.
И поднимаем обороты ХХ хода только при нагреве масла выше 85 градусов, что бы давление масла в пробках было выше и мотор не выпиливал себя в стружку. Это я уже себе сделал, параметры на скрине.

Как видите табличек много. Это связано с тем что они вступают в работу при разном количестве энергопотребителей. Например, в машине с ГУР табличек меньше, чем в машине с ЭУР. В машине без кондиционера, ещё меньше )))

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

4 Вы хотите убрать у себя экологию, отключить ЕГР, перепрограмировать датчик обледенения дороги и тп.

Открываем соответствующий раздел в прошивке, ошибки, например. Меняем параметр нужной ошибки с "Включено" на "Выключено". Пример на скрине. Тем самым убираете ненужную иллюминацию на приборке.

Либо ставим точку в позиции "off" как в дневнике Романа, после удаления катализаторов —
www.drive2.ru/l/417396/#post

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

И последнее. В мозгаз двигателя — ECU, в процессоре ничего не хранится. В последних моделях процессоров несколько.

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

В мозгах есть так же 8-ми ногая микросхема EEPROM. Там записан код иммобилайзера. Этот код записан также и в других блоках машины. Если вы ставите сторонние мозги, сличение этих кодов не позволит авто работать. Вам нужно перезалить, код иммобилайзера в 8 -ми ногой микросхеме. Кто то её выпаивает и вставляет в программатор. Програмирует и впаивает обратно.

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

На этом пока всё. Продолжаю строить мотор мечты ФБ 25 с помойки )))) Изготавливаю вкладыши, поршня, правлю постели коленвала, навариваю металл )))

Засим прощаюсь, всем мира и радости !

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

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

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