stlink. Установка

Чтобы установить stlink :

  • вы должны уметь устанавливать пакеты из репозиториев,
  • вы должны иметь установленный на компе пакет git или git-core,
  • вы должны уметь клонировать к себе на комп исходники проекта из репозитория,
  • вы должны уметь собирать из исходников программы,
  • вы должны уметь уметь копировать файлы в системные директории,
  • вы должны понимать, как работает udev,
  • ну или хотя бы суметь тупо выполнить написанное ниже


Но прежде всего, вам необходимо знать, что эта программа поддерживает несколько плат программаторов и отладочных плат со встроенным программатором. На этих платах установлен микроконтроллер, который транслирует команды с USB в JTAG. Эта микросхема вместе с ее окружением называется stlink. Причем на данный момент на рынке имеется две версии:

  1. STLINKv1, присутствует на платах STM32VL-discovery,
  2. STLINKv2, присутствует на плате STM32L-discovery и на плате STM32F4.

Версии отличаются на транспортном уровне:

  • STLINKv1 использует надстройку SCSI над USB для передачи команд,
  • STLINKv2 использует «сырые» (raw, необработанные) USB-команды.

Общие требования

Перед установкой stlink Вам нужно установить пару пакетов: libusb-1.0-0 и pkg-config.

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

$ sudo apt-get update
$ sudo apt-get install libusb-1.0-0 pkg-config

Возможно, вам понадобится также установить еще пакеты git git-core или libusb-dev.

Для Ubuntu еще понадобится установить пакет  libsgutils2-dev.

Если у вас STLINKv1

Не отчаивайтесь! Вообще говоря, эмуляция SCSI в STLINKv1 реализована довольно-таки криво. Поэтому лучше сразу сказать операционной системе, чтобы она полностью игнорировать ее. Таким образом, перед тем как воткнуть плату в USB разъем, выполните любое действие из следующих трех:

1. Выполните команду:

$ sudo modprobe -r usb-storage && sudo modprobe usb-storage quirks=483:3744:i

2. Добавьте строку «options usb-storage quirks=483:3744:i» в файл /etc/modprobe.conf и выполните команду:

$ sudo modprobe -r usb-storage && sudo modprobe usb-storage

3. Выполните команды:

$ sudo cp stlink_v1.modprobe.conf /etc/modprobe.d
$ sudo modprobe -r usb-storage && sudo modprobe usb-storage

Эти действия вам нужно выполнить после установки установки.

Если у вас STLINKv2

Танцы с бубном отменяются. Вам ничего делать не надо, всё и так будет работать.

Установка stlink

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

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

$ git clone git://github.com/texane/stlink.git

Если вы еще не устанавливали пакет git или git-core, то вам нужно сначала установить его, и только потом клонировать проект stlink. Как установить git, я уже писал в своем блоге. Поищите сами.

Итак, через несколько минут примерно 10 МБайт будут закачены в комп, и в директории, из которой вы выполнили команду клонирования, появится поддиректория проекта stlink. Заходим в нее.

$ cd stlink

Выполните команду ls и посмотрите, какие имеются файлы в проекте. Хорошей практикой считается открыть файл README и прочитать, что пишут разработчики. У меня включена синтаксическая подсветка и я сразу вижу, что в проекте имеется исполняемый файл autogen.sh. Да, точно! В файле README так и сказано — для сборки запустить файл autogen.sh.

Но в README также сказано, что нужно выполнить команду configure, но в директории нет такого файла. И я не вижу еще файла для сборки — Makefile. Это говорит о том, что они появятся в процессе сборки. Будем следить за составом файлов с помощью команды ls, а пока выполним команду:

$ ./autogen.sh

Вот, что мы получили после нее:

Появилось еще несколько исполняемых файлов, и среди них — файл configure. Отлично! Теперь, согласно README, запускаем конфигурирование проекта под конкретное железо нашего компа:

$ ./configure

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

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

На этот раз всё прошло удачно. Более того, в директории появился файл Makefile, читая который команда make произведет сборку программы. Не тормозим, скорее запускаем сборку:

$ make

Работа команды make сопровождается выбросом жутко огромного количества информации на экран. К счастью, в отличие от сборки тулчейна для ARM, которая «поливает» экран в течение часа, сборка stlink происходит достаточно быстро — всего несколько секунд.

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

Теперь нам надо проинсталлировать нашу прогу, точнее — их две (два модуля) — st-flash и st-util. Поскольку инсталляция будет производится в системные директории, куда простым юзерам запрещено что-либо писать, то мы должны выполнить установку с привилегиями root-а:

$ sudo make install

Ну вот и всё! Можно считать, что клонирование, сборка и установка пакета stlink произведена почти полностью и успешно.

Для доказательства, что команды st-flash и st-util доступны, давайте сменим директорий. Например, перейдем в начало домашнего директория (команда cd без каких-либо параметров), и там попробуем набрать три символа «st-» и нажать два раза на Tab. В результате этих действий у Вас должна появиться подсказка — список всех доступных для исполнения команд, которые начинаются на эти три символа. У вас так? Работает? У меня — да.

Но подождите расходиться, это еще не всё! Нам нужно еще скопировать пару файлов для того чтобы система сама могла автоматически «подхватывать» воткнутое в USB-разъем устройство и устанавливать его (— устройства) драйвер. Давайте вернемся в директорий, где мы только что были. Команда:

$ cd -

вернет нас в предыдущий директорий, откуда мы ушли. (Конечно, если вы к этому моменту успели походить по другим директориям, то вам придется вместо черточки «-» указать путь к директорию клона stlink.)

Так или иначе, нам нужно, находясь в этом директории, выполнить команду копирования двух файлов 49-stlinkv1.rules и 49-stlinkv2.rules. Но мы с вами не в Виндовсе для домохозяек. Мы это сделаем по-Джедайски одной командой:

$ sudo cp 49-stlinkv[12].rules /etc/udev/rules.d

Квадратные скобочки — это элемент регулярных выражений. С их помощью мы указываем, что для нашего шаблона подойдут все файлы с единичкой «1» и с двоечкой «2» в том месте, где стоят эти скобочки. Это на столько прикольно и мощно, что я не могу не отойти от не темы и не акцентировать на этом ваше внимание. Это Unix-way! Давайте еще раз повторим этот фокус, только без копирования файлов. Вместо копирования, мы воспользуемся командой ls. Попробуйте:

$ ls -l 49-stlinkv[12].rules

Вы видите, как оболочка (bash) расшифровала наш шаблон? И это только вершина айсберга! Это именно то, чего не понимают и за что ненавидят Линукс хомячки. Оставайтесь в Линуксе, и со временем вы еще не этому научитесь! А это так себе — цветочки.

Заметьте, копирование производиться в системный директорий, поэтому нам опять понадобится подняться на уровень root-а.

Ну вот, теперь точно — всё!

В следующий раз, напишу, как с помощью stlink портить отладочные платы STM32VLDISCOVERY.

Если вы готовы уже прямо сейчас стирать и записывать свои проги в отладочную плату, не забудьте выполнить подновление системы udev, чтобы изменения вступили в силу:

$ sudo udevadm control --reload-rules

Ну или по-Вендовому — перезагрузитесь.

Таким образом, udev создаст целую кучу устройств /dev/stlinkv1_XX.

Реклама

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s