|
Информационный портал технической поддержки Центра проектирования интегральных микросхем |
gcc --version
Если командная строка не вернула никакого результата, то необходимо установить стандартный пакет GNU Autotools (не будут загружаться имеющиеся модули, но загрузится компилятор GCC - по возможности установить требуется даже тем, у кого есть компилятор GCC, дабы избежать проблем с возможными зависимостями, которые не могут быть охвачены в рамках данной статьи). Сделать это можно при помощи следующей команды из фрагмента кода 2, выполнение команды производить от имени администратора:sudo apt-get install build-essential
Выполнение команды приведет к полной установке компилятора GCC со всеми зависимостями, которые представляют из себя множество библиотек для корректной работы. После этого можно вновь проверить наличие компилятора при помощи команды gcc --version и двигаться далее.sudo apt-get install git
Прежде, чем перейти к дальнейшим действиям, необходимо установить зависимости для OpenOCD. Дело в том, что первостепенно работа OpenOCD зависит от работы интерпретатора JIM-TCL. Также для процесса дальнейшей сборки необходимо доустановить, если это не сделано, следующие пакеты в соответствии с фрагментом кода 4 (часть из них входит в состав GNU Autotools, но лучше убедиться, что они есть в системе), выполнение команды производить от имени администратора:sudo apt-get install make
sudo apt-get install libtool
sudo apt-get install pkg-config
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install texinfo
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libhidapi-dev
sudo apt-get install libftdi-dev
sudo apt-get install libjaylink0
Если какие-то пакеты из установленного списка невозможно установить средствами инструментария apt из официальных репозиториев, необходимо проверить, что ссылки на официальные репозитории прописаны в системе Linux, а также выполнено обновление каталога пакетов, как минимум, для доступа к более новым версиям путем исполнения поочередно sudo apt-get update и sudo apt-get upgrade. В противном случае устанавливать недостающие пакеты средствами PPA-репозиториев, например, LaunchPad, но это может быть сопряжено с трудностями по установке всех необходимых зависимостей. Библиотека libusb-1.0-0-dev позволяет работать со всеми USB-программаторами (к таким относятся J-Link, ST-Link и пр. - здесь как раз и может потребоваться смена драйвера у программаторов средствами Zadig на работу с libusb, как это описывается в одной из статей по работе с К1986ВК025), библиотека libhidapi-dev позволяет работать по стандарту CMSIS-DAP (именно на этом стандарте построен один из программаторов производства компании Миландр), а библиотека libftdi-dev разрешает работать с продуктами Future Technology Devices International (FTDI-микросхемы - на основе FTDI выполнен встроенный в демонстрационную плату К1986ВК025 отладчик).
git clone https://github.com/openocd-org/openocd.git
cd openocdgit checkout -b openocd_mdr 9659a9b
./bootstrapgit submodule init
git submodule update
После этого репозиторий OpenOCD готов к сборке, однако, новых файлов в репозиторий не добавлялось, а значит, что если далее начать компилировать программу, то она соберется с текущими файлами и ни о какой дополнительной поддержке, например, микроконтроллеров MDR1206FI, MDR1206AFI, К1986ВК025 и К1986ВК01GI речи быть не может. Необходимо обратиться к архиву в конце статьи и любыми удобными средствами разместить в корневую папку с репозиторием OpenOCD файл openocd_mdr.patch. Это созданный патч на уровне работы репозиториев в Git, фактически, это текстовый файл, который содержит в себе исходные коды всех файлов и пути, куда их необходимо разместить в рамках репозитория. Активация патча производится следующей терминальной командой из фрагмента кода 9, при этом вызов команды должен быть из корневой папки с репозиторием:
Фрагмент кода 9 - Активация патча в рамках репозитория Git
git apply --verbose openocd_mdr.patch
Из статуса Git (git status) будет видно, что за файлы будут внедрены в репозиторий или изменены. Для читателей, которые не имеют возможности работать с Git в составе Linux (например, нет интернета для загрузки соответствующего пакета), в составе архива по отдельным папкам для микроконтроллеров расположены те же самые файлы, которые внедряются патчем openocd_mdr.patch. Их необходимо разместить в соответствующих директориях, прежде чем переходить к сборке программы.
После того, как все файлы были подготовлены, необходимо задать правила сборки для GNU Autotools при помощи GCC. Традиционно это делается вызовом команды ./configure из корневой папки с репозиторием. Эта команда устанавливает зависимости для всех исходных файлов в составе репозитория, где на выходе во всех папках с исходными данными будут располагаться файлы Makefile*, которые содержат в себе правила, с которыми необходимо производить компиляцию. При этом стандартные ключи регламентированы общим пакетом GNU, а их состав можно узнать при задании ./configure с ключом --help (к стандартным, например, относится то, для какого пути собирать данный пакет - традиционно /usr/local, то есть если ключ на изменение папки не будет задан, то установка будет произведена по этому пути).
Однако, OpenOCD для параметров сборки вводит новые директивы для ключа --enable, такие как: ftdi, jlink, ulink, stlink, usb-blaster, dummy, cmsis-dap и др. Из названий можно сделать вывод, что они отвечают за активацию работы исполняемого файла OpenOCD, который получится на выходе, с разными отладчиками. Произведем подготовку к сборке программы следующей командой, разрешив работу всех выше перечисленных программаторов при помощи ключа --enable - вызов согласно команде из фрагмента кода 10 (если возникают ошибки, можно произвести выполнение от имени администратора):
Фрагмент кода 10 - Установка параметров компиляции для OpenOCD
./configure --enable-ftdi --enable-jlink --enable-ulink --enable-stlink --enable-usb-blaster --enable-dummy --enable-cmsis-dap
Команда запустит подготовку к компиляции исходных файлов и установит все необходимые зависимости. Именно на этом этапе, если он не будет завершен до конца, всплывет факт отсутствия пакетов со всеми зависимостями, которые необходимо было установить из замечаний выше по статье (библиотеки libftdi-dev, libhidapi-dev, libusb-1.0-0-dev и др). По логам в терминале с указанием на ошибку можно будет понять, какого пакета или библиотеки недостаточно для дальнейшей установки. Однако, такой вариант развития событий маловероятен, а регламентированный список пакетов в рамках статьи должен покрывать процесс компиляции OpenOCD для работы со всеми распространенными типами отладчиков. В процессе успешной подготовки будут строки в терминале, указывающие на выход из процедуры.
Теперь, когда все зависимости для исходных файлов установлены, можно переходить к сборке исполняемого файла. Делается это программой make из состава GNU Autotools. Важно отметить, что проект OpenOCD достаточно большой, и его сборка может занять длительное время, однако, в параметрах make можно задать количество потоков (по одному на ядро процессора), в рамках которых производить сборку программы. Делается это при помощи ключа -j при выполнении make с указанием количества ядер для работы.
Произведем запуск сборки программы OpenOCD на восьми потоках в соответствии с командой из фрагмента кода 11 (если возникают ошибки, можно произвести выполнение от имени администратора):
Фрагмент кода 11 - Запуск сборки OpenOCD из исходных файлов
make -j 8
Если ошибок в ходе сборки зафиксировано не будет, то по пути ./src появится объектный файл openocd, который был получен при сборке из исходных файлов. Теперь необходимо завершить процесс правильной установки и, фактически, перенести этот исполняемый файл со всеми зависимыми файлами (в данном случае папки с конфигурациями) по адресам, которые были установлены правилами в файлах Makefile*. Делается это при помощи вызова следующей команды из фрагмента кода 12 от имени администратора:
Фрагмент кода 12 - Установка программы OpenOCD (1-й вариант)
sudo make install
После вызова этой программы в системе Linux будет доступен вызов программы OpenOCD для работы, однако, этот метод установки достаточно плох, поскольку он принудительно разместит файлы в рамках ОС, но не даст возможности открыто в системе при желании произвести удаление программы. Чтобы удалить программу, которая была установлена таким образом, необходимо обязательно открывать папку с местом сборки проекта (вполне может быть удалена в процессе работы), и уже оттуда вызывать следующую команду из фрагмента кода 13 от имени администратора:
Фрагмент кода 13 - Удаление программы OpenOCD (1-й вариант)
sudo make uninstallЧтобы этого избежать, после команды sudo make желательно прибегнуть к процессу создания пакета в рамках работы репозитория. Фактически, это файлы с расширением .exe для Windows, но в Ubuntu они имеют расширение .deb (в CentOS и других зависимых дистрибутивах по типу RedHat это .rpm). Пакеты готовятся по достаточно сложному алгоритму, например, так они готовятся на уровне работы Debian. Однако, погружаться в тонкости создания пакетов необязательно, можно прибегнуть к работе с удобным пакетом checkinstall, который делает все те же операции, но автоматически. Перед работой с данным пакетом необходимо его установить в соответствии с командой из фрагмента кода 14 , выполнение команды производить от имени администратора:
Фрагмент кода 14 - Запуск установки пакета checkinstall
sudo apt-get install checkinstallПосле этого в корневой папке с репозиторием OpenOCD (соответственно, до установки make install, то есть после сборки путем make) необходимо вызвать исполнение checkinstal с ключом -D (создание пакета .deb), как это приведено во фрагменте кода 15 - вызов обязательно от имени администратора:
Фрагмент кода 15 - Установка программы OpenOCD (2-й вариант)
sudo checkinstall -D
После этого необходимо следовать достаточно дружественным инструкциям и дойти до процесса сборки .deb пакета, который появится в корневой папке с репозиторием OpenOCD. В процессе сборки обязательно необходимо указать номер версии Вашего пакета. Полученный пакет устанавливается из стандартного графического менеджера пакетов и может в ходе работы быть удален также из этого менеджера.
Сборка исходных файлов OpenOCD под ОС Linux завершена. Теперь можно производить интеграцию в Eclipse и работать с микроконтроллерами не только компании Миландр, но и с любыми другими, поддержка которых официально заявлена.
# SEGGER JLINK USB DEVICE 1366:0101
BUS!="usb", ACTION!="add", SUBSYSTEM!=="usb_device", GOTO="kcontrol_rules_end"
SYSFS{idProduct}=="0101", SYSFS{idVendor}=="1366", MODE="664", GROUP="plugdev"
LABEL="kcontrol_rules_end"sudo adduser user plugdevsudo reboot
Настройка завершена.| Сайт: | https://support.milandr.ru |
| E-mail: | support@milandr.ru |
| Телефон: | +7 495 221-13-55 |