Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: toolchain для STM32F405/407
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
BlackOps
До того имел дело только с ПИК32. Сейчас планирую начать с STM32F405/407, я пытаюсь найти статьи где написано как настроить софт для работы с этими чипами? в интернете в основном вижу пример под более старые STM32 контроллеры.

нашел еще бесплатный но слегка обрезанный Atollic, поддерживается зато С без ограничений, и основные функции отладки.

Исппользует ли кто чип серии STM32F405/407, а если да то каким набором средств пользуетесь и под какую ОС?
MK2
на сайте ST ест документация как собирать проекты под разные среды (Keil, IAR, Atollic) - посмотрите документацию к STM32F4VLDISCOVERY , они все под виндовс а так там полно еще всяких малоизвестных в нашей стране сред , под линукс слышал только связки gcc+всякие эклипсы.
Для начал советую определиться с отладчиком u-link, j-link и тп, каждый из них лучше работает в связки со своей средой
ну кроме наверно ST-link ))
BlackOps
у меня уже есть ST-LINK

Atollic - это как бы запасной вариант, там вроде все просто должно быть.

меня интересует какие еще связки сработают под данный камень?
MK2
http://www.st.com/internet/com/SOFTWARE_RE...g_solutions.pdf
http://www.st.com/internet/com/TECHNICAL_R.../DM00037368.pdf

в первом полный спектр программных решений, а во втором настройки проектов для 407 камня использую ST-link
BlackOps
Вообщем сделал я следующее:

1. скачал Eclipse C/C++ edition, установил
2. скачал плагин GNU ARM PLUGIN для Eclipse
3. установил Code Sourcery G++ LITE,
4. из под Eclipse установил плагин GNU ARM PLUGIN

теперь все переменные среды установились сами (делал под WinXP), при запуске еклипса и создании проекта я вижу он уже обнаружил codesourcery tools.

но теперь проблема в том чтобы собрать нужный линкер скрипт чтобы программа нормально компилилась под девайс stm32f405/407 .например, в наличие имеющихся линкер скриптов обнаружил что угодно (даже линкер скрипт для Xilinx ZYNQ 7000 которого еще в продаже нет!), но не обнаружил линкер скрипта для девайса stm32f405/407, и даже для stm32f103!

кто может поделится линкер скриптом? или сказать где можно достать?

я сейчас смотрю как переделать тот который поставляется с stm32f4discovery платой... тем не менее очень помогло бы если кто готовым уже поделился.
BlackOps
ну вобщем скачал я peripheral library от st.com, и положил из нее следующие файлы в мой проект:

stm32f10x.h
system_stm32f10x.h
core_cm3.h

а также вот этот стартап файл:
startup_stm32f10x_hd.s

у меня девайс пока stm32f103 с 512Кб флэш (пока на этом девайсе тестирую).

нашел шаблон линкер файла, вот его код:
CODE
MEMORY
{
sram (W!RX) : ORIGIN = 0x20000000, LENGTH = 64k
flash (RX) : ORIGIN = 0x08000000, LENGTH = 512k
}

SECTIONS
{
.text :
{
. = ALIGN(4);
_text = .;
PROVIDE(stext = .);
KEEP(*(.isr_vector))
KEEP(*(.init))
*(.text .text.*)
*(.rodata .rodata.*)
*(.gnu.linkonce.t.*)
*(.glue_7)
*(.glue_7t)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
. = ALIGN(4);
_etext = .;
_sidata = _etext;
PROVIDE(etext = .);
_fini = .;
*(.fini)

} >flash

.data : AT (_etext)
{
. = ALIGN(4);
_sdata = .;
*(.ramfunc .ramfunc.* .fastrun .fastrun.*)
*(.data .data.*)
*(.gnu.linkonce.d.*)
. = ALIGN(4);
_edata = .;
} >sram

.ARM.extab :
{
*(.ARM.extab*)
} >sram

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx*)
} >sram
__exidx_end = .;

.bss (NOLOAD) : {
. = ALIGN(4);
/* This is used by the startup in order to initialize the .bss secion */
_sbss = .;
*(.bss .bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
_ebss = .;
} >sram

end = .;
PROVIDE( _estack = 0x20010000 );
}

указал этот линкер в свойствах проекта, но во время компиляции мне выдаются ошибки типа:
undefined reference to _fstat итд...

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

все ясно, в основной программе была функция printf. убрал все заработало.

поэксперементирую дальше, если что уже сюда напишу вновь.
IgorKossak
Примеры можно взять, например здесь или соответствующие из scmRTOS.
Немного не под Ваши МК, но адаптировать сможете.
sherr
Можно еще вопрос близкий к теме - известно, что в STM32f4xx есть FPU - так в каком обьеме его поддерживают существующие компиляторы, особенно интересует GCC. Тот же вопрос про блок DSP-
или для его использования нужен ассемблер (спецлибы написанные на нем).
AHTOXA
Вот здесь klen выложил тулчейн с поддержкой Cortex-M4. Пробуйте.
BlackOps
ок возвратился я к теме этой. получилось использовать stlink-texane но я заметил он долго шьет чип. да и тут тоже ктото упоминал что texane тормозит сильно.

прошло вобщемто достаточное время, появилось чтонибудь лучше для работы в Линукс 64? что порекомендуете сейчас?

и еще, какой отладчик порекомендуете? (у меня пока плата stm32f4discovery но есть USB отладчик ST-LINK)


и такой еще вопрос, как вам такая комбинация под Линукс:

gcc + J-LINK + openocd ?
Сергей Борщ
QUOTE (BlackOps @ May 25 2012, 07:28) *
и такой еще вопрос, как вам такая комбинация под Линукс:

gcc + J-LINK + openocd ?
Работает в режиме JTAG. Ждем, пока допилят SWD в OpenOCD.
BlackOps
а скорость у меня кстати такая с stlink_texane: 233Байт/сек, у некоторых людей она 120КБайт/сек!!! хотя многие говорят примерно 200Байт/сек.


так есть ли еще какие дешевые (бесплатные) решения для использования с ST-LINK ?
Сергей Борщ
QUOTE (BlackOps @ May 25 2012, 11:15) *
а скорость у меня кстати такая с stlink_texane: 233Байт/сек, у некоторых людей она 120КБайт/сек!!! хотя многие говорят примерно 200Байт/сек.
У меня с довольно древним MT-Linkом (без адаптивной настройки частоты JTAG) и STM32F100 - 9К/сек.
QUOTE (BlackOps @ May 25 2012, 11:15) *
так есть ли еще какие дешевые (бесплатные) решения для использования с ST-LINK ?
OpenOCD судя по списку рассылки работает с ST-Link в режиме JTAG. Сейчас распакую свой ST-Link, соберу свежий OpenOCD с его поддержкой и попробую.
Сергей Борщ
QUOTE (Сергей Борщ @ May 25 2012, 11:44) *
Сейчас распакую свой ST-Link, соберу свежий OpenOCD с его поддержкой и попробую.
Собрал. Не шьет мой STM32F100 вообще. Ни через ST-link, ни через MT-link. Предыдущая сборка от 26 апреля через MT-link шила. Кристалл определяется, в озу руками записать могу, а флешь не пишет - сплошные FFFFFFF. Подождем немного, появится время - напишу им в рассылку.
BlackOps
ну вобщем я так понял что пока один только путь есть бесплатный под Линукс:
gnuarm-gcc/code sourcery + ST-LINK + stlink_texane


подожду тогда...
Сергей Борщ
QUOTE (BlackOps @ May 27 2012, 22:25) *
ну вобщем я так понял что пока один только путь есть бесплатный под Линукс:
gcc есть много разных. Я использую самосборный. В качестве отладчика OpenOCD + МТ-Link. Так что путей больше чем один.
Сергей Борщ
QUOTE (Сергей Борщ @ May 25 2012, 17:03) *
Собрал. Не шьет мой STM32F100 вообще. Ни через ST-link, ни через MT-link.
Ан нет, показалось. Это моя программа неожиданно стирала саму себя. Докладываю: В режиме JTAG последняя версия работает отлично. Скорость загрузки 10-11К/сек как на MT-Link, так и на ST-Link. "Можно брать".
AHTOXA
Я уже в нескольких местах читал, что свежий openocd работает с STLink и через SWD. Сам ещё не пробовал.
BlackOps
вот тут описан тулчейн который поддерживает и компиляцию для чисел с плавающей запятой:
http://freddiechopin.info/en/articles/34-n...pc1769#comments

также тут говорится что openocd 0.6.0 поддерживает st-link/v2 в режиме SWD.

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

C:\openocd060\bin-x64>openocd-x64-0.6.0-dev-120529191006.exe -f board/stm32f4dis
covery.cfg
Open On-Chip Debugger 0.6.0-dev-00599-ga21affa (2012-06-20-09:22)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
1000 kHz
srst_only separate srst_nogate srst_open_drain
Info : clock speed 1000 kHz
Error: open failed
in procedure 'transport'
in procedure 'init'


C:\openocd060\bin-x64>


Подскажите в чем здесь может быть проблема? У кого уже получалось запустить openocd с SWD и st-link/v2?
_Артём_
Цитата(BlackOps @ Jul 8 2012, 02:03) *
Подскажите в чем здесь может быть проблема? У кого уже получалось запустить openocd с SWD и st-link/v2?

А что нет вариантов кроме openocd для smt32F4?
По ссылке GDB описывают как подключать без ocd. Чем это не подходит.
BlackOps
в этом варианте надо скачивать вроде бесплатный Atollic TrueSTUDIO, всеравно хотелось бы избежать этих пакетов.

второй вариант в этом линке использовать Тексан. но он для Линукса.

так выходит под Win7 тока OpenOCD и этот труе студио, других бесплатных опций нет.

кстати, получилось его запустить, мне пришлось удалить родной драйвер от ст-линка и поставить lib-usb32. запустился опеноцд и законектился.
но потом проблемы:

1. в папке собранного проекта набираю:
arm-none-eabi-gdb stm32f4_blink_led.elf

2. затем это:
target extended
3. затем пробую разные команды простые но вот он мне что выдает:


C:\Users\blackops\Desktop\stm\stm32f4_blink_led-1.2.2-120323\stm32f4_blink_led-1
.2.2-120323\out>arm-none-eabi-gdb stm32f4_blink_led.elf
GNU gdb (Sourcery G++ Lite 2010.09-51) 7.2.50.20100908-cvs
Copyright © 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-mingw32 --target=arm-none-eabi".
For bug reporting instructions, please see:
<https://support.codesourcery.com/GNUToolchain/>...
Reading symbols from c:\users\blackops\desktop\stm\stm32f4_blink_led-1.2.2-12032
3\stm32f4_blink_led-1.2.2-120323\out\stm32f4_blink_led.elf...done.
(gdb) target extended localhost:3333
Remote debugging using localhost:3333
Remote 'g' packet reply is too long: 0000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000010
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000
(gdb) load
You can't do that when your target is `exec'
(gdb) run
Starting program: c:\users\blackops\desktop\stm\stm32f4_blink_led-1.2.2-120323\s
tm32f4_blink_led-1.2.2-120323\out\stm32f4_blink_led.elf
Don't know how to run. Try "help target".
(gdb) info registers
The program has no registers now.
(gdb) continue
The program is not being run.
(gdb) p/x *(uint32_t *) 0x40020400
Cannot access memory at address 0x40020400
(gdb)

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

а вот распечатка из другово окна где запускался опенОСД:

C:\openocd060\bin-x64>openocd-x64-0.6.0-dev-120529191006.exe -f board/stm32f4dis
covery.cfg
Open On-Chip Debugger 0.6.0-dev-00599-ga21affa (2012-06-20-09:22)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
1000 kHz
srst_only separate srst_nogate srst_open_drain
Info : clock speed 1000 kHz
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection from 3333
Info : stm32f4x errata detected - fixing incorrect MCU_IDCODE
Info : device id = 0x10006413
Info : flash size = 1024kbytes
Warn : acknowledgment received, but no packet pending
undefined debug reason 6 - target needs reset
Info : dropped 'gdb' connection
Info : accepting 'gdb' connection from 3333
Warn : acknowledgment received, but no packet pending
undefined debug reason 6 - target needs reset
Info : dropped 'gdb' connection
_Артём_
Цитата(BlackOps @ Jul 8 2012, 04:06) *
в этом варианте надо скачивать вроде бесплатный Atollic TrueSTUDIO

Если он бесплатный, то почему нет.
Хотя конечно вопрос что думают в Atollic -е насчёт его бесплатности.

А ST никакой GDB-сервер не придумала?
BlackOps
Атоллик тоже был бесплатным, и в один день разослал всем мейл что все типа, халява кончилась. Так что если планируется использование бесплатного софта, то лучше пусть он бдует 100% бесплатным.

СТ вроде как не придумала.


я вот что сейчас сделал, вместо CodeSourcery я установил на линукс прокомпилированный GCC Tools for ARM Processors, и этот пак тоже естесственно содержит gdb а самое главное это то,
что он поддерживает аппаратный FPU на семейстев stm32f4, взял вот отсюда:
https://launchpad.net/gcc-arm-embedded

ну а потом в качестве сервера всетаки решил успользовать как и прежде Тексан. работает вроде как.
BlackOps
Кстати, тогда такой еще вопрос: Является ли легальным использовать сам GDB сервер от бесплатной облегченной версии Атоллика? т.е. использовать для того чтобы делать девайсы которые продаеш, с и без исходного кода?


Я глянул в лицензию, там вроде как ничего не говорится про это явно..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.