Простой старт STM32+CooCox IDE+ST-Link

disclaimer: Это мой первый подобный опус сильно не пинайте (возможно даже баян)
Я давно подбираюсь к ARM но никак не мог найти себе среду для быстрого и внятного старта. И вчера ночью совершенно случайно нашел- это CooCox IDE

При написании статьи была использована CoIDE 1.2.5 www.coocox.org/Tools/CoIDE-1.2.5.exe
В сентябре 2011 появилась CoIDE 1.3.0 www.coocox.org/Tools/CoIDE-1.3.0.exe с поддержкой ST-Link из коробки и исправленным багом при работе с J-Link, так что качайте лучше ее
Знаю, что есть много сред для ARM, но все они какие-то непонятные мягко скажем… и чтобы поморгать hello world надо либо убиться ап стену с эклипсом или отдаться ипериализму в виде Keil, Iar, Atollic итп которые тоже не очень то приятны на первый укус.
Короче говоря -скачав свободный CooCox IDE (естественно он на Еклипсе) в течение десяти минут я создал и закомпилировал моргалку, чего мне не удавалась долгое время.
Как ни странно :) создать проект можно через меню -Project указать таргет и назвать проект.



вот что можно вбить чтобы поморгать диодиками на Дискавери32 (которая без L)
+ не забыть подключить библиотеки из репозитария и оставить оптимизацию на -Os в меню Project->Configuration



Если нажать на библиотеку то справа появиться ее описание


//поправленный код
#include<stm32f10x_rcc.h>
#include<stm32f10x_gpio.h>

#include "stm32f10x.h"
#include "stm32f10x_conf.h"

void Delay(volatile uint32_t nCount);


GPIO_InitTypeDef GPIO_InitStructure;

volatile int main(void)

{
// init for GPIO (LED)
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8 | GPIO_Pin_9 ;       // two LED (guess on what pin!!)
        GPIO_Init(GPIOC, &GPIO_InitStructure);



    while(1)
    {
        GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_RESET);
                GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
                Delay(8000000);
                GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
                GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_SET);
                Delay(8000000);
    }

}

//-------
void Delay(volatile uint32_t nCount)
{
    for (; nCount > 0; nCount--);
}




После создания проекта и вбивания какого-то первого кода (отсутствие delay для меня пока тайна) его нужно скомпилировать и можно отладить! да через ST-LINK_gdbserver можно скачать здесь dl.dropbox.com/u/14601294/STM32_stuff/ST-LINK_gdbserver.zip (ссылку стырил каюсь...) обыкновенным ST-Link который есть на дисковери! Драйвер для ST-Link есть в GDB сервере, либо здесь www.st.com/internet/evalboard/product/219866.jsp на страничке Design support ближе к низу. Вот Debug Config



Есть маааленький нюанс в конфиг GDB для ST-Link добавьте -d и поменяйте порт на 2331 (или скачайте он приложен) и он будет нормально стартавать



Или прописать все в командной строке и поменять порт (как подсказали камрады) — все само будет запускаться (не надо тыкать в батник)



После переустановки IDE с нормальным путем C:\CoIDE перестали нормально работать предыдущие конфиги отладки- решение ключ только -d порт 61234 и все в порядке. При этом пути кракозябры уходят и вобщем все хорошо :)



Примеры для STM32 coocox.org/Examples.php?mfr=ST

ps Из косяков у меня win7 64 инсталляционный путь — C:\\Program Files (x86)\\CooCox\\CoIDE
там же храняться проекты в Workspace — при этом выводятся кракозябры вместо размера при компиляции см первый скриншот, но если проект сохранить например на D:\discovery то все нормально компилится, но чето не отлаживается.
pps исправил пример и иногда gdb сервер зависает и надо передергивать usb и перезапускать среду (+иногда желательно проверить не висят ли STM_GDB_server в памяти)

pps Окошко настройки отладки для CoIDE 1.3.0

У меня на Win7 64 в CoIDE 1.3.0 не работала отладка, помог способ подсказанный coracio STLinkUSBDriver.dll скопировать из ST-Link Utility в каталог CoIde/Bin.

  • +2
  • 04 августа 2011, 00:11
  • GYUR22
  • 1
Файлы в топике: config.txt

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

RSS свернуть / развернуть
Windows only я так понимаю?
0
да зато удобно и бесплатно :)
0
Скоро обещают поддержку и линухов, но пока обещают только.
0
Во-во, у меня тоже не отлаживается, а остальное все работает (Eclipse)
0
и чтобы поморгать hello world надо либо убиться ап стену с эклипсом или отдаться ипериализму в виде Keil, Iar, Atollic итп
firmware из st.com нормально запускаются кейлом или иаром.
А это вообще подарок для ARM-стартапера:
easyelectronics.ru/arm-uchebnyj-kurs-keil-cmsis-sozdanie-proekta.html
0
  • avatar
  • tank
  • 04 августа 2011, 07:12
keil iar — их надо покупать
да и редактор и среда меня не впечатлили так чтобы бежать с деньгами за производителями
0
На самом деле Кейл всех рвет не своей средой а отладкой и эмуляцией железа. Там даже подобие логического анализатора виртуального есть и прочие фишечки. Именно поэтому я на с кокоса перешел на кейл. И не жалю. тем более деморежима 32кб мне хватало за глаза всегда :)
0
у меня это как говорится первый шаг в сторону армов…
и от обилия шалабушек в других средах глаза разъезжались
ну и правило 15 минут никто не отменял :)
это начало — дальше будем посмотреть

зы в текущем проекте на АВР уже 47кб…
0
Ну там и среда чуть более вменяемая, надо отметить. Не BDS (и скорее всего не эклипс), но и не IAR или AVR Studio.
Грустно это… Либо редактор, либо отладка, либо плясать с бубном и двумя средами…
0
В CooCox IDE поменял порт 2331 на 61234 и отладка заработала
0
у меня он почему то не менялся в ide (видно на скриншоте)
0
Странно… У меня такое же окошко и все меняется.
Только в пути к серверу C:\eclipse\STLink\STLINK_gdbserver\ST-LINK_gdbserver.exe -e -d
0
Кстати, у меня тоже win7 x64. Тоже ставил в папку по умолчанию. Кракозябл при компиляции в консоль не пишет.

Создал пустой проект, подключил пару библиотек. Скомпилил. Пустой main занимает с оптимизацией полтора килобайта O_o…
0
опс ночью не заметил порт меняется… — очень слабо окошки по цвету различаются
0
Отлаживать-то можно, но как теперь залить прогу? ST-LINK Utility не хочет шить bin-файл. А в штатных средствах не нашел…
+ не забыть подключить библиотеки из репозитария и оставить оптимизацию на -Os
какие библиотеки подразумевались и как включить оптимизацию -Os? Что-то не нашел настроек, а мэйк файла нет. У меня STM32 Discovery
0
вру, шьет
0
библиотеки которые на скриншоте (или вызывается через иконку с квадратиками) галками протыкать
оптимизация в свойствах проекта- почему -Os?
иначе убъет цикл задержки
0
исправил пример работает с -O2
добавлено volatile в функции задержки
0
подскажите, у меня нет вкладки other-adapter. что нужно сделать чтобы она появилась?
0
а версия у вас 1.2.5?
там не вкладка а пункт в комбо боксе
0
1.2.4
0
скачать новую :)
0
0
странно качал по той ссылке которая была на странице. скачалась 1.2.4.
0
я по недосмотру впендюрил туда 1.2.4
0
у меня всё заработало нормально. Win7 x64. Посавилось в папку (x86) и шрифт нормальный, и отладка по последней рекомендации тоже нормально проходит.
0
ну хоть комуто помог мой опус :)
0
Hello,

The new version CoIDE which will release soon supports ST-Link.

Thanks for your support!

Best Regards

Grace

Так что возможно уже в версии 1.2.5 этот костыль будет интегрировать в IDE :)
0
уже давно ждемс…
0
Почему в версии 1,3,0 не работает отладка? Как исправить?
0
хз пока сам тока налетел на грабли написал на кокосовском форуме
0
Решил проблему так:
Скопировал файл STLinkUSBDriver.dll из папки с программой STM32 ST-LINK Utility в папку CooCox\CoIDE\flash.
Затем из папки с установленным CoFlash (CooCox\CoFlash) скопировал все файлы в ту же папку CooCox\CoIDE\flash с заменой.
0
И все заработало!
0
Напишите на форуме кокоса. Пусть разбираются))
0
у меня не работает на win7 64 — на XP все сразу без проблем заработало
0
У меня после апдейта на 1.3.0 тоже не работал st-link. Как оказалось, после апдейта файл coflash.exe в папке CooCox\CoIDE\flash имел нулевую длину. После замены файла на файл из CooCox\CoFlash все заработало. Других манипуляций не делал.
0
Есть еще Coflash отдельный так вот он тоже не работает у меня на win7 64 c st-link (c j-link позже проверю)
его просто вышибает и все…
0
Хм, отлично, я как-то эту IDE упустил. С ней будет поудобней, чем с «голым» Eclipse+GCC. Кстати, а какой компилятор эта IDE использует? полагаю, ARM-GCC?

Статью я бы перенес в коллективный блог STM32.
0
Code sourcery G++ lite
0
Поставил CoIDE. Отличная, оказывается, штука. Делает за тебя всё то, что в чистом Eclipse приходилось делать руками (копировать библиотеки, прописывать их в conf и т.д.).

Написал простейшую программу, скомпилировал. STM32 ST-Link Utility не понимает формата bin, пришлось в build.xml проекта написать конвертацию в intel hex: arm-none-eabi-objcopy -O ihex ${project.bin}\${project.name}.elf ${project.bin}\${project.name}.hex

Но программа в контроллере не работает, более того, после прошивки ST-Link Utility пишет что-то про Read out protection.

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

Код скопировал из своего же проекта, созданного в Eclipse. Код рабочий.
0
STM32 ST-Link Utility понимает bin да и hex там есть в директории Debug ничего извращаться не надо все уже есть и отладчик St-link попробуйте с ним CoIDE 1.3 его понимает напрямую
0
Еле прочитал это сообщение без запятых. Да, обновление до 1.3 помогло (у меня был 1.2.4). Спасибо.
0
не люблю запятые :)
0
Не выходит (
в 1.3 пишет
Error: Connect failed, check config and cable connection
Program Download Failed
( Подскажите, как в debug configuration выбирать порт, макс частоту? Это из-за неправильного выбора, я так понимаю, ошибка?
0
  • avatar
  • Sarog
  • 14 сентября 2011, 19:42
А ST-Link Utility заливает?
ps у меня CoIDE 1.3 на win7 64 с ST-Link почему-то не работает, на XP все пучком
0
Заработала отладка на Win7 64 в CoIDE 1.3.0, помог способ подсказанный coracio STLinkUSBDriver.dll скопировать из ST-Link Utility в каталог CoIde/Bin.
0
подскажите пожалуста
у меня stm32l-discovery при подключение к компу через USB
widos7 (32) ищит дравет и после поисков пишет что драйвер не нашел
толи плата бракованая толи я что то не доганяю.
извените что совем не втему, но просто намучался.спасибо
0
  • avatar
  • free
  • 18 сентября 2011, 15:58
скачайте ST-Link Utility там есть драйвер
0
спасибо просто спас.
0
Спасибо большое за наводку!
Старт с бордой STM3210C-EVAL составил 30 минут на скачивание, полминуты на установку и ещё 5 минут на создание тестового проекта «hello_LED», и вот уже светики радостно мигают. Единственное, что пока не нашёл, это как подключить рукописный makefile.
Не доверяю я этой автоматике, привык держать процесс в собственных руках. Да и тонкая настройка компилятора иногда требуется.
Ещё раз спасибо!
0
подскажите у меня проблема с драйверами. Дискавери определяется win7(64) и winxp(86) как съёмный носитель.
скачал ST-Link Utility, установил. не помогло.
0
  • avatar
  • KRIO
  • 14 февраля 2012, 21:14
так и должно быть, все правильно. Системой видится как сьемный накопитель.
0
Это только для ST-LINK, ST-LINK/V2 уже не выглядит накопителем.
0
А есть ли в CoIde поддержка STM32F4 и С++? Что-то не увидел.
0
обещали F4 — посмотрите форум CooCox там и про C++ было
0
Также почему-то нет LPC1114.302 (хотя остальные LPC11 присутствуют).
0
Народ, а у всех ST-Link прошивает так что прошивка после резета стартует?

гм… у меня почему то после заливки прошивки она работает ДО РЕЗЕТА!!!
потом все висит :-(
если снова залить — то снова работает ДО РЕЗЕТА!!!
Причем если выключить и включить плату — то все равно не стартанет!

в чем может быть дело?

программирование вынес в батник, получилась следующая строка
ST-LINK_CLI.exe -c SWD -P «D:\Project\STM32\cm\Debug\bin\cm.hex» -Rst -Run

еще раз повторюсь сразу после заливки (все без ошибок! все успешно!) — все работает, но после резета или выключения\включения — тишина

самое интересное что эта строка из кейла — из под него все работает нормально и прошивается так что работает и после резета и после выключения\включения…
0
Вот лог запуска
D:\Project\stm32\coderMax>ST-LINK_CLI.exe -c SWD -P «D:\Project\STM32\coderMax\Debug\bin\coderMax.hex» -Rst -Run
STM32 ST-LINK CLI v1.2
STM32 ST-LINK Command Line Interface

Connected via SWD.
Device ID:0x420
Device flash Size: 128 Kbyte
Device family :Value Line device

Flash Programming:
File: D:\Project\STM32\coderMax\Debug\bin\coderMax.hex
Address: 0x08000000
Flash Programming…
++++++++++++++++++++++++++++++++++++++++++++++++++ 0%
ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ 100%
Flash memory programmed in 0mn and 0s and 328ms.
Programming Complete.

MCU Reset.

Application started.

То есть все более менее нормально… но почему то не работает…
что упустил?
0
Подскажите, у меня не генерятся bin и hex файлы и при попытке прошивки выдает:

Error: Program Download Failed!
Error: Create bin file failed!

В папке bin их нет.
STM32100R6, CooCox IDE 1.4.0. В чем может быть проблема?
0
А вы тулчейн скачали? — он там отдельный
сам еще 1.4 не пробовал, но проверьте чтобы папка Coocox была в корне диска
0
Тулчейн у меня arm-2011.03-coocox. CoocoxIDE правда не в корне стоит, а в c:/
program files. Сейчас bin файл генерю вручную, запуская arm-none-eabi-objcopy, но ведь это должно делаться автоматом, так? Или я что-то недонастроил?
0
а путь к тулчейну?
0
Указан. Тем более что elf файл то генерится. Правда тулчейн на диске Е стоит, но не думаю что в этом проблема
0
поставьте все в корень C:\
0
и попробуйте 1.3
0
Хотел спросить о ST-LINK UTILITY.Нет ли там ограничеия размера кода? При попытке слить демо версию в дисковери стм32ф4 пишет Failure running flash loader и Programming Error @: 0x08000004.На ИАР-е, КЕИЛ-е прошивается.С ST-LINK UTILITY нормально прошивается STM32F103RB,ZET, но там размер кода небольшои.В чем можеть быть проблема?
0
не должно быть — этож бесплатная утилита загрузки :)
проверьте наличие новой версии ST-LINK UTILITY щас вроде 2.5 — ведь F4 новая серия
0
Спасибо.Новая помогла.
0
А у меня на вкладке Периферии (Peripherals) пишет что мол для выбранного чипа ничего показать не может!
STM32VDiscovery, STM32F100RB
0
при запуске дебагера «gdbserver.exe launch failed! try to restart debugging again»
coocox 1.3.0 винда xp установлено в С в корень. настройки как указаны выше для 1.3.0
как исправить подскажите
0
там уж 1.4.1 вышла обновитесь
0
обновился версия 1.4.2… к собщению «gdbserver.exe launch failed! try to restart debugging again» добавилось «The Dos Command tasklist.exe can run please check system environment variable. Make sure the systems comand path is exist, and tasklist.exe is exit»
0
так вы отдельным gdb сервером пользуетесь или встроенным?
там можно выбрать тупо st-link в качестве отладчика в самой среде в своствах отладки
0
в настройках «debug configuration» выбран st-link port «SWD» клок 1М, порт номер 2009
0
посмотрите st-link utility работает программирует?
через кокос заливается просто прога?
0
права админские?
0
да права админа, через кокос заливает прогу в дискавери...(только после замены STLinkUSBDriver.dll)
0
Вечер добрый.
Влип при попытке инициализации прерываний в кокосе.
Забил на свое творчество, беру готовый пример из чужого проекта.
Объявляю функцию void NVIC_Configuration(void);
Пытаюсь проинциализировать:
NVIC_InitTypeDef NVIC_InitStructure; — по факу от STM (впрочем, и по рабочему примеру) — пишет 'NVIC_InitTypeDef' undeclared (first use in this function).
Причем в GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitTypeDef кокос опознает и подсвечивает зеленым, а NVIC_InitTypeDef нет.
Подозреваю, что где-то прошляпана какая-то библиотека, но какая?? В include загнал все что можно было.
Кто-то сталкивался или может по опыту идея есть?
0
Библиотеку нашел — stm32f10x_nvic.h, но в репозитории кокоса при создании проекта её нет, а без него через #include stm32f10x_nvic.h линковать не хочет, хотя сама библиотека физически лежит в компонентах кокоса. Как быть?
0
С дурной головой и ногам покоя нет… пол ночи штурма интернетов, структуры файлов кокоса и организма… и все встало на свои места..stm32f10x_nvic.h — АРМовская библиотека (неизвестно для каких целей, но её пользовать не получается, требует еще одну библиотеку stm32f10x_map.h, которой ни в кокосе, ни в хелпе по STM32VLD не нашел), а применимо к STM методы NVIC описаны в misc.h
0
Когда кокос уже сделает поддержку L и F3 серий наконец(((
0
Приветствую.
Никто не сталкивался?
Пытаюсь шить камень, вылетает Error: Connect failed, check config and cable connection.
Крутил-вертел… оп-прошило, один раз. Потом снова болт. swd кабель укоотил до 10 см, все прозвонил — и порт до ног МК и кабель. Но не шьет хоть убей. Питание с отладочной платы (vldiscovery). Хотябы в каком направлении искать баг. Пропаял все что можно, прозвонил все… схема работает, программа крутится. А прошивки нет. Уже крыша едет от «чудес»
0
Мда..SWDIO внутри кристалла на земле почему-то… походу хана микрухе…
0
Наконец-то взялся за купленную пару лет назад stm32vl-discovery. Скачал CooIDE, установил. Все сходу заработало: программы компилировались, зашивки загружлись. Даже удивился тому, что старт и впрямь оказался «простым»)
После этого решил попробовать Keil. Однако, он не видел ST-Link. Чтобы исправить ситуацию установил ST-Link Utility и соответствующий драйвер. После данных манипуляций Keil шить начал, но перестал прошивать CooIDE, выдавая стандартную «Error: Connect failed, check config and cable connection» при попытке загрузить прошивку. Пробовал описанный выше способ исправления этой ошибки с заменой драйвера STLinkUSBDriver.dll — не помогло. Может быть кто-то сталкивался с подобной проблемой?
0
Здравствуйте, столкнулся с проблемой ...
подскажите пожалуйста, почему в Expressions — при изменении значения, изменения автоматическом НЕ синхронизируются с МК? Только после последующего «шага вперед» в отладке, содержимое окна Expressions синхронизируется…
0
в Keil, да и в любой IDE это делается автоматически, смотрел настройки, ничего не нашел (
0
при этом выпадает «Cannot access memory at address 0xa5a5a5a5»
0
Не знаю где спросить, напишу тут.
Как в кокосе посмотреть ассемблерный листинг?
0
Надо перейти в режим отладки
0
Написать в Run after build (вкладка User в меню Configuration) директории поправить если другие:
«c:/program files/gnu tools arm embedded/4.7 2013q3/arm-none-eabi/bin/objdump.exe» -d -S ${project.bin}/${project.name}.elf > ${project.bin}/${project.name}.txt
0
Спасибо! Мне удавалось только вручную через bat-файл, и без включений с-кода (ключ -S добавляет код с комментариями).
Если использовать -D вместо -d, то добавляется остальные секции, помимо .text, особенно жирная — .debug_info
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.