Ubuntu + Eclipse + Code Sourcery + OpenOCD + j-link + ARM, или "Быстрый старт для сомневающихся"

Цель этой статьи — показать, что установка, наладка и «запуск в эксплуатацию» тулчейна для работы с ARM'ами довольно проста и занимает вместе с перекурами около получаса. Ключевое слово в названии — Ubuntu, или, вообще говоря, Linux. Большинство материала в сети рассчитано на аудиторию пользователей MS Windows, и перейти на Linux мешает, или пугает, отсутствие руководства, в котором был бы более-менее популярно описан процесс. Да, это немного сложнее, чем установка Keil+SEGGER, но зато потом, надеюсь, вы оцените преимущества работы в Linux.


Эта процедура проверена для Ubuntu 11.04 и Linux Mint 12.

Имеем:
с одной стороны — Linux,
с другой стороны — пациент с ARM мозгом + j-link brain surgery helper.

План действий:
1. Установка Code Sourcery G++ Lite for ARM EABI
2. Установка Eclipse и GNU ARM плагина
3. Настройка GNU ARM плагина
4. Установка OpenOCD
5. Заставить всё это работать
6. Прибраться

1. Установка Code Sourcery G++ Lite for ARM EABI
Можно браузером скачать инсталятор вот по этой ссылке, но мы выберем путь попроще. Поэтому откроем консоль…

$ cd ~
$ mkdir temp
$ cd temp
$ wget https://sourcery.mentor.com/sgpp/lite/arm/portal/package8734/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

После окончания загрузки распакуем полученный архив
$ tar xvf arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

Теперь
$ sudo mkdir /opt/codesourcery
$ sudo mv arm-2011.03 /opt/codesourcery

Добавитм путь к бинарникам Code Sorcery в переменную PATH
$ gedit ~/.profile
Добавим туда строчку
PATH=/opt/codesourcery/arm-2011.03/bin:$PATH
Чтобы изменения вступили в силу, нужно перелогиниться.

2. Установка Eclipse IDE for C/C++ Developers
Скачать можно браузером отсюда, но мы…
$ cd ~/temp
$ wget http://mirror.tspu.ru/eclipse/technology/epp/downloads/release/indigo/SR1/eclipse-cpp-indigo-SR1-incubation-linux-gtk.tar.gz

После окончания загрузки
$ tar xzvf eclipse-cpp-indigo-SR1-incubation-linux-gtk.tar.gz
$ sudo mv eclipse /opt

Теперь нужно в Eclipse добавить поддержку для GDB Hardware Debugging
$ /opt/eclipse/eclipse &

Меню Help->Install New Software…
В поле Work With добавляем
http://download.eclipse.org/tools/cdt/releases/indigo
жмём Enter и ставим вот эту галочку

Далее продолжаем пока не закончится установка, после чего выбираем Restart Now.

Тепер установим GNU ARM плагин.
Снова Меню Help->Install New Software…
В поле Work With добавляем
http://gnuarmeclipse.sourceforge.net/updates
и жмём Enter

Далее продолжаем пока не закончится установка, после чего выбираем Restart Now.

3. Настройка GNU ARM плагина
Cоздаём новый проект:
Меню File->New->C Project…
Выглядит это вот так

Сразу жмём Finish и получаем пустой проект для ARM'ов. Дальнейший путь зависит от того, с каким МК вы будете работать. Рассмотрим на примере горячо любимого народными массами, легендарного STM32, ибо я других не знаю. Итак, вы уже скачали последнюю версию библиотеки стандартной периферии с сайта STMicroelectronics. Нет? Тогда
$ cd ~/temp
$ wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip
$ unzip stm32f10x_stdperiph_lib.zip

Из всего этого нам нужны исходники для ядра и для периферии. Положим их в нужное место, например вот так:
$ mkdir ~/stm32
$ cp -R STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/* ~/stm32

Для решения минимальной задачи необходим скрипт для линкера. Его можно взять из какого-нибудь шаблона для Atollic TrueSTUDIO. Скопируем нужный файл в корень проекта:
$ cp STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template/TrueSTUDIO/STM3210E-EVAL/stm32_flash.ld ~/workspace/Test

и сообщим об этом линкеру
Меню Project->Properties->C/C++ Build->Settings->вкладка Tool Settings->ARM Sourcery Linux GCC C Linker->General
В поле Script File укажем путь к файлу

Теперь средствами Eclipse добавим в проект файл со startup-кодом. Возьмём нужный файл из какого-то примера для TrueSTUDIO
Меню File->Import…


Комментарий по поводу файла startup-кода. Во-первых, изза глюка в CDT плагине, нужно изменить расширение файла с .s на .S. Во вторых, в самом файле закомментируйте пару строчек.
/* Call the clock system intitialization function.*/
/*  bl  SystemInit <-- */
/* Call static constructors */
/*  bl __libc_init_array <--*/
/* Call the application's entry point.*/
	bl	main
	bx	lr
.size	Reset_Handler, .-Reset_Handler

Подробнее говорить не буду, т.к. это не входит в рамки нашей задачи.

Теперь добавим main.c
Меню File->New->Source File…

и наполним его минимальным смыслом

Теперь можно собрать проект. Жмём Ctrl-B и на этом пункт №3 будем считать завершённым.

4. Установка OpenOCD
Cоберём OpenOCD из исходников, добавив поддержку j-link, с которым и будем в дальнейшем сотрудничать.
$ cd ~/temp
$ sudo apt-get install libusb-dev
$ wget http://downloads.sourceforge.net/project/openocd/openocd/0.5.0/openocd-0.5.0.tar.bz2
$ tar xvf openocd-0.5.0.tar.bz2
$ cd openocd-0.5.0
$ ./configure --enable-jlink
$ make
$ sudo make install

Теперь j-link. Подключаем его к компу, и
$ lsusb



Надо разрешить системе работать с j-link'ом. Для этого создаём файлик .rules
$ sudo gedit /etc/udev/rules.d/45-jlink.rules

с содержимым
# 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"

добавляем текущего пользователя в группу plugdev, хотя он уже там должен быть
$ sudo adduser user plugdev

и перезагрузим систему
$ sudo reboot

Теперь создаём минимальный скрипт для OpenOCD
$ gedit ~/workspace/Test/openocd.cfg

с содержимым
telnet_port 4444
gdb_port 3333
source [find interface/jlink.cfg]
source [find target/stm32f1x.cfg]

Подключаем j-link к пациенту, подаем на пациента питание. Затем
$ cd ~/workspace/Test
$ openocd

Получаем такую картину


Подключаемся к OpenOCD по telnet, через порт 4444. Я использую PuTTY.

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

Тут мы плавно переходим к выполнению 5-го пункта нашего плана.

Откроем Eclipse. Вы уже добавили ярлычок на панель? Нет? Ну тогда…
$ /opt/eclipse/eclipse &

1) Запуск OpenOCD из Eclipse.
В сети можно найти немало рекоммендаций по этому поводу.
Я для себя сделал запуск OpenOCD через скрипт, в отдельном окне, т.к. выяснилось, что Eclipse почему-то не завершет процесс OpenOCD, который оно выполняет в своей консоли, а OpenOCD иногда нужно перезапускать.
$ gedit ~/workspace/Test/openocd.sh

Содержимое скрипта
#!/bin/bash
CFGNAME=`basename $1`
RUNCMD="openocd -f $CFGNAME"
cd `dirname $1`
xterm -fg green -bg black -geometry 100x24-0-0 -e $RUNCMD &

Права на запуск
$ sudo chmod 755 ~/workspace/Test/openocd.sh

Создадим конфигурацию для запуска OpenOCD сервера.
Меню Run->External Tools->External Tools Configurations…


2) Отладчик.
Создадим конфигурацию для запуска GDB.
Меню Run->Debug Configurations…





Теперь компилируем и запускаем…



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


6. Прибираемся
$ cd ~
$ rm -rf temp


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

Ссылочки:
http://www.ubuntu.com/
http://www.eclipse.org/
http://sourceforge.net/projects/gnuarmeclipse/
http://openocd.sourceforge.net/

  • +4
  • 20 февраля 2012, 13:48
  • reset

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

RSS свернуть / развернуть
Спасибо очень полезно! А вот как быть с ST-Link? Вот бы еще что знать… Ну и с OLIMEX до кучи… Не могу найти инфу… такую же толковую как эту.
0
  • avatar
  • kos
  • 20 февраля 2012, 14:31
Вам сюда: github.com/texane/stlink
Вместо OpenOCD просто запустить GDB server из комплекта texane/stlink и, собственно, все, никакой возни с конфигурацией OpenOCD.
0
Спасибо! Буду разбираться…
0
Спасибо за ссылочку, я не знал. Сдул пыль со своего ST-LINK'а, всё работает…
0
С OLIMEX всё так же просто. Достаточно заменить ID-шники в правиле для udev
ATTR{idVendor}=="15ba", ATTR{idProduct}=="0003"
а при запуске OpenOCD передать путь к конфигу олимексового отладчика
openocd -f arm-usb-ocd.cfg -f stm32f1x.cfg
Испытано на Gentoo.
0
спасибо! поэксперементирую в понедельник… а что там с драйверами?? или это уже все с Юниксе встроено так или иначе?
0
С драйверами на свежих ядрах проблем никаких (как минимум в 2.6.37 есть, более ранние не проверял) Это же старая добрая FT232. Набор конфигов на все случаи жизни идёт в комплекте с openocd. Не знаю, какой дистрибутив ты будешь использовать и что в нём по дефолту стоит, но на моём всё работает через libftdi (libftd2xx просто не пробовал).
0
Если в OLIMEX'е FTDI, то OpenOCD нужно пересобрать с его поддержкой, т.е.
$ sudo apt-get install libftdi1 libftdi-dev
./configure --enable-ft2232_libftdi

Кажется так
0
У меня немного проще вышло
$ USE=libftdi emerge openocd
0
Кстати, а какую строчку для сборки кросстула используете? Я пробовал тупо «crossdev --target arm», но что-то так не собирается, походу надо более хитрое шаманить.
0
на ubuntu crossdev нет, насколько знаю. Лично я использую ct-ng
0
а причём тут Ubuntu? На ней и emerge нет =)
0
Про шу прощения, про генту не заметил сразу )
0
для генту надо так crossdev -t arm-softfloat-linux-gnueabi --ex-gdb
Это в качестве примера.
0
надо
crossdev -t arm-none-eabi --ex-gdb
Но этого мало, надо еще подшаманить /usr/arm-none-eabi/etc/portage/make.conf чтобы тулчейн собрался с нужными опциями. Собраться-то он у меня собрался, и даже компилировал успешно, только прошитый код не работал. Я забил и скачал launchpad.net/gcc-arm-embedded
0
У меня завелся и с дефолтными опциями. У меня проц на арм920. Единственной что можно указать это еще флаг при компиляции своего проекта чтобы он под нужную версию ядра собирал.
0
eclipse можно поставить из репозитория, в ubuntu 11.10 и mint 12 она версии helios. а вот java-машину лучше поставить 1.7 с сайта oracle, субьективно eclipse на ней меньше тормозит.
0
кстати в минте bashrc есть, иначе бы терминал был не разукрашенный (сужу по Linux Mint 12 KDE RC)
0
еклипс после старта вообще-то сложно назвать тормозным, но да, машину лучше ставить 1.7
0
а через SWD кто-нибудь пробовал под линуксом? jtag у меня работает с openocd, но ног жалко (и разьем здоровый).
0
  • avatar
  • bzzz
  • 20 февраля 2012, 21:11
ARM JTAG разъём можно ужать до 2х5, а-ля AVR
c SWD буду разбираться на днях
0
потом отписывайся — очень интересно.
0
Я только SWD и пользуюсь. Собственно, кроме него в stlink, который на борту дискавери, и нету ничего.
0
под линуксом?
0
Естественно. Вот там выше я приводил линк на проект, в котором реализован gdb server и отдельная прошивалка под stlink/stlink/v2. Все писалось и заточено под линух. Прошивалка у меня с F4 не пошла, а gdb server — аж бегом. Правда, я им только как прошивалкой пользовался, прикрутить к еклипсу руки не доходили. Но, IMHO, самому еклипсу точно пофиг, лишь бы gdb server был.
0
супер, спасибо за ссылк. я клипсой не пользуюсь, привык к vim+make+gdb
0
А как насчет поддержки Кокоса? Есть варианты?
0
Я себе заказал CoLinkEx-Clone у DI, так что буду смотреть как его нормально заставить работать под Linux, когда придёт!
0
##### CoLink
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_layout «flyswatter»
0
гм. не уточните где прописывать?
0
так, куда писать разобрался, вот только OpenOCD не конфигурируется c ftdi…
0
мой openocd.cfg содержит
##############################
#
#  www.easyelectroniks.ru    
#     	PinBoard II 
#     ARM JTAG CoLink
# 	STM32F103xx
#
##############################

##### CoLink
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_layout "flyswatter"

#### STM32F103xx
source [find target/stm32f1x.cfg]

telnet_port 4444
gdb_port 3333

adapter_khz 1000


вызов
openocd -f openocd.cfg -c "init" 


ссылка на пост
0
Спасибо, как-то я этот топик прозевал…
0
не могли бы Вы графически описать архитектуру всего этого комплекса? хотелось бы представлять систему целиком с пониманием функций, которые осуществляет каждый компонент.
0
кстати говоря, eclipse всегда требует make-файл. откуда брать \ как написать?
0
Хорошая статья, спасибо. После пары дней проб и ошибок у меня тоже получилось запустить связку linux-eclipse-jlink-stm32 под archlinux. Только заместо openocd пока использую gdb server от j-link.
0
Важно! OpenOCD не работает с самой последней версией j-link. Если вы уже обновляли прошивку j-link'а, то нужно сделать откат. Тут скачайте J-Link Commander версии 4-10i и перешейте j-link (только на Windows). Я сам не пробовал, т.к. нужды не было.
Мммм у меня в jlink зашита последняя версия дров. и OpenOCD работает с ним шикарно. ЧЯДНТ???
0
  • avatar
  • a1ien
  • 22 февраля 2012, 07:18
Подозреваю ребята из OpenOCD просто допилили поддержку jlink-а.
0
Мой коллега недавно после установки распоследнего MDK, согласился на ненавязчивое предложение проапдейтить его j-link. После этого, уже на Линуксе, OpenOCD не стал работать с его j-link'ом. После отката всё срослось. Я добавил это в статью с его подачи, т.к. сам с таким не сталкивался. Ну а если и без того всё работает, так и замечательно.
0
Это было в версиях 4,22 дров jlink'a на офф сайте сегере даже обсуждали это(что опеносд перестал работать). В новых версиях 4,40 и выше точно все окей.
0
А у нас распоследняя была 4.20…
0
Ну что-то в раене 20ых версиях))
В новых сеггер и опеносд фиксанули все. так-что все должно отлично работать )
0
Может не стоит пользоваться make install ввиду подобных проблем?
0
  • avatar
  • xpeh
  • 23 февраля 2012, 08:23
А на виртуальной машине (VMWare и тп) такое возможно проделать? И чтобы с железом работало?
А то для сомневающихся поменять операционку со всеми программами и окружением это слишком.
0
конечно, нужно просто «пропустить» jlink внутрь vm
0
Ясно, спасибо.
0
Не ставится ARM Plugin говорит следующее-
Cannot complete the install because one or more required items could not be found.
Software being installed: GNU ARM C/C++ Development Support 0.5.4.201202210114 (org.eclipse.cdt.cross.arm.gnu.feature.group 0.5.4.201202210114)
Missing requirement: GNU ARM C/C++ Development Support 0.5.4.201202210114 (org.eclipse.cdt.cross.arm.gnu 0.5.4.201202210114) requires 'bundle org.eclipse.cdt.managedbuilder.core 8.0.0' but it could not be found
Cannot satisfy dependency:
From: GNU ARM C/C++ Development Support 0.5.4.201202210114 (org.eclipse.cdt.cross.arm.gnu.feature.group 0.5.4.201202210114)
To: org.eclipse.cdt.cross.arm.gnu [0.5.4.201202210114]
Справедливости ради надо сказать что ставлю на Гелиос. Просто не знаю как быстро заменить его на Индиго.
0
  • avatar
  • kos
  • 07 марта 2012, 14:30
Было у меня что то похожее. Нужно установить cdt.managedbuilder.core 8.0.0, а в хелиос оно версии 7 с чем-то. Скорее всего это одно из различий между Хелиос и Индиго. Попробуйте сделать всё в точности как в п.2. Установка Eclipse это просто скачать и распаковать в нужное место… Заменять не надо, пусть будут две; у меня всё отдельно — SDK, RCP и C/C++, и все Индиго
0
Еще впрос где прописать путь к компиляторам (export PATH=/opt/codesourcery/arm-2011.03/bin:$PATH) так чтоб Эклипс нормально работал. А то если я делаю так как указанно в данной статье то Эклипс компилирует только в том случае если был запущен из терминала где была дана команда source ~/.bashrc. Вином случае ругается на не сущетствующие файлы.
0
  • avatar
  • kos
  • 07 марта 2012, 19:02
тут ~/.bashrc
потом перелогин или перезагруз
или так
$ source ~/.bashrc
0
попробую перезагрузку. Перелогин не помог. В ~/.bashrc любом месте файла можно прописать эту строчку?
0
Перезагрузка тоже не помогла.
0
И правда. Добавьте
PATH=/opt/codesourcery/arm-2011.03/bin:$PATH
в ~/.profile и перелогинтесь. А .bashrc не всегда работает как ожидается. Я тут исправлю.
0
Спасибо! С одной траблой справился…
0
не мог бы кто выложить скрипты линкера одним архивом из atolic? лениво качать овер 200М с медленного как Путинские обещания сайта
0
У меня на Linux Mint 11 при запуске eclipse в терминале вылезли вот такие примерно ошибки:

(eclipse:4444): Gtk-WARNING **: Error loading theme icon 'dialog-error' for stock: Unable to load image-loading module: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so: wrong ELF class: ELFCLASS64
(eclipse:4444): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
** (eclipse:4444): CRITICAL **: murrine_style_draw_render_icon: assertion `base_pixbuf != NULL' failed
(eclipse:4444): Gtk-CRITICAL **: IA__gtk_style_render_icon: assertion `pixbuf != NULL' failed


Куда копать? И нельзя ли как-нибудь установить его из репозиториев? (о LM12 читал)
Консоль оно конечно хорошо, но гуй все таки приятнее и понятнее лично для меня.
0
Третий день «по граблям бегаю», уже лоб болит. ;)

Установил Eclipse, скачал исходники OpenOCD, добавил поддержку FT2232H, скомпилировал, установил.

В файле Openocd.cfg (/workspace/Test/) прописал конфигурацию:

interface ft2232
ft2232_device_desc "Texas Instruments Inc.XDS100 Ver 2.0"
ft2232_layout xds100v2
ft2232_vid_pid 0x0403 0xa6d0
adapter_khz 480
jtag_rclk 128
telnet_port 4444
gdb_port 3333


Плату находит, но подключенную ATMEGA2560, не видит.

Open On-Chip Debugger 0.5.0 (2012-07-02-23:53)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.berlios.de/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
480 kHz
RCLK - adaptive
Info : max TCK change to: 30000 kHz
Info : RCLK (adaptive clock speed)
Warn : There are no enabled taps.  AUTO PROBING MIGHT NOT WORK!!
Error: couldn't read enough bytes from FT2232 device (0 < 81)
Error: couldn't read from FT2232
Error: Trying to use configured scan chain anyway...
Error: couldn't read enough bytes from FT2232 device (0 < 2)
Error: couldn't read from FT2232
Warn : Bypassing JTAG setup events due to errors
Warn : gdb services need one or more targets defined

Что нужно до настраивать еще?
И где?

Все это работает в Xubuntu 12.04 (i386)
Непонятно почему пингуется порт 3333, а 4444 — нет. Ведь чип двухпортовый?
Если прошиваю eeprom как стандартную 2232, плату не видит совсем, хотя в описания ставлю ВинПид от стандартной. С OpenMoko ситуация аналогичная…
0
Просто оставлю это сдесь:
Для Code Sourcery на только что поставленную Ubuntu 12.04 LTS 64 требовался пакет gcc-multilib.
sudo apt-get install gcc-multilib
Очень много времени потратил на эту ситуацию.
0
  • avatar
  • efti
  • 27 октября 2012, 00:02
Кто-нибудь пробовал этот тулчейн? Не хотелось бы превращать систему в помойку монстром по имени Sourcery CodeBench Lite с установщиком на джаве (зачем?).
0
Для Debian, похоже, есть ещё такое решение.
0
Подскажите, пожалуйста.
Отладчик J-LINK китаец. Под виндой с ПО от Сеггер работает. Под Ubuntu + openocd (0.5.0 из репозитория) при запуске openocd выдает:
user@desktop:~/workspace/ARM_TRY3$ openocd -f openocd.cfg 
Open On-Chip Debugger 0.5.0 (2011-12-03-10:15)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
Warn : Adapter driver 'jlink' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
1000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
Info : J-Link initialization started / target CPU reset initiated
Error: J-Link command 0xde failed (-1)
Error: J-Link command 0xdc failed (-1)
Error: J-Link command 0x01 failed (-1)
Error: J-Link command EMU_CMD_VERSION failed (-1)
Info : J-Link JTAG Interface ready
Error: J-Link command 0xdd failed (-1)
Error: J-Link command 0xdf failed (-1)
Error: usb_bulk_write failed (requested=6, result=-1)
Error: jlink_tap_execute, wrong result -107 (expected 1)
Error: J-Link setting speed failed (-1)
in procedure 'init'

С чем может быть связано? Куда копать?
0
Теперь новая лабуда:
Open On-Chip Debugger 0.5.0 (2011-12-03-10:15)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
Warn : Adapter driver 'jlink' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
1000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
Info : J-Link initialization started / target CPU reset initiated
Info : J-Link ARM V8 compiled Nov 14 2012 22:34:52
Info : J-Link caps 0xb9ff7bbf
Info : J-Link hw version 80000
Info : J-Link hw type J-Link
Info : J-Link max mem block 9312
Info : J-Link configuration
Info : USB-Address: 0x0
Info : Kickstart power on JTAG-pin 19: 0xffffffff
Info : Vref = 3.261 TCK = 0 TDI = 1 TDO = 0 TMS = 1 SRST = 0 TRST = 1
Info : J-Link JTAG Interface ready
Info : clock speed 1000 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: stm32f2xxx.cpu: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Warn : Invalid ACK 0 in JTAG-DP transaction
Polling target failed, GDB will be halted. Polling again in 100ms
Polling target failed, GDB will be halted. Polling again in 300ms
Polling target failed, GDB will be halted. Polling again in 700ms
Polling target failed, GDB will be halted. Polling again in 1500ms
^C
0
Огромное спасибо автору! И пару вопросов:
1) Как вы догадались, что нужно менять расширение файла на .S
2) Как решили, что нужно комментировать вот это
* Call the clock system intitialization function.*/
/* bl SystemInit < — */
/* Call static constructors */
/* bl __libc_init_array <--*/

3) и что значит символ "&" в этой команде $ /opt/eclipse/eclipse &
0
1) Как вы догадались, что нужно менять расширение файла на .S
… в эклипс (Preferences -> C/C++ -> File Types) есть описание всех поддерживаемых типов файлов, так там отсутствует *.s, только *.S. Пробовал добавить *.s так он говорит что такой тип уже существует.
0
2) Как решили, что нужно комментировать вот это
* Call the clock system intitialization function.*/
/* bl SystemInit < — */
/* Call static constructors */
/* bl __libc_init_array <--*/
… чуть выше этого кода, на картинке со скриптом линкера, автор поставил галачку напротив «Do not use standard start files» Так вот строчка bl __libc_init_array как раз и вызывает стандартную процедуру инициализации переменных, чего автор не хочет, поскольку у codesourcery своя процедура инициализации (cs3 называется).
0
и что значит символ "&" в этой команде $ /opt/eclipse/eclipse &

Запуск задачи в фоновом режиме. При этом командный интерпретатор(shell) не ждёт окончания выполнения задания, в данном примере не ждёт завершения работы Эклипса и сразу «отдаёт» командную строку.
Для удобства работы с одним экземпляром командного интерпретатора.
0
Спасибо за ответы! Кстати, я не выдержал всех испытаний (ST-LINK) и перешел на IAR под Windows. Просто я не настолько опытен в Linux и я отсановился на том, что ST-LINK виден и даже пытается работать, но отладка не идет. А проект делать нужно уже вчера… Такие вот дела
0
А ST-LINK который, первый или второй? У меня с первым были проблемы, второй работает как из пушки.
0
Вот и у меня с первым проблемы (плата STM32VLDISCOVERY, там он на ней стоит).
0
Имеет смысл взять более свежую дискавери, в большинстве из них ST-LINK/2. Ну или купить отдельно (вариант: собрать самостоятельно).
0
Да они же вроде отличаются-то только прошивкой. Перешить и все.
В принципе, на форуме есть полная прошивка от ST-LINK/V2 JTAG+SWIM. Можно ее прошить, если будет выделываться на тему несовпадения версии (только сперва убедиться, что железо совместимо, благо схемы есть).
0
  • avatar
  • Vga
  • 22 сентября 2013, 20:10
Да они же вроде отличаются-то только прошивкой.
Насколько я помню, в схеме тоже есть небольшие отличия.
0
Насколько существенные?
0
  • avatar
  • Vga
  • 22 сентября 2013, 21:36
Чуть-чуть иначе разведены сигналы по портам. Подробностей, увы, не помню. Имеет смысл просто взять два даташита — от VL-discovery и от, скажем, F4-discovery и сравнить.
0
Ну если там SWD на других пинах то да, без скальпеля не переделаешь.
0
  • avatar
  • Vga
  • 23 сентября 2013, 01:14
Елки палки ...
Вот по этому Linux никогда в жизни не пойдет дальше Серверов
0
Мобилы, десктопы, сервера… Куда уж дальше? :)
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.