Pull to refresh

Основы работы отечественных МК 1986ВЕ1Т с болгарскими отладчиками OLIMEX ARM-USB-OCD-H. Часть 1 — Первый запуск

Reading time4 min
Views12K

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

  1. Подготовка среды разработки

    Хочется сказать, что у компании производителя есть свой форум и некая база знаний в которых можно найти достаточно много полезной информации. Покапавшись в этих "архивах" было принято решение проводить разработку в keil, так как, судя по "отзывам" в нее достаточно просто интегрировать Миландровские детища. Для изи-интеграции необходим software pack для Keil, найти его и инструкции по установке можно туц.

  2. Подтягивание драйверов

    Существует, написанный добрым человеком загрузчик UART – «1986BE1UARTWSD». Легко находится на просторах интернета в комплекте с дровами. Использовать его достаточно удобно и отказываться большого смысла нет. Для его корректной работы нужен драйвер.

    Будем использовать OpenOCD и, естественно, gcc-none-eabi-gdb.

    Для работы болгарина под OpenOCD нужно обновить драйвера. Поможет программа. Вкратце: Открыв программу «Zadig» в выпадающем списке нужно выбрать JTAG эмулятор и жмякнуть «Install Driver». Тоже самое необходимо провернуть для «Interface1».

  3. Создание первого проекта

    Система готова, можно приступать к работе. Создание hello worldпод 1986BE описывать не буду, хорошо описано туц. Так, собственно, и делаем.

    Настройка проекта в Keil (до пункта «Debug», так как использовать будем не очень-то нативный эмулятор) описана туц.

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

  4. Прошивка флеши

    Прошьем флешку готовой программой через UART загрузчик на примере отладочной платы от LDM-SYSTEM LDM-HELPER-K1986BE1QI.

    Подключаем USB к порту ПК и разъему X1 на отладке (usb разъем один – ошибиться будет трудно).

    Открываем программу «1986WE1WSD». В левом нижнем углу указываем корректный COM-порт, В поле “baud rate” ставим классические 115200, чекбоксы «Erase», «Program», «Verify» выставляем в true. С помощью кнопки “Browse…” находим новоиспеченный hex-файл прошивки.

    Программа для прошивки флеши МК 1986ВЕ
    Программа для прошивки флеши МК 1986ВЕ

    Подготовили ПК. Теперь необходимо подготовить контроллер. В даташите написано о «загрузочном» положении переключателя. Для отладки LDM-HELPER-K1986BE1QI это устанавливается с помощью физической кнопки «LOAD» на плате.

    На плате зажимаем кнопку «LAOD» и, не отпуская ее, нажимаем кнопку «PWROFF». После чего отжимаем “LOAD”. Плата готова к загрузке через UART.

    В программе «1986WE1WSD» жмем «Start» и видим следующие сообщения:

    «Синхронизация…ОК!»

    «baud rate 115200 OK!»

    «boot load…OK!»

    «Chip erase done!»

    «Program XXXX byte done!»

    «Verify done!»

    Программа прошита в отладку. Запустится по ресету или можно нажать «RUN» в программе «1986WE1WSD».

  5. Подтягивание отладчика

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

    Для начала подключим ARM-USB-OCD-H к 1986BE. Тут выводы на каждой плате свои, но, опять же, на отладке LDM-HELPER-K1986BE1QI – это разъем X5. С другой стороны подключаем ARM-USB-OCD-H к ПК.

    Подключение
    Подключение

    Запитываем плату.

    Запускаем OpenOCD: заходим в командную строку вводим путь до установленной программы openOCD (обычно в распакованном архиве/bin/openocd.exe) и с помощью флагов –f указываем путь до конфигурационных файлов. Нам понадобится «архив/scripts\interface\olimex-arm-usb-ocd-h.cfg» и «архив/scripts\target\1986ве1т.cfg».

    Для того, чтобы хоть немного облегчить себе жизнь можно создать bat-ник для старта OpenOcd по типу

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :: Старт OpenOcd. Подключение отладочного интерфейса

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :: Кодировка для норм понимания имени файла "1986ве1т.cfg"

    chcp 65001

    :: Путь до программы openOcd

    set OPEN_OCD_PATH="C:\Users\ASePetrov\Desktop\OpenOCD-OLIMEX-WINDOWS\openocd-0.9.0-rc1\bin\openocd.exe"

    :: Путь до используемого эмулятора (конф. openOcd)

    set INTERFACE_PATH="C:\Users\ASePetrov\Desktop\OpenOCD-OLIMEX-WINDOWS\openocd-0.9.0-rc1\scripts\interface\olimex-arm-usb-ocd-h.cfg"

    :: Путь до целевого камня (конф. openOcd)

    set TARGET_PATH="C:\Users\ASePetrov\Desktop\OpenOCD-OLIMEX-WINDOWS\openocd-0.9.0-rc1\scripts\target\1986ве1т.cfg"

    :: Стартуем!

    %OPEN_OCD_PATH% -f %INTERFACE_PATH% -f %TARGET_PATH%

    Видим примерно такое:

    Значит, что все хорошо и мы запустили OCD. Теперь подтягиваем отладчик.

    Снова открываем консоль и вводим:

    <PATH_GDB> <PATH_AXF>

    ,где <PATH_GDB> - путь до arm-none-eabi-gdb.exe,

    <PATH_AXF> - путь до исполняемого файла с выхода IDE Keil uVision (Обычно, в директории проекта/Objects/projName.axf)

    Результат примерно такой:

    Отлично, теперь можно выдавать команды для gdb.

    Сначала расскажем ему, куда смотреть:

    (gdb) target extended-remote localhost:3333

    “localhost:3333” – так как OpenOCD открывает telnet соединения, как ни удивительно, на локальной машине, на порту 3333.

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

    В консоли с openOCD также можно заметить новое подключение:

    Отлично, резетим проц:

    (gdb) monitor reset halt

    В итоге видим сообщения о том, что проц сброшен. Результат консоли gdb и openOCD, соответственно:

    Теперь можно загружать исполняемый файл:

    (gdb) load

    Вуаля! Загружены и готовы к работе! Ставим точку останова при входе в main()

    (gdb) b main

    И запускаем программу

    (gdb) c

Tags:
Hubs:
+19
Comments14

Articles

Change theme settings