ST-LINK + Eclipse на Ubuntu

J-LINK — замечательный отладчик, но что делать владельцам ST-LINK'а или STM32Discovery?
В одном из комментов к этой статье уважаемый evsi оставил ссылочку на проект, в состав которого входит GDB сервер, с названием st-util, и заточенный под ST-LINK. Подумаем как его интегрировать в Eclipse. Тем, кто устанавливает тулчейн с нуля, первые три пункта плана можно взять из той же статьи, а OpenOCD заменить на st-util…

Процесс установки предельно прост
$ mkdir ~/temp
$ cd ~/temp
$ sudo apt-get install git libusb-dev
$ git clone git://github.com/texane/stlink.git
$ cd stlink
$ make
$ sudo mkdir /opt/texane
$ sudo cp gdbserver/st-util /opt/texane
$ sudo cp 49-stlinkv1.rules /etc/udev/rules.d
$ sudo cp 49-stlinkv2.rules /etc/udev/rules.d
$ sudo udevadm control --reload-rules

Теперь — основная задача, прикрутить это к Eclipse.
В отличие от OpenOCD, st-util завершает свою работу сразу после того, как от него отключится GDB клиент. То есть, нам нужно запускать st-util перед началом каждой сессии прошивки и отладки. Для этого:
Меню Run->External Tools->External Tools Configurations…
и создадим запускалку для st-util. По умолчанию st-util слушает порт 4242, и если есть желание использовать другой порт, укажите его значение в параметрах: -p 3333


Далее жмём Apply, подключаем (заранее) ST-LINK с пациентом к компу и жмём Run, после чего получаем такую картину:


Замечание по поводу ST-LINK'а. У меня после подключения к компу отладчик «тупит» некоторое время, т.е. в списке $ lsusb устройство появляется сразу, а вот st-util (или утилитка test_usb, которая тоже входит в этот проект) может подключиться к отладчику только секунд через 20. Помнится в Windows такой ерунды не было. Не знаю, бага это или фича… Утилита test_usb, как я понял, служит для тестирования подключения отладчика к компу, отображая по этому поводу некоторую информацию. С пол-года назад я пытался заставить работать этот st-util, но тогда то ли лыжи не ехали, то ли я что-то не так делал, в общем, всё, чего я смог добиться, так это залить прошивку из консоли. И проект этот тогда лежал не на GIT'е, а совсем в другом месте. Но, как мы видим, проект развивается.

Теперь создадим конфигурацию для запуска GDB.
Сначала удалим из списка лишние варианты, чтобы они нам не мешались, хотя это и не обязательно.
Меню Window->Preferences->Run/Debug->Launching->Launch Configurations


Далее, Меню Run->Debug Configurations…



Создадим конфигурацию для запуска st-util + GDB.
Для того, чтобы запускать друг за другом разные конфигурации, в Eclipse предусмотрен вариант Launch Group:




Именно эта конфигурация и будет запускать процесс прошивки/отладки.

Создадим ещё одну конфигурацию для того, чтобы отлаживаться без лишней прошивки контроллера, если исходный код не менялся. Её можно продублировать от уже имеющейся, на вкладке Startup снять галки Load Image и Load Symbols, а в поле Initialization Commands добавить file Debug/Test.elf


Создадим конфигурацию для запуска:


Ещё можно удалить лишние кнопки с тулбара.
Меню Window->Customize Perspective…


Проверено в трёх вариантах: ST-LINK + пациент через JTAG, STM32Discovery (через SWD), и ST-LINK + пациент на Discovery через SWD.

Спасибо evsi за тему.
  • +6
  • 06 марта 2012, 16:27
  • reset

Комментарии (103)

RSS свернуть / развернуть
Спасибо за подробную инструкцию. Я бы точно не сподобился ее написать.
0
  • avatar
  • evsi
  • 06 марта 2012, 16:43
Вам спасибо. Я ведь, когда у меня с ST-LINK'ом на убунте не вышло, забросил его, и купил J-LINK, т.к. точно знал, что он будет работать. А теперь — вот!
0
Благодарю за статью. теперь можно и подумать об stm32.
0
Советую взять F4Discovery, там и камень жирнее (гораздо), и отладчик сразу /V2 (texane с ним работает) и стоят они, вобщем, копейки.
0
Если он 3-е семейство шьёт. м4 для меня будет уже много, сразу биглборды лучше брать или ембед платы.
0
ST-LINK-и с точки зрения функционала (в том числе поддержки разных серий) одинаковы, разница в используемом интерфейсе между софтом и самим ST-LINK-ом. Первый прикидывается SCSI девайсом, а второй, если я правильно помню, raw устройством. Под линухом второй однозначно удобнее (его никто не пытается определить как диск).
По поводу M4 (точнее, F2 и F4). В принципе, единственный их минус — отсутствие версии в 48-пиновом корпусе. Во всем остальном они, вобщем, более быстрая версия F107. Учитывая, что и цены на них вполне сравнимы, в новую разработку вполне логично взять F2 или F4. Я бы даже сказал так: если достаточно M3, то имеет смысл ставить F2, а если нужно еще более быстрый контроллер, то F4. С учетом их практически полной совместимости между собой, при необходимости можно перейти с F2 на F4 и наоборот.
0
Хорошая статья.
Щас +несколько линуксоидов ещё присядут на STM32, зачёт! ;)
0
Или нелинуксойды попытаются, наконец, под линкусом попробовать)
+1
яхуууу! наконец-то можно будет послать связку qemu+xp+keil/iar и нормально прогать без тысяч переключений в эмулятор
0
Хотя еще б CoLink бы прикрутить, чтоб с пинборда отлаживать под линухом
0
http://www.coocox.org/Forum/topic.php?id=437#post-1341
CooCox software can not run under Linux currently. We have no plan to support linux at present.
Правда это было год назад.
0
Вот ещё статейка
http://samueldotj.blogspot.com/2011/05/openocd-and-ngx-usb-arm-jtag.html
This JTAG is compatible with colink JTAG...
Надо пробовать через OpenOCD с FTDI интерфейсом, но у меня к сожалению нет CoLink'а.
0
О! Супер! Про Launch Group как то я и не сообразил сразу! Проверено на Mac OS X 10.7.3 — все нормально стало и завелось.
0
Супер! Попробуем.
Жаль дискавери не приехала еще, жду на следующей неделе.
0
Не вышло! не нашел библиотеки libusb-1.0. Как ее установить??
0
  • avatar
  • kos
  • 07 марта 2012, 12:41
дистрибутив какой?
0
c этим вроде разобрался… и даже нужную надпись получил. а вообще 11.04 вроде… Не помню. А в Линухе чайник совсем. где глянуть не знаю.
0
uname -a

Только «дистрибутив» это убунту, сусе, и тому подобное, а не номер версии.
0
УПС! Тогда это Убунту. Впрочем я так понял что Вы уже это поняли… :-)
0
Угу.
В принципе, действительно существенным моментом является только лишь «базирование» дистрибутива. Есть rpm-based (RedHat, SuSe) и deb-based (Debian и все его производные, включая Ubuntu). В зависимости от «базирования» могут несколько отличаться инструкции по установке софта. В остальном разница больше на вкус, чем в чем-то более существенном. Во всяком случае я много лет пользуюсь одновременно сусей и убунтой и не могу сказать, что есть какие-то кардинальные отличия.
0
А что делать если в Меню Run->Debug Configurations… у меня нет строчки с gdb-hardware debuging
0
  • avatar
  • kos
  • 07 марта 2012, 13:07
Во-первых, если проект существующий, ее там может не быть. Во-вторых, стоит убедиться, что поддержка Hardware Debugging. Как ее поставить есть в другой статье, линк на которую приведен в топике.
0
Спасибо вроде нашел. А такой дурацкий вопрос… у меня вообще-то стоит гелиос. У вас там все для индиго. Вообще-то отличия существеннные?? И насколько я понимаю я просто для гелиоса этот самый сервер скачиваю. Так?
0
Я раньше пробовал Helios, теперь поставил Indigo. Существенных различий не заметил.
0
Отличия не очень существенные, но если вы только начинаете с этим разбираться, лучше взять то, что указал автор статьи. Будет значительно проще разбираться если что-то пойдет не так.
0
смотрите предыдущую статью. Ставьте Eclipse для C/C++, в нём есть CDT plugin. Ещё нужен GNU ARM plugin, в котором и есть эта строчка.
0
Отладка не стартует…
говорит следующее Program file does not exist.
Это в случае если я стартую отладку.
Подключен Дикавери F4
0
  • avatar
  • kos
  • 07 марта 2012, 18:53
Это значит бинарник не скомпилился. Надо исследовать причину.
0
Стоит убедиться, что правильно прописан путь к gdb.
0
скорее — путь к gcc, т.к. program file это целевой файл, и его нет. Потому что не скомпилился. Или не найден gcc, или ошибки в исх. коде. Об этом будет информ-я в консоли Eclipse.
0
насколько я понимаю то речь идет о elf-файле… Если да то он есть Глазами я его в этой директории вижу. Старт самого отладчика происходит судя по всему нормально. Вообщем-то он выдают инфу о процессоре на целевой плате.
0
попробуйте запустить st-util прямо в консоли
0
А что это даст? st-util запускается насколько я понимаю. Я и отладчик вроде даже как запустил но для этого мне пришлось явно указать в конфигурации путь к проекту. Строчки C/C++ Application и Project в Debug Configuration.
Если верить статье то это не надо делать.
Ну и остались некоторые вопросы по самой отладке. в консоль сыпятся некоторые не сильно понятные сообщения. Это нормальная ситуация?
0
Да, там какой-то отладочный мусор. Можно подправить исходники и перекомпилить st-util. Главное чтобы отладчик пошагал по исходникам.
0
Это он делает. Но только в варианте с заливкой во флеш и когда я прописал абсолютные пути в тех строчках что я указал. Иначе ругается как сапожник. а почему не понятно.
0
В Debug Configuration на вкладке Main проект указывается относительно корня воркспейса, а путь к бинарнику — относительно корня проекта. Оно так по умолчанию. Я картинку добавил.
0
Тогда все честно! Именно так у меня и работает. Спасибо! Буду разбираться дальше. Вылезли непонятные глюки.
0
Прошивал st-util`ом свою stm32l-discovery и сбросил в середине прошивки. после этого st-util (и st-flash) отвечают, что flash-памяти у моей платки теперь нет:

2012-03-08T15:09:17 INFO src/stlink-common.c: SRAM size: 0x4000 bytes (16 KiB), Flash: 0 bytes (0 KiB) in pages of 256 bytes.

Подскажите, пожалуйста, есть ли возможность платку сбросить, чтобы заработала?
и есть ли способ заставить st-util шить хоть чуть чуть быстрее?
0
Можно попробовать прошить ее через последовательный загрузчик. Для этого надо взять вот эту тулзу code.google.com/p/stm32flash/, конвертор USB<->COM (пойдойдет любой, хоть на FT-ке, хоть на CP2102, я пользуюсь самодельным на CP2102 по схеме из даташита, но вывел только RX, TX и землю), подсоединяем его к «жертве» на ноги USART1 RX и TX и втыкаем переходник в USB. Затем на «жертву» подаем питание, ногу BOOT0 подтягиваем к питанию и нажимаем сброс. Затем с помощью тулзы заливаем прошивку. Прошивка должна быть в формате bin или ihex.
0
А не подскажите еще, можно ли как то смотреть значения в струтурах? например RCC
0
Кто-нибудь проверял это дело на STM32F4DISCOVERY?
Всё работает, но есть одни странный глюк, и не пойму в чём причина: не работает ни один цикл. Просто зависает на них и всё. При этом дебаггер не выдаёт значения счетчиков, хотя по коду идёт корректно.
Подозреваю, что глюк дебаггера, может настроил его не так?
0
оптимизацию у компилятора отключи
0
Разумеется.



Да не в ней дело, я даже инициализацию портов не могу запустить (GPIO_Init), т.к. там тоже цикл используется. Мистика какая-то…
0
Я уже не знаю, что делать…
i=2;
  do
  {
	  i++;
  } while (i<6);




Код просто зацикливается между этими двумя строками. Дебаггер показывает, что регистр r3 постоянно обнуляется при переходе на 0800047e
ldr/str что делают? Собственно эти строки непонятны…
0
Load/Store Register. Загрузить/выгрузить регистр из/в ОЗУ.
0
А, аналоги lds/sts у авр'ок. Ясно.
Что же тогда ему не хватает?
0
Гляньте, чему равен r7.Может код пишет/читает по адресам отличным от диапазона адресов ОЗУ. Я так понимаю, переменная «i» размещена в стеке? Указатель стека правильно инициализирован?
0
Кстати, о R7. Я правильно понимаю, что конструкция вида ldr r3, [r7, #12] означает «загрузить в R3 слово по адресу R7+12»?
0
«загрузить в R3 слово по адресу R7+12»
Да, именно так.
0
В R7 что-то длинное, возможно адрес. Но в данном куске он вроде ни где не изменяется.
Я так понимаю, переменная «i» размещена в стеке?
Зачем? На сколько понял, она в R3.
Указатель стека правильно инициализирован?
А хрен его знает. Я впервые имею дело с STM32, и такая трабла. Неделю дискавери как приехала, а даже светодиод не зажег.
Короче startup-код выполняется, но вызов SystemInit() я закомментил, т.к. там тоже циклы используются, соответственно всё виснет.
0
Зачем? На сколько понял, она в R3.
Нет. В R3 она загружается для работы — ARM'ы работают только с регистрами. А хранится по адресу [R7+12].
0
08000478:   mov.w r3, #2
0800047c:   str r3, [r7, #12]
23             i++;
0800047e:   ldr r3, [r7, #12]
08000480:   add.w r3, r3, #1
08000484:   str r3, [r7, #12]
24          } while (i<6);
08000486:   ldr r3, [r7, #12]
08000488:   cmp r3, #5
0800048a:   ble.n 0x800047e <main+18>
0
остальные регистры покажи. попробуй интереса ради использовать глобальную переменную.
0
Глобальную попробую (вечером, сейчас на работе).
Собственно ассемблеровский код верен, как понимаю.
В R3 кладём двойку
Пихаем R3 в память
Достаём R3 обратно
Прибавляем к нему единицу
Пихаем опять R3 в память
Опять достаём
Сравниваем с пятёркой
Не равно — в начало

Так вот при сравнении R3 уже ноль!
Единственное, что кажется логичным — действительно память readonly или что-то типа этого, т.е. пихает регистр не туда, куда надо.
0
да, в целом нормально (для отключенной оптимизации). хотя 0 в R3 должен появиться после ldr r3, [r7, #12]
0
Да, больше ему негде появиться.

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

Еще я проверил настройки компилятора — процессор cortex-m4 (пробовал и m3, всё аналогично), Thumb, остальные опции стандартны. Пробовал включить оптимизацию, но тут он вообще бОльшую часть кода выкидывает как ненужную…
0
ldr — load, чтение из памяти
str — store, запись в память

переменная i где и как объявлена?
0
да просто int i перед циклом.
0
вот. попробуй глобальную переменную в этом цикле использовать
0
Судя по коду — скорее volatile int i.
А вообще код правильный. Может в самом деле сегмент RAM не туда отмаплен? Настройки линкера неправильные, например.
Опять же проверь, чтобы адрес в R7 указывал в область ОЗУ.
0
R7 конечно проверю.
Опа… а вот код линкера я взял с проекта из примеров, может он неверно трактоваться тем-же GCC? Когда проект собрался без ошибок, я как-то и забил на него, мол компилится — значит подошел.
0
Итак, вот из даташита:



Вот из скрипта линкера:

MEMORY
{
  FLASH   (rx)  : ORIGIN = 0x08000000, LENGTH = 1024K
  RAM     (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
}


Правильно понимаю, что адрес в R7 должен начинаться с 2xxx xxxx?
0
Правильно понимаю, что адрес в R7 должен начинаться с 2xxx xxxx?
Да, совершенно верно. Значение R7 (вернее R7 + 12) должно быть в диапазоне 0x20000000 — 0x2001FFFF
0
Хрен там!

0
Ну точно! Дело было в линкере!
Заменил скрипт на другой, и всё пошло как по маслу. Не знаю, откуда я тот откопал, но точно с сайта ST и точно в заголовке (в комметах) был STM32F407.

Короче сейчас и SystemInit() заработал, и соответственно тактовый генератор стал настраиваться, при чём всё реально работает и настраивается!

Супер. Наконец-то я её запустил!
0
**  File        : stm32f4xx_flash_offset.ld
**
**  Abstract    : Linker script for STM32F407VG Device with
**                1024KByte FLASH, 192KByte RAM


Тот, что был Разница с тем, что есть очевидна, хотя заголовки почти одинаковы.
0
Эммм… господа, установил убунту и делаю все по данному мануалу,
однако при попытке собрать исполняемый файл st-link, консоль выдает:

usr: ~/temp/stlink$ make 
make: *** Не заданы цели и не найден make-файл.  Останов.
usr: ~/temp/stlink$ make -b Makefile.am
make: Цель `Makefile.am' не требует выполнения команд.


как быть?
0
запустить ./autogen.sh, затем ./configure, make, sudo make install.
0
У Вас выполняются данные команды?
0

usr:~/temp/stlink$ sudo sh ./autogen.sh
./autogen.sh: 2: autoreconf: not found
0
Транскрипт всех команд (кроме инстолла):
(сорри, чуток подрезал, движок сайта ругается)

syevtushenko@lion-ubuntu:~/temp$ git clone https://github.com/texane/stlink.git
Cloning into stlink...
remote: Counting objects: 3687, done.
remote: Compressing objects: 100% (1256/1256), done.
remote: Total 3687 (delta 2379), reused 3635 (delta 2345)
Receiving objects: 100% (3687/3687), 12.65 MiB | 870 KiB/s, done.
Resolving deltas: 100% (2379/2379), done.
syevtushenko@lion-ubuntu:~/temp$ cd stlink/
syevtushenko@lion-ubuntu:~/temp/stlink$ ./autogen.sh 
autoreconf: Entering directory `.'
...(cut-cut-cut)...
autoreconf: Leaving directory `.'
syevtushenko@lion-ubuntu:~/temp/stlink$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
...(cut-cut-cut)...
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
syevtushenko@lion-ubuntu:~/temp/stlink$ make
...(cut-cut-cut)...
gcc  -g -O2 -I/usr/include/libusb-1.0     -o st-util gdbserver/st_util-gdb-remote.o gdbserver/st_util-gdb-server.o mingw/st_util-mingw.o libstlink.a -lusb-1.0  
syevtushenko@lion-ubuntu:~/temp/stlink$ 
0
Благодарю)) Вы волшебник))
0
Неа, я только учусь. Всю жизнь :)
0
статья устарела, теперь st-link собирается по другому…
0
Сейчас пересобираю. Я влинуксе нуб, но блин втыкаю чё он от меня хочет. Вроде собирается.


sudo apt-get install git libusb-dev
git clone git://github.com/texane/stlink.git
cd stlink
sh autogen.sh 
./configure
make
0
cd gdbserver
make
0
mkdir ~/temp
cd ~/temp
sudo apt-get install git libusb-dev
git clone git://github.com/texane/stlink.git
cd stlink
sh autogen.sh
./configure
make
sudo mkdir /opt/texane
cd gdbserver
make
sudo cp st-util /opt/texane
sudo cp 49-stlinkv1.rules /etc/udev/rules.d
sudo cp 49-stlinkv2.rules /etc/udev/rules.d
sudo udevadm control --reload-rules
0
Может быть некоторым начинающим линуксоидам поможет следующий совет. Если после команды
sh autogen.sh 

возникает ошибка
./autogen.sh: 2: autoreconf: not found

то необходимо установить
sudo apt-get install autoconf
0
чёт он не видит мой дискавери один хрен.
/opt/texane$ ./st-util
2012-11-04T00:23:30 WARN src/stlink-usb.c: Couldn't find any ST-Link/V2 devices
0
есле это VLDiscovery, то она ни разу не ST-LINK/V2, а просто ST-LINK. Там для этого случая надо ключик в комстроке указать.
0
и ключик этот
-1
0
все прекрасно видит, и без ключиков (подключена VL-discovery):
prana@valhalla:~$ st-util
2012-11-04T05:00:06 INFO src/stlink-common.c: Loading device parameters…
2012-11-04T05:00:06 INFO src/stlink-common.c: Device connected is: F1 Medium-density Value Line device, id 0x10016420
2012-11-04T05:00:06 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
Chip ID is 00000420, Core ID is 1ba01477.
KARL — should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...prana@valhalla:~$ st-util
2012-11-04T05:00:06 INFO src/stlink-common.c: Loading device parameters…
2012-11-04T05:00:06 INFO src/stlink-common.c: Device connected is: F1 Medium-density Value Line device, id 0x10016420
2012-11-04T05:00:06 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
Chip ID is 00000420, Core ID is 1ba01477.
KARL — should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242…
0
опс, 2 раза вставилось O__о
0
надо будет ковырнуть чё нибудь там тогда чтоли…
0
от рута попробуй сначала
0
на стм32ф0дискавери заработало вроде
0
Спасибо! Статья помогла запустить работу в Линуксе.

я бы еще посоветовал установить плагин Eclipse Embedded Systems Register View plugin, он позволяет смотреть регистры процессора
установка описана в конце статьи http://makesystem.net/?p=2146
0
У вас должен быть установлен automake, если его нет то sh autogen.sh не выполнится.
sudo apt-get install automake
mkdir ~/temp
cd ~/temp
sudo apt-get install git libusb-dev (или sudo apt-get install libusb-1.0-0-dev)
У вас должно установится libusb-1.0-0-dev а не libusb-config --version 0.1.12 как в моём случае. Иначе ./configure будет ругаться на старую версию lib-usb.
git clone git://github.com/texane/stlink.git
cd stlink
sh autogen.sh
./configure
make
sudo mkdir /opt/texane
cd gdbserver
make
sudo cp st-util /opt/texane
sudo cp 49-stlinkv1.rules /etc/udev/rules.d

49-stlinkv1.rules
# stm32 discovery boards, with onboard st/linkv1
# ie, STM32VL

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", \
    MODE:="0666", \
    SYMLINK+="stlinkv1_%n"

# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.

sudo cp 49-stlinkv2.rules /etc/udev/rules.d
49-stlinkv2.rules
# stm32 discovery boards, with onboard st/linkv2
# ie, STM32L, STM32F4.
# STM32VL has st/linkv1, which is quite different

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", \
    MODE:="0666", \
    SYMLINK+="stlinkv2_%n"

# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.

sudo udevadm control --reload-rules
0
а у меня ругается что есть ошибка в
./configure


...
./configure: line 4370: syntax error near unexpected token `USB,'
./configure: line 4370: `PKG_CHECK_MODULES(USB, libusb-1.0 >= 1.0.0,,'
0
Так, ребят, очередные грабли)) С каждым обновлением разные причем. Вот перешел на Kubuntu 12.10 x64 и не хотел стартовать arm-none-eabi-gdb, писал: «arm-none-eabi-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory». Знаю, libncurses есть у меня, но все равно не хочет. Вот где они лежали:
#locate libncurses.so
/lib/x86_64-linux-gnu/libncurses.so.5
/lib/x86_64-linux-gnu/libncurses.so.5.9

Все решилось установкой 32 битной версии этой либы:
sudo apt-get install lib32ncurses5
0
Уважаемые, а у кого-нибудь эта штука Halt из eclipse делает? :)
Ну, типа приостановка программы в том месте, в котором, собственно, выполняется на данный момент.
На брекпоинтах останавливается, а вот без них — никак, жму Halt, и ничего не происходит.
Вот нужно было определить, в каком месте программа зависает, пришлось искать винду с coocox :)
0
Прошу прощения, не Halt, а Suspend :)
Не работает, хоть убей… Уже и OpenOCD заюзал — так там вообще Suspend постоянно серая :\
0
Решил установкой последней версии Eclipse.
Та, на которой экспериментировал, была из стандартных убунтовских репов установлена.
0
Кстати, касаемо MicroXplorer. Он есть, как плагин для Eclipse, и, ИМХО, в таком виде даже удобней %) Умеет генерить код для инициализации периферии… Для тех, кто не плюется от STDPeriph %)
0
Начал только осваивать линукс
У меня после проделанных операций отсутствует gdbserver в корне, по этому
$ sudo cp gdbserver/st-util /opt/texane
$ sudo cp 49-stlinkv1.rules /etc/udev/rules.d
$ sudo cp 49-stlinkv2.rules /etc/udev/rules.d

я выполнить не могу в связи с отсутствием файлов/папок
Что делать?
0
А компиляция-то проходит успешно?
0
Да, без ошибок
Но если сделать
make test
, то есть ошибка (привожу вырезку):

-- Performing Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS
-- Performing Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS - Failed
-- Performing Test C_SUPPORTS_WSHORTEN_64_TO_32
-- Performing Test C_SUPPORTS_WSHORTEN_64_TO_32 - Failed
Test project /home/alexander/temp/stlink/build/Debug
    Start 1: usb
1/3 Test #1: usb ..............................   Passed    0.01 sec
    Start 2: sg
2/3 Test #2: sg ...............................   Passed    0.01 sec
    Start 3: flash
3/3 Test #3: flash ............................***Failed    0.00 sec
The following tests FAILED:
	  3 - flash (Failed)
Errors while running CTest
Makefile:149: ошибка выполнения рецепта для цели «test»
make[1]: *** [test] Ошибка 8
Makefile:35: ошибка выполнения рецепта для цели «test»
make: *** [test] Ошибка 2
0
Если без ошибок, то ищи, возможно оно куда-то в другое место собирает.
0
Эти папки есть только в
~/temp/stlink/src/gdbserver
~/temp/stlink/build/Debug/src/gdbserver
~/temp/stlink/build/Release/src/gdbserver
в последних двух есть ещё
CMakeFiles/st-util.dir
Какую из этих st-util копировать в /opt/texane?
Правила есть в
~/temp/stlink/etc/udev/rules.d
взять их оттуда?
0
Какую из этих st-util копировать в /opt/texane?
Я бы взял из Release. Насчет правил — хз.
0
st-util.dir переиминовать в st-util?
0
Понятия не имею. Я не вижу что у тебя там и я даже не пытался это собирать (собственно, у меня вообще винда).
0
Чего-то никак у меня. Теперь проекты не собираются, даже примеры
ошибка выполнения рецепта для цели «system/src/stm32f1-stdperiph/misc.o» subdir.mk /test/Debug/system/src/stm32f1-stdperiph line 24 C/C++ Problem
А там: @echo 'Building file: $<'
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.