ARM аccемблер / Хабр

ARM аccемблер / Хабр ОБД2

Что такое elm327

Название ELM327 знакомо многим автовладельцам. Это сканер или адаптер, подключенный к бортовому компьютеру автомобиля через разъем OBD-II. Полезное устройство используется для диагностики неисправностей, считывания показателей работы и устранения ошибок в ЭБУ (электронном блоке управления).

Основы синтаксиса arm ассемблера

Если вы уже работали с ассемблером, можете пропустить этот шаг. Я объясню всем, как работает этот язык. Программа на ассемблере состоит из инструкций. Инструкция выглядит следующим образом:

Что делает сканер elm327

В ELM327 включен ряд функций. Тем не менее, это в значительной степени зависит от версии адаптера, ЭБУ, а также диагностического программного обеспечения.

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

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

Введение

Итак, прежде всего, давайте рассмотрим, что такое ARM. Википедия дает такое определение:

Advanced RISC Machine, Acorn RISC Machine и Advanced RISC Machine – лицензированные 32-битные и 64-битные микропроцессорные ядра от компании ARM Limited. Они разрабатывают и продают ядра и инструменты для них (компиляторы, средства отладки и т.д.). исключительно, зарабатывая деньги за счет лицензирования архитектуры сторонним производителям.

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

R Mv7 теперь имеет три профиля: ‘A’ (приложение), ‘R’ (реальное время) и ‘M’ (микроконтроллер). Если вы хотите узнать историю этой технологии и другую информацию, загляните в Википедию или Интернет.

Каждый процессор ARM состоит из следующих блоков


Это не все составляющие ARM, но углубление в дебри построения процессоров не входит в тему данной статьи.

Внешний осмотр

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

Тип подключения

E LM327 поставляется в различных версиях с различными интерфейсами. К ним относятся Bluetooth, Wi-Fi и USB-адаптеры. Они отличаются не только возможностями подключения, но и совместимостью со смартфонами и компьютерами. В остальном функции идентичны.

  • Bluetooth – самые дешевые сканеры, которые работают только со смартфонами Android.
  • Wi-Fi – более дорогие версии, совместимые со смартфонами и компьютерами на базе Android и iOS.
  • USB – немного дешевле, чем сканеры с Wi-Fi. Они работают только с компьютерами, но отличаются надежностью связи.

Версия прошивки

В программное обеспечение адаптера постоянно вносятся обновления. Текущая версия на оригинальном ELM327 уже 2.2. Клоны, продающиеся в Китае, имеют прошивки 1.5 и 2.1. Как бы странно это ни казалось, но последняя версия хуже.

Это была прошивка версии 1.5 для чипа, который получили китайцы. Клонированные устройства, использующие эту прошивку, имеют оригинальное программное обеспечение ELM327. Позднее сканеры были обновлены до версии 2.1. Для удешевления производства китайцы убрали многие протоколы связи в прошивке 1.5. Кроме того, существуют обычные адаптеры с версией 1.5, которые продаются как 2.1.

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

  • ELM327 1.5 – старая, но оригинальная прошивка;
  • ELM327 2.1 – обрезанная оригинальная прошивка под более новую;
  • ELM327 2.1 – оригинальная прошивка под более новую, но неизмененную.

Очевидно, что стоит приобрести оригинальную прошивку версии 1.5. Обратитесь к этому продавцу, чтобы приобрести недорогую Bluetooth-версию ELM327.

Тип диагностического разъёма авто

Отечественные автомобили и автомобили до 2000 года выпуска часто имеют колодки диагностических разъемов других стандартов. Сканер не может быть подключен к ним напрямую. Используйте специальные адаптеры: с одной стороны, они имеют разъем, соответствующий конкретной модели автомобиля, а с другой – принимают стандарт OBD-II.

Автообновление приложения

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

Граф зависимостей

Введите elm: graph в командном окне и выберите Elm: Показать график зависимостей, чтобы просмотреть график зависимостей.

Запуск приложения

Откройте командное окно редактора (Ctrl-Space) и введите elm: reactor. Выберите elm: Просмотр текущего elm-файла в браузере (elm-reactor).

Код ошибки:  Расшифровка индикаторов приборной панели Volkswagen Passat B5

После этого встроенный веб-браузер должен запустить наше приложение. Когда вы увидите пустое окно браузера, обновите его содержимое, нажав Ctrl-R (после короткого ожидания). Должна появиться надпись Hello.

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

Имена регистров

Существует три типа имен регистра:

1.r0-r15

2.a1-a4

3.R4 – R11 (переменные регистры)

4.Sb и SB (статичный регистр, r9)

5.sl and SL (r10)

6.fp and FP (r11)

7.ip and IP (r12)

8.sp and SP (r13)

9.lr and LR (r14)

10.1.04 и 10.1.04 (счетчик программы, r15).

Инструкция elm 327

Руководство по настройке USB диагностического адаптера ELM 327 скачать

Инструкция по настройке диагностического адаптера ELM 327 WiFi с загрузкой программного обеспечения DashCommand

Если вы приобрели диагностический адаптер ELM 327, но у вас возникли проблемы с его настройкой, то здесь вы найдете инструкцию для ELM327 на русском языке. На нашем сайте есть инструкции для модификации elm327 следующими способами: USB, Bluetooth, Wi-Fi

Видео инструкция о том, как подключить elm327 Bluetooth

Сравнение между версиями Bluetooth 1.5 и 2.1 устройства elm327. Они обе имеют различия и почему возможно не подключиться к автомобилю.

Наши адаптеры elm327 Bluetooth

Для работы программы Torque с диагностическим адаптером ELM327 Bluetooth необходимо следующее:

1. Диагностический адаптер ELM 327 Bluetooth необходимо подключить к диагностическому разъему OBD II вашего автомобиля и включить зажигание.

2. Затем можно включить модуль Bluetooth на устройстве Android (телефоне или планшете).

настройка torque

3. В настройках мобильного устройства необходимо перейти в раздел беспроводных сетей Bluetooth и нажать на поиск нового оборудования для сопряжения. В окне поиска появятся новые устройства (обычно это “CHX”, “OBDII”, “CBT”, “Vgate” и т.д.) После этого можно выбрать сопряжение с устройством (потребуется пароль из инструкции к адаптеру, который обычно составляет 1234,0000,1111,9999,6789).

настройка torque

4. После этого запустите программу Torque.

5. Перейдите к пункту “настройки” в меню программы.

настройка torque

6. В разделе “Настройки адаптера OBD2 / Выбор устройства Bluetooth” выберите из списка используемый адаптер ELM 327 Bluetooth (имеет “CHX”, “OBDII”, “CBT”, “Vgate” и т.д.).

 

7. После нажатия на значок “Состояние адаптера” вы должны увидеть зеленые галочки на первых трех элементах в списке.

8. В пункте “Профили автомобиля” (находится в том же меню, что и “Настройки”) можно также выбрать протокол вручную.

9. После этого можно приступать к диагностике автомобиля!

Как выбрать elm327

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

Как подключиться к авто

В инструкциях обычно подробно описана точная процедура установки.

Как пользоваться сканером elm327

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

Как проверить сканер elm327

При покупке адаптера ELM327 убедитесь, что он имеет версию 1.5. Важно проверить, имеет ли сканер на AliExpress чип PIC18F25K80, и подчеркнуть, что вы продиагностируете сканер с помощью специального программного обеспечения и откроете спор в случае возникновения проблем.

Конвейерное исполнение (pipeline execution)

Начиная с ARM8, реализован 5-ступенчатый конвейер. Для примера рассмотрим простой конвейер на базе процессора ARM7TDMI. Выполнение инструкции состоит из трех этапов:

Фаза выборки (F)В этой фазе инструкции поступают из оперативной памяти в конвейер процессора.2 Фаза декодирования (D)Инструкции декодируются и распознается их тип.3 Фаза выполнения (E)Данные поступают в ALU, выполняются и полученное значение записывается в определенный регистр.

Однако следует учитывать, что некоторые инструкции используют более одного цикла выполнения, например. load(LDR) или store. Этот шаг (E) делится на шаги (E1, E2, E3). ).

Обзор автомобильного obd2-сканера kuulaa elm32 (kl-dw006): он работает, и меня это расстроило / автомобили и другие средства передвижения и аксессуары / ixbt live

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

Но давайте по порядку.

Во время очередной распродажи я нашел купон на беспроводной автомобильный сканер KUULAA ELM32. Цена – 8 баксов. Поэтому я решил купить его.

ARM аccемблер / Хабр

Вот описание прибора:

  • Модель: KL-DW006
  • Версия Bluetooth: 4.0
  • Рабочее напряжение: 12 В
  • Рабочий ток: 32 мА
  • Рабочая температура: -40 ~ 80 ℃
  • Температура хранения: -30 ~ 80 ℃
  • Главная схема: mm32l073

Поддерживаемые протоколы :

  • SAE J1850 PWM (41.6 Kbaud)
  • SAE J1850 VPD (10.4 Kbaud)
  • ISO 9141-2(5 baud init,10.4 Kbaud)
  • ISO 14230-4 KWP (5 baud init,10.4 Kbaud)
  • ISO 14230-4 KWP (fast init,10.4 Kbaud)
  • ISO 15765-4 CAN (11bit ID,500 Kbaud)
  • ISO 15765-4 CAN (29bit ID,500 Kbaud)
  • ISO 15765-4 CAN (11bit ID,250 Kbaud)
  • ISO 15765-4 CAN (29bit ID,250 Kbaud)

Совместимость программного обеспечения:

  • Windows: ScanMaster-ELM, ScanTool.net, PCMSCAN и т. д.
  • Android: Torque, DashCommand, OBD Car Doctor, Auto Doctor, Mini OBDII, EOBD и т. д.
Код ошибки:  Мемориал найти солдата Великой Отечественной войны по фамилии

Функции утилиты:

Этот перевод на английском, потому что русский перевод в google ужасен.

До доставки, которая была из Китая, прошло около 20 дней. После получения небольшой посылки на почте внутри оказалась коробка со сканером:

ARM аccемблер / Хабр
ARM аccемблер / Хабр

Комплект поставки прост. Сканер на английском языке, а также инструкция:

ARM аccемблер / Хабр
ARM аccемблер / Хабр

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

ARM аccемблер / Хабр
ARM аccемблер / Хабр
ARM аccемблер / Хабр
ARM аccемблер / Хабр

На самом деле, больше нечего сказать о его внешнем виде. Поэтому я подключаю его к разъему OBD моего автомобиля. У меня Mazda MPV, и разъем находится под рулевой колонкой, утопленный за обшивкой.

ARM аccемблер / Хабр

Теперь вы должны загрузить нужное приложение на свой телефон. Torque – это приложение, которое рекомендуют многие. Доступны как полнофункциональная платная, так и урезанная Lite-версия.

Однако у этой программы много негативных отзывов, поэтому я решил попробовать другую. Infocar

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

ARM аccемблер / Хабр

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

ARM аccемблер / Хабр

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

ARM аccемблер / Хабр

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

ARM аccемблер / Хабр
ARM аccемблер / Хабр
ARM аccемблер / Хабр
ARM аccемблер / Хабр

В основном, основной проблемой является лямбда-зонд и некоторые датчики. Программа автоматической трансмиссии, однако, тоже показала некоторые ошибки. Буду разбираться. Из самой программы можно определить, что означает код ошибки, и это действительно удобно. Нажав кнопку “Поиск дополнительной информации”, вы перенаправляетесь в браузер, который ищет код ошибки и марку автомобиля.

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

ARM аccемблер / Хабр
ARM аccемблер / Хабр
ARM аccемблер / Хабр

Но, насколько я понимаю, это не важно. Самое главное, что за 8 баксов, которые, по сути, являются стоимостью одной поездки в сервис автосканера, я могу иметь свой собственный. Вот чему я рад. В своем автомобиле я могу, например, хоть два раза в день проверять наличие ошибок и сбрасывать их. Однако пропускать ошибки – не лучший вариант, потому что нужно не только скрывать ошибки, но и устранять причины. Скорее всего, я так и сделаю в ближайшем будущем. Благодаря сканеру я знаю, что искать и где копать. При этом он показывает реальные данные автомобиля и работает. Поэтому я могу рекомендовать его к покупке.

KUULAA ELM327 V1.5 OBD2 Scanner

Кстати, сейчас, когда он продается, он также немного дешевле, чем в обычные дни, благодаря купону на странице заказа -1,96$.

Открываем проект в light table

Теперь вы можете открыть проект в браузере. Для этого запустите сам редактор (в Linux команда light, если папка Light Table сохранена в PATH) и перейдите в File/Open folder, выберите соответствующую папку проекта.

Переменные и костанты

Переменные и константы могут быть использованы в ассемблере ARM, как и в любом (почти) другом языке кодирования. Эти типы можно разделить на:

Числовые переменные инициализированы следующим образом:

A SETA 100; создает числовую переменную “a” со значением 100.


Строковые переменные:

Improb SETS “literal”; создает переменную improb со значением “literal”. Значение переменной не может превышать 5120 символов.

Эти логические переменные задаются значениями TRUE и FALSE соответственно.

Правим elm-package.json

Файл elm-package.json в проекте Elm играет ту же роль, что и package.json в проектах JavaScript.

После установки первого пакета в файле elm-package.json появляется следующее содержимое:

Примеры инструкций arm ассемблера

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

НазваниеСинтаксисПрименение
ADD (добавление)ADD r0, r1, r2r0 = r1 r2
SUB (вычитание)SUB r0, r1, r2r0 = r1 — r2
RSB (обратное вычитание)RSB r0, r1, #10r0 = 10 — r1
MUL (умножение)MUL r0, r1, r2r0 = r1 * r2
MOVMOV r0, r1r0 = r1
ORR( логическая операция)ORR r0, r1, r2r0 = r1 | r2
TEQTEQ r0, r1r0 == r1
LDR (загрузка)LDR r4, [r5]r4 = *r5
STRSTR r4, [r5]*r5 = r4
ADRADR r3, aa — переменная. r3 = &a

Приведем несколько простых примеров, демонстрирующих использование базовых инструкций. Прежде всего, нам нужен arm toolchain. Поскольку я работаю с Linux, я выбрал: frank.harvard.edu/~coldwell/toolchain (arm-unknown-linux-gnu toolchain).

Его установка подобна установке любой другой программы Linux. В моем случае (русская Fedora) мне потребовалось только установить rpm-пакеты с сайта. Давайте перейдем к написанию простого примера. (Он будет совершенно бесполезен, но главное, чтобы он работал). Мой код будет выглядеть следующим образом:


start:                       @ Необязательная строка, обозначающая начало программы
        mov   r0, #3         @ Грузим в регистр r0 значение 3
        mov   r1, #2         @ Делаем тоже самое с регистром r1, только теперь с значением 2
        add   r2, r1, r0     @ Складываем значения r0 и r1, ответ записываем в r2
        mul   r3, r1, r0     @ Умножаем значение регистра r1 на значение регистра r0, ответ записываем в r3
stop:   b stop               @ Строка завершения программы

Откомпилируйте программу в файл .bin:


/usr/arm/bin/arm-unknown-linux-gnu-as -o arm.o arm.s
/usr/arm/bin/arm-unknown-linux-gnu-ld -Ttext=0x0 -o arm.elf arm.o
/usr/arm/bin/arm-unknown-linux-gnu-objcopy -O binary arm.elf arm.bin

(код находится в файле arm.s, а инструментарий в моем случае находится в файле /usr/arm/bin/)

Код ошибки:  Check Engine – коды расшифровки ошибок – Изготовление авто ключей. Корректировка пробега. Прошивка SRS AirBAG

Вы получите arm.s (собственно код), arm.o, arm.elf и arm.bin (исполняемая программа). Для тестирования программы не требуется иметь собственное arm-устройство. Достаточно установить QEMU. Для справки:

QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ.

Включает эмуляцию процессоров Intel x86 и устройств ввода/вывода. Может эмулировать 80386, 80486, Pentium, Pentium Pro, AMD64 и другие x86-совместимые процессоры; PowerPC, ARM, MIPS, SPARC, SPARC64, m68k могут быть эмулированы только частично.

Работает на Syllable, FreeBSD, FreeDOS, Linux, Windows 9x, Windows 2000, Mac OS X, QNX, Android и др.

Итак, для эмуляции arm вам понадобится qemu-system-arm. Этот пакет включен в yum, поэтому пользователям Fedora не стоит заморачиваться и просто выполните команду:yum install qemu-system-arm

Следующим шагом будет запуск эмулятора ARM для запуска нашего файла arm.bin. Для этого создайте файл flash.bin, который является флэш-памятью для QEMU. Сделать это очень просто:


dd if=/dev/zero of=flash.bin bs=4096 count=4096
dd if=arm.bin of=flash.bin bs=4096 conv=notrunc


Теперь грузим QEMU с полученой flash памятью:


qemu-system-arm -M connex -pflash flash.bin -nographic -serial /dev/null

Выходные данные должны выглядеть следующим образом:

[anton@localhost ~]$ qemu-system-arm -M connex -pflash flash.bin -nographic -serial /dev/nullQEMU 0.15.1 monitor — type ‘help’ for more information(qemu)

Наша программа arm.bin должна была изменить значения четырех регистров, поэтому, чтобы проверить, правильно ли она работает, мы рассмотрим эти регистры. Это делается с помощью очень простой команды: info registersВывод покажет все 15 регистров ARM и четыре из них будут иметь измененные значения. Продолжайте 🙂 Значения регистров совпадают со значениями, ожидаемыми после выполнения программы:


(qemu) info registers
R00=00000003 R01=00000002 R02=00000005 R03=00000006
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=00000010
PSR=400001d3 -Z-- A svc32

P.S. В этой статье я попытался объяснить основы программирования на ассемблере ARM. Надеюсь, вам понравилось! Полученного результата будет достаточно, чтобы углубиться в тонкости языка и писать на нем программы. Если все пойдет хорошо, я буду писать больше о том, что узнаю сам. Я новичок в ассемблере, поэтому, пожалуйста, не вините меня за ошибки.

Проверка модуля

Необходимо открыть файл модуля, открыть командное окно, ввести elm: lint, а затем выбрать Lint selected file. Когда код будет проверен, проблемные места в нем будут выделены. При просмотре проблем необходимо сначала установить курсор на подчеркнутую область кода, а затем в командном окне набрать linter: show. Во всплывающем окне рядом с местом проблемы появится комментарий.

Проблема решается нажатием клавиши Enter или щелчком по соответствующей кнопке в окне.

Набрав linter: в командном окне, вы сможете увидеть другие функции этого инструмента.

Сборка проекта

Соберите (скомпилируйте) проект или отдельный модуль, открыв окно команд (Ctrl-Space), набрав elm: make и выбрав его из меню.

Это станет проблемой, когда вы впервые будете строить целый проект:

Откройте файл elm-package.json и измените его:

"make-info": {
  "main": "Main.elm",
  "out": "main.js"
}

В директории проекта выполните следующую команду:

elm make

Создание главного модуля

Например, мы поместим Main.elm в корень нашего проекта со следующим содержанием:

module Main exposing (main)

import Html exposing (text)

main = text "Hello"

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

Управление пакетами

Как я уже упоминал в начале, для управления пакетами существует команда elm package, но плагин Light Table также предлагает визуальный способ управления пакетами проекта. Откройте командное окно Elm и введите elm: package. Затем выберите Elm: Показать пакеты проекта.

Условное выполнение

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

MI – это отрицательное число.

PL – положительное право

AL – всегда следовать инструкциям


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

А теперь пришло время подумать.

Установка elm

Вы можете установить Elm в качестве пакета NPM:

npm install -g elm

Установка пакета html

Веб-приложение должно быть разработано с помощью пакета Elm html. Это можно сделать, перейдя в каталог проекта (который может быть пустым) и выполнив следующие команды:

elm package install elm-lang/html

Файл документации elm-package.json будет создан elm-package во время установки. Это весомый аргумент (тем более что плагин Light Table для Elm идентифицирует проект Elm по наличию этого файла). Затем нам будет предложено установить пакеты, необходимые для этого пакета.

Шаг 1. установка приложения для диагностики

Для подключения к ЭБУ машины используются различные программы. Пользователи Android, iOS и Windows могут загрузить как бесплатные, так и платные версии приложений. Сканер обычно уже оснащен необходимым для работы программным обеспечением. Установите его или одно из популярных приложений.

Оцените статью
OBD
Добавить комментарий

Adblock
detector