STM32DUINO CORE с системой Workbench для Bluepill

Рик Кимбалл
Чт 28 апреля 2016 г., 19:14
[Примечание: с тех пор, как я впервые написал этот пост, OpenStm32.Org выпустила настроенные версии Eclipse для Windows, Linux и OS/X. Эти двоичные файлы связаны с их плагином и другими улучшениями. Лучше всего скачать последнюю версию от http: // www.OpenSTM32.орг ]

Я собрал наше ядро ​​STM32Duino в качестве импортируемого проекта Eclipse. Он основан на использовании http: // www.OpenSTM32.орг Плагин системы Workbench Eclipse. Мой подход отличается от того, что делают большинство людей, эта настройка не использует плагин Arduino. Требуемые определяют и включают пути, а выполняемые пути просто установлены в свойствах проекта Eclipse. Эта конфигурация проекта может дать вам быстрый начальный шаблон для использования платы Bluepill и ключи STLINK с голым металлическим затмением, используя ядро ​​STM32Duino Arduino Core. Я включил недавний снимок дерева Master Github и сделал несколько настройки исходного кода. Пример «эскиз» в SRC/Asciable.CPP.

Я сделал несколько предположений. Я предполагаю, что вы используете Linux. Я ожидаю, что у вас будет работающий Arduino 1.6.x с установленным. Я предполагаю, что у вас установлен Eclipse Mars вместе с системой Workbench для STM32 от OpenStm32.сайт орг. Я предполагаю, что вы используете плату красной или синей таблетки STM32F103, которая использует PA12 1.5K подтягивает резистор. Я предполагаю, что вы собираетесь запрограммировать его, используя ключ Stlink V2, либо клон eBay, настоящий stlink, либо доска для обнаружения, подготовленная для программирования внешней платы (Bluepill).

Просто используйте файл меню/импорт... Выберите вкладку «Общие» и второй элемент выбора под названием «Существующий проект в рабочее пространство». В диалоговом окне «Импорт» нажмите «Выбрать файл архива:».Zip из каталога, где вы сохранили файл ниже

Тогда быстрое сборка и отладка должны заставить вас начать.

Если это получит достаточный интерес, я напишу об этом больше.

Я поместил архивированный проект в Bluepill.Zip in Gist, так как она слишком велика, чтобы прикрепить прямо здесь:

https: // Gist.GitHub.com/rickkimball/aa7 ... Uepill.молния

https: // Gist.GitHub.com/rickkimball/aa7 ... 0b8f92eba9

-рик

Запуск отладки и просмотр регистров GPIO:
debug_01.gif
DEBUG_01.GIF (113.7 киб) просмотрено 3691 раз

Сжимать
Чт 28 апреля 2016 г., 8:47 вечера
Очень хорошо....
Мне нравится этот способ развития!

Сжимать
Чт 28 апреля 2016 г., 23:44
Я только что использовал ваш проект, чтобы создать простую программу мигания.
Сборка в порядке, но когда я пытаюсь отладить программу, у меня есть следующая ошибка: Error: timed out while waiting for target halted TARGET: stm32f1x.cpu - Not halted in procedure 'program' in procedure 'reset' called at file "embedded:startup.tcl", line 478 in procedure 'ocd_bouncer'

Рик Кимбалл
Пт 29 апреля 2016 г. 12:26 утра
Если вы использовали Arduino IDE для загрузки файлов без использования метода Stlink или BMP, то вы, вероятно, отключили выводы отладки и сделали их выводами GPIO случайно.

Вы можете заставить BluePill работать со Stlink, переключив перемычку Boot0 из положения «0» на Boot0 '1'. Затем нажмите сброс, чтобы чип мог увидеть новую конфигурацию Boot0, а затем попробуйте еще раз. Убедитесь, что вы убили застопоточную сессию отладки в Eclipse. Если это работает, и вы можете успешно загрузить, вы можете переключить перемычку Boot0 на '0'.

-рик

ZMEMW16
Пт 29 апреля 2016 г. 1:08
Я установил Eclipse Mars CDT через установщик, установил Workbench из Inside Eclipse; Он нуждался в перезапуске, а затем установил GCC и сам openocd.
Я вытащил чертеж.молния

Я как обычно для меня, что -то упускаю.
Я могу выбрать чертежи.ZIP -файл, но я не могу установить каталог для места для импорта архива. У него есть кнопка «Просмотр», которая просто дает 3, я предполагаю, что вылетел очень маленький дом, вверх и в кнопки???

Затем я попытался создать пустой проект BluePill, теперь он позволяет выбирать рабочую область/Bluepill в качестве папки назначения,
Но теперь у меня есть проект Top Dir Bluepill с детским режимом, держащим все остальное.

Я не совсем убежден, что у меня есть правильный чертеж.Zip, главным образом потому, что я не могу найти эскиз Blink, и он больше похож на структуру и файлы каталога JC66_Coreboard.

Если бы вы могли подтвердить следующее? stephen@i7:~$ ls -l bluepill.zip -rw-r--r-- 1 stephen stephen 3841736 Apr 28 20:20 bluepill.zip stephen@i7:~$ stephen@i7:~$ md5sum bluepill.zip f2fdced2541e91604b28d85ff44aaa45 bluepill.zip stephen@i7:~$ stephen@i7:~$ cd Workspace/bluepill/bluepill/src stephen@i7:~/Workspace/bluepill/bluepill/src$ ls -l total 12 -rw-r--r-- 1 stephen stephen 1070 Apr 28 13:05 asciitable.cpp -rw-r--r-- 1 stephen stephen 65 Apr 28 12:30 extra.c -rw-r--r-- 1 stephen stephen 2727 Apr 28 08:06 streaming.h stephen@i7:~/Workspace/bluepill/bluepill/src$

Рик Кимбалл
Пт 29 апреля 2016 г. 1:18
Вам нужно убедиться, что вы делаете файл/импорт ... «Существующий проект в рабочее пространство» Это второй выбор под общим. Это создаст новую запись проекта в вашей рабочей области. Первый выбор «архивный файл» работает только с существующим проектом и будет действовать так, как вы описали. Обратите внимание на прикрепленные анимированные изображения:
import_sequence.gif
Import_sequence.GIF (109.19 киб) просмотрено 3664 раз

Рик Кимбалл
Пт 29 апреля 2016 г. 2:14
Если вы действительно хотите успешно отладить.CPP, который использует USBERIAL, вы можете посмотреть на мою сессию отладки.
Debugsession.gif
отладка.GIF (224.16 киб) просмотрено 3658 раз

Сжимать
Пт 29 апреля 2016 г., 11:06
Как я вижу, AC6 Workbench включает в себя GCC 5.2.1 в качестве компилятора по умолчанию :!:

Рик Кимбалл
Пт 29 апреля 2016 г. 11:17 утра
Сламмер написал:Как я вижу, AC6 Workbench включает в себя GCC 5.2.1 в качестве компилятора по умолчанию :!:

Сжимать
Пт 29 апреля 2016 г., 11:36 утра
Да, я это видел. С 5.2.1 двоичный файл почти на 2 КБ меньше :!:
В любом случае я делаю еще несколько тестов, чтобы увидеть, что отличается....

Рик Кимбалл
Пт 29 апреля 2016 г., 11:42
Вы успешно отлаживали с Stlink?

Сжимать
Пт 29 апреля 2016 г. 11:50 утра
Да! я сделал это... Спасибо.
Я пытаюсь сделать версию HALMX сейчас....

Рик Кимбалл
Пт 29 апреля 2016 г. 15:06
При запуске Eclipse и плагин System Workbench есть раздражающая ошибка на Ubuntu. Нормальный способ доступа к диалогу «Свойства» для внесения изменений в настройки / настройки C / C ++ - это щелкнуть правой кнопкой мыши проект в проводнике проекта. Однако при запуске Ubuntu это вызовет повеселье в течение многих десятков секунд. В прошлом у меня были проблемы с другими приложениями, основанными на GTK3, поэтому я попробовал свое время, честь настройки ENV, чтобы решить проблему. Я изменил свое затмение.Настольный файл как это:
[Desktop Entry] Type=Application Version=0.9.4 Name=Eclipse Comment=Eclipse Mars 2 Icon=/home/kimballr/opt/eclipse/icon.xpm Exec=env SWT_GTK3=0 UBUNTU_MENUPROXY=0 /home/kimballr/opt64/eclipse/eclipse -showlocation Terminal=false Path=/home/kimballr/ Name[en_US]=Eclipse-Mars2(64bit)

ZMEMW16
SAT 30 апреля 2016 г. 12:06
@rick
Любая рекомендация при следующем поступлении на «обновления доступно»?

Я видел сообщение, связанное с Maxpermsize Как непризнанный переключатель, Eclipse.INI был модифицирован удаление линий с помощью xxmaxpermsize и следующей строки для каждой.

Не могли бы вы подробно описать строку * kimbal * нужно отредактировать? Я Стивен : D
на пути OpenOcd также???

Я использую модифицированный 1.6.5r5, где его точка Dir - это arduino165r5, аналогично 1.78 и т. Д
В итоге я использовал мягкую ссылку на мои установленные файлы Arduino и добавил ~/Stephen/ARM на путь в Eclipse.
Мне интересно произойдет после установки обновлений?

Я играю с NRF24 в данный момент, добавляя в их включение в качестве «См. Что происходит», доходность «не найдено» сообщений.
Где/как я добавил бы локальные пользовательские библиотеки? Есть ли путь поиска, который нужно изменить?
В записи библиотеки в рамках проекта перечислены стандартные arduino_stm32.

Любые советы о том, как я бы использовал Maple Mini в этой настройке?
Я полагаю, что использование чертежа, запрограммированного в качестве BMP, может оказаться интересным?

Вы упомянули, что выпили несколько? Да, пожалуйста.

Стивен

Рик Кимбалл
SAT 30 апреля 2016 г., 4:34
ZMEMW16 написал: Любая рекомендация при следующем поступлении на «обновления доступно»?

ZMEMW16
SAT 30 апреля 2016 г. 18:44
Я думаю, мне нужен еще один ноутбук для экрана! Я либо говорю о себе, либо из -за приобретения другого, неприятности - это разница в цене между «приличным» i3, и не совсем приличный i5 не так уж и много. Теперь чак в жестком диске 8 ГБ и 1 ТБ.

Хорошо, я уйду и немного с этим скандал ... ... ...

Стивен

Рик Кимбалл
SAT 30 апреля 2016 г., 21:05
Вот хороший обзор слайд -шоу оснований того, как создать проект и отладка с помощью системы Workbench:

http: // www.STM32.ЕС/Сайты/По умолчанию/файлы ... ench_0.PDF

-рик

Стивестронг
Солнце 02 октября 2016 г., 17:00
Я решил настроить проект, который позволяет отлаживать, и который позволяет мне строить с или без Arduino IDE.
Для этого я прочитал о Eclipse, и я, хотя я попробую это.

Ну, это не так просто, потому что я работаю на компьютере win10.

Сначала я читал о плагине Eclipse для Arduino. После нескольких неудачных попыток и ошибок (два дня боли..) Я хотел попробовать проект Рика.

@Rick,
После того, как я импортировал проект и адаптировал переменную пути, чтобы найти «сделать.exe "Теперь я получаю сообщение об ошибке:
"Сделать: нет правила, чтобы сделать цель".
Какой путь я должен включить сейчас?

Рик Кимбалл
Солнце 02 октября 2016 г., 17:41
Я не могу сказать в Windows, извините.

Rogerclark
Солнце 02 октября 2016 г., 21:20
Стив

Вы можете загрузить Linux в виртуальную машину.

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

Рик Кимбалл
Солнце 02 октября 2016 г. 22:43
Стивестронг написал:Сначала я читал о плагине Eclipse для Arduino. После нескольких неудачных попыток и ошибок (два дня боли..) Я хотел попробовать проект Рика.

Стивестронг
Пн, 3 октября 2016 г. 8:39 утра
Рик,
Большое спасибо, мне наконец -то удалось успешно построить проект на моей машине Win10, без Linux VM.

Я сделал:
- Я выполнил шаги, рекомендованные Установите SW4STM32, на существующую установку Eclipse,
- адаптировали пути для GCC (из каталога Arduino) и сделать.Exe (из каталога плагинов AC6)

Теперь постараюсь отладить...

Эдогальдо
Чт, 6 октября 2016 г. 8:49
Привет, Рик, можно ли добавить метод загрузки USB2Serial в шаблон вашего проекта? Если да, можете ли вы посоветовать это?

PS: Я знаю, что USB2Serial не поддерживает отладку, но в настоящее время у меня нет устройства ST-Link, и мне просто нужна функция загрузки..


Спасибо заранее и лучше, E.

Рик Кимбалл
Чт 06 октября 2016 г. 13:29
Эдогальдо написал: .. Можно ли добавить метод загрузки USB2Serial в шаблон проекта?

Эдогальдо
Чт 06 октября 2016 г. 14:09
Спасибо, Рик, я попробую настроить.

Интересная вещь: я попытался собрать проект Bluepill с компилятором SW по умолчанию (GCC 5.2.1) и я получаю ошибку: "Конфликтное объявление функции C 'char* utoa (длинный беззначенный int, char*, int)'"В файле" Itoa.H ", где утоа определяется как: extern char* utoa( unsigned long value, char *string, int radix ) ;

Sheepdoll
Чт, 6 октября 2016 г., 15:43
Эдогальдо написал:Спасибо, Рик, я попробую настроить.

Интересная вещь: я попытался собрать проект Bluepill с компилятором SW по умолчанию (GCC 5.2.1) и я получаю ошибку: "Конфликтное объявление функции C 'char* utoa (длинный беззначенный int, char*, int)'"В файле" Itoa.H ", где утоа определяется как: extern char* utoa( unsigned long value, char *string, int radix ) ;

Эдогальдо
Чт 06 октября 2016 г., 16:13
Даже с -nostdlib я получаю ошибку: 'Building file: ../cores/maple/WString.cpp' 'Invoking: MCU G++ Compiler' C:\EDOGALDO\STM32\RickKimball_bluepill\bluepill\Debug arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -DSTM32F103C8Tx -DDEBUG -DVECT_TAB_ADDR=0x8000000 -DGENERIC_STM32F103C -DF_CPU=72000000L -DBOARD_GENERIC_STM32F103C -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG -DSERIAL_USB -D__STM32F1__ -DARDUINO=10605 -DBOARD_generic_stm32f103c -DMCU_STM32F103CB -DGENERIC_BOOTLOADER -DARDUINO_ARCH_STM32F1 -DERROR_LED_PORT=GPIOB -DERROR_LED_PIN=1 -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/system/libmaple" -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/system/libmaple/include" -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/system/libmaple/stm32f1/include" -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/system/libmaple/usb/stm32f1" -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/system/libmaple/usb/usb_lib" -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/cores/maple" -I"C:/EDOGALDO/STM32/RickKimball_bluepill/bluepill/variants/generic_stm32f103c" -Os -g3 -Wall -fmessage-length=0 --param max-inline-insns-single=500 -nostdlib -ffunction-sections -c -fno-exceptions -fno-rtti -MMD -MP -MF"cores/maple/WString.d" -MT"cores/maple/WString.o" -o "cores/maple/WString.o" "../cores/maple/WString.cpp" In file included from ../cores/maple/WString.cpp:23:0: ../cores/maple/itoa.h:34:65: error: conflicting declaration of C function 'char* utoa(long unsigned int, char*, int)' extern char* utoa( unsigned long value, char *string, int radix ) ; ^ In file included from c:\users\EDOGALDO\.p2\pool\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.7.0.201602121829\tools\compiler\arm-none-eabi\include\stdlib.h:11:0, from ../cores/maple/WString.h:26, from ../cores/maple/WString.cpp:22: c:\users\EDOGALDO\.p2\pool\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.7.0.201602121829\tools\compiler\arm-none-eabi\include\stdlib.h:185:8: note: previous declaration 'char* utoa(unsigned int, char*, int)' char * _EXFUN(utoa,(unsigned, char *, int)); ^ ../cores/maple/WString.cpp: In constructor 'String::String(unsigned char, unsigned char)': ../cores/maple/WString.cpp:74:23: error: call of overloaded 'utoa(unsigned char&, char [9], unsigned char&)' is ambiguous utoa(value, buf, base); ^ In file included from c:\users\EDOGALDO\.p2\pool\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.7.0.201602121829\tools\compiler\arm-none-eabi\include\stdlib.h:11:0, from ../cores/maple/WString.h:26, from ../cores/maple/WString.cpp:22: c:\users\EDOGALDO\.p2\pool\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.7.0.201602121829\tools\compiler\arm-none-eabi\include\stdlib.h:185:8: note: candidate: char* utoa(unsigned int, char*, int) char * _EXFUN(utoa,(unsigned, char *, int)); ^ In file included from ../cores/maple/WString.cpp:23:0: ../cores/maple/itoa.h:34:14: note: candidate: char* utoa(long unsigned int, char*, int) extern char* utoa( unsigned long value, char *string, int radix ) ; ^ make: *** [cores/maple/WString.o] Error 1

Рик Кимбалл
Чт, 6 октября 2016 г., 16:42
-Nostdlib - это флаг линкера, а не флаг времени компиляции, он не имеет ничего общего с компиляцией.

Sheepdoll
Чт, 6 октября 2016 г., 16:47
Эдогальдо;

Это соответствующий раздел Makefile, который работает для меня на нукле (у меня нет синей таблетки.) Я использую BSD под OSX.
# compile gcc flags ASFLAGS = -MMD -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10604 -DARDUINO_STM_NUCLEO_F103RE -DARDUINO_ARCH_HALMX -DSTM32F103xE -DSTM32_MEDIUM_DENSITY -DSTM32F1 -DBOARD_NUCLEO_F103RE -mthumb -D__STM32F1__ ASFLAGS += $(AS_INCLUDES) -fdata-sections -ffunction-sections CFLAGS = -g -Os -w -DDEBUG_LEVEL=DEBUG_NONE -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 CFLAGS += -DBOARD_MXNucleoF103 -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10604 -DARDUINO_STM_NUCLEO_F103RE CFLAGS += -DARDUINO_ARCH_HALMX -DSTM32F103xE -DSTM32_MEDIUM_DENSITY -DSTM32F1 -DBOARD_NUCLEO_F103RE -mthumb -D__STM32F1__ $(C_INCLUDES) ifeq ($(DEBUG), 1) CFLAGS += -g -gdwarf-2 endif # Generate dependency information CPPFLAGS = -g -Os -w -DDEBUG_LEVEL=DEBUG_NONE -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 CPPFLAGS += -fno-rtti -fno-exceptions -DBOARD_MXNucleoF103 -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10604 -DARDUINO_STM_NUCLEO_F103RE CPPFLAGS += -DARDUINO_ARCH_HALMX -DSTM32F103xE -DSTM32_MEDIUM_DENSITY -DSTM32F1 -DBOARD_NUCLEO_F103RE -mthumb -D__STM32F1__ $(C_INCLUDES)

Эдогальдо
Чт 06 октября 2016 г. 16:59
Sheepdoll написал:В Eclipse мне пришлось добавить эти флаги в «свойства .. C C ++ General .. Пути и символы .. #Вкладка #symbols."В противном случае проверка синтаксиса Eclipse продолжала давать мне такую ​​же ошибку. Вы должны включить #Symbols для каждого языкового модуля.

В настоящее время мой код компилирует. Вернится с исключением NILL Pointer где -то в коде Статического распределения запуска, относящегося к USB/CDC или I2C.
[...]

Рик Кимбалл
Чт 06 октября 2016 г. 16:59
Эдогальдо написал:Спасибо, Рик, я попробую настроить.

Интересная вещь: я попытался собрать проект Bluepill с компилятором SW по умолчанию (GCC 5.2.1) и я получаю ошибку: "Конфликтное объявление функции C 'char* utoa (длинный беззначенный int, char*, int)'"В файле" Itoa.H ", где утоа определяется как: extern char* utoa( unsigned long value, char *string, int radix ) ;

Рик Кимбалл
Чт 06 октября 2016 г., 17:07
ждать ...

Человек Либстд говорит:

...
Нестандартный (я.эн. Не-ISO C) функции.
char * ltoa (long val, char * s, int radix)
char * utoa (unsigned int val, char * s, int radix)
char * ultoa (unsigned long val, char * s, int radix)
Длинный случайный (void)
void srandom (unsigned long __eed)
long random_r (unsigned long *__ ctx)
char * itoa (int val, char * s, int radix)
#define random_max 0x7fffffff

..
Итак, вы просто хотите изменить utoa, а не Ultoa .

-рик

Рик Кимбалл
Чт 06 октября 2016 г., 17:11
Оказывается, у кода Arduino есть «исправление» для этого

https: // github.com/arduino/arduino/pull/4830/файлы

Эдогальдо
Чт 06 октября 2016 г., 17:19
Рик Кимбалл написал:Оказывается, у кода Arduino есть «исправление» для этого

https: // github.com/arduino/arduino/pull/4830/файлы

Рик Кимбалл
Чт, 6 октября 2016 г., 17:35
Нам придется применить исправление в какой -то момент. Когда версия Arm-none-ebi-gcc превышает 4.9.2 В Arduino IDE мы вынуждены иметь дело с этим.

Рик Кимбалл
Чт, 6 октября 2016 г. 18:05
Эдогальдо написал:Даже с -nostdlib я получаю ошибку: 'Building file: ../cores/maple/WString.cpp' 'Invoking: MCU G++ Compiler' ...

Стивестронг
Чт, 6 октября 2016 г., 8:08 вечера
Эдогальдо написал:PS: Еще один вопрос: есть ли способ, чтобы проект использовал ядро ​​Maple, доступное в папке [Arduino Installation]/аппаратное обеспечение без дублирования его в пути проекта?

Рик Кимбалл
Чт 06 октября 2016 г., 8:12 вечера
Стивестронг написал:Эдогальдо написал:PS: Еще один вопрос: есть ли способ, чтобы проект использовал ядро ​​Maple, доступное в папке [Arduino Installation]/аппаратное обеспечение без дублирования его в пути проекта?

Rogerclark
Чт 06 октября 2016 г., 8:45 вечера
Рик

Я рад добавить это изменение для Utoi и т. Д. И платформы.txt fix,

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

Проблема UTOI уже поражает меня, так как некоторые другие ядра обновлялись, чтобы потребовать GCC 5.X I и я получаю проблемы, если добавлю компилятор в папку IDE Hidden GCC Toolchain

Эдогальдо
Чт 06 октября 2016 г., 8:57 вечера
Стивестронг написал:Эдогальдо написал:PS: Еще один вопрос: есть ли способ, чтобы проект использовал ядро ​​Maple, доступное в папке [Arduino Installation]/аппаратное обеспечение без дублирования его в пути проекта?

Рик Кимбалл
Чт, 6 октября 2016 г., 21:06
Я думаю, он говорит об этом http: // eclipse.Baeyens.это/ ?

Стивестронг
Чт 06 октября 2016 г., 21:51
Рик, извините, я не хотел говорить, что другой лучше, я просто указал на альтернативное решение, чтобы не копировать источники.
Я очень ценю вашу работу.

О, и у меня также есть плагин системы Workbench, эти 2 плагина, кажется, сосуществуют мирно : P

Rogerclark
Пт, 07 октября 2016 г. 1:36
Стив

Какой из них является вашим личным предпочтением ?

Стивестронг
Пт 07 октября 2016 г., 7:27 утра
Мое предпочтение Eclipse C ++ IDE для Arduino.
Причина: копия файла не требуется, пользователь гибкий, выбирая либо Arduino IDE, либо Eclipse IDE без дополнительных усилий.

Rogerclark
Пт 07 октября 2016 г., 7:40
Спасибо

Умежопа
Чт 27 октября 2016 г., 16:01
Как настроить Eclipse для работы с клоном Chines St-Link V2 и STM32F103 для отказа ?
Он работает с платой Nucelo64 с ST-Link на борту

Invalidexception
Солнце 13 ноября 2016 г. 18:00
Стивестронг написал:Мое предпочтение Eclipse C ++ IDE для Arduino.
Причина: копия файла не требуется, пользователь гибкий, выбирая либо Arduino IDE, либо Eclipse IDE без дополнительных усилий.

Rogerclark
Солнце 13 ноября 2016 г., 19:21
Существует синяя версия таблеток, но она не была полностью объединена с репо, и для него нет пакета менеджера досок (и не будет для некоторого TME)

Роберткендрик
Ср. 07 декабря 2016 г. 15:08
Привет
Очень интересный проект (Bluepill). Я использовал ваши файлы проекта с последней системой Workbench (ноябрь 2016 г.), и хотя он собирал и связан (после выпуска UTOA), доска (JC66_Coreboard) не будет перечислять под USB («Устройство не распознано ....").
Я подумал, что это может использоваться довольно старые файлы Bluepill Arduinostm32 с более новой системой Workbench, поэтому я создал новую структуру каталогов Bluepill_2, используя существующую макет Bluepill и следовал за ним, но используя самые последние файлы arduiostm32. Это не удалось построить с двумя проблемами, которые я сейчас решил:
1) Обычный утоа
2) Неразрешенная ссылка на _init

Вторая проблема оказалась в файле запуска (start_c.c Если я правильно помню). Ваш файл запуска Bluepill был манекен _init () {asm nop}, но мой, скопированный из последнего arduinostm32, не. Мой вопрос: вы создали эту фиктивную функцию _init в файле запуска или всегда было в исходных файлах arduinostm32, и с тех пор был удален. Если последнее вы знаете, почему это было удалено ?

И, наконец, хотя ваш проект Bluepill успешно находит файл CFG OpenOCD (JC66_Coreboard.CFG) в шахте каталогов проектов Bluepill не. Я проверил, что файл существует, и в системе Workbench я выбрал «локальный скрипт» и проверил имя правильное, но он всегда возвращается к «скрипту не найдено». Когда я запускаю OpenOcd, сообщение об ошибке отображает каталог AC6-Plugin-Stboard-Scripts и, если я скопирую jc66_coreboard.CFG в этом каталоге все работает так, как должно. Но я не могу заставить его работать из местного каталога проектов.

Какова была цель копирования на платформу.TXT и доски.TXT файлы. Это не избыточно в системном рабочем месте?

В любом случае, отличная работа, я в долгу.

Рик Кимбалл
Ср. 07 декабря 2016 г., 16:27
Роберткендрик написал:Какова была цель копирования на платформу.TXT и доски.TXT файлы. Это не избыточно в системном рабочем месте?

Рик Кимбалл
Ср. 07 декабря 2016 г., 17:37
Глядя на детали функции _init (), которую мы видим. 0800328c <_init>: 800328c: b5f8 push {r3, r4, r5, r6, r7, lr} 800328e: bf00 nop 8003290: bcf8 pop {r3, r4, r5, r6, r7} 8003292: bc08 pop {r3} 8003294: 469e mov lr, r3 8003296: 4770 bx lr

Роберткендрик
Ср. 07 декабря 2016 г. 11:10
Спасибо, что нашли время, чтобы написать это.

Да, я запускал системный компилятор Workbench. Итак, как обычно, большинство моих проблем были причинены самостоятельно.

Точка также взята на файл CFG OpenOCD. Я искал файлы проектов (XML) и озадачил, почему не было упоминания о инструментах и ​​настройках отладки. Предположим, что они настроены через плагины Eclipse.

AG123
Пн 17 апреля 2017 г. 11:12
всем привет,

Я использую Eclipse (на самом деле без Slakeber) Я устанавливаю определения, определяя их вручную, используя платформы.TXT и доски.TXT в качестве ссылки. Утомительно, но это работает.

ОТ: >> Это не системный Workbench, это затмение GNU ARM http: // gnuarmeclipse.GitHub.io. Глядя на первый пост, я думаю, что System Workbench - это буквально лучшая настройка для работы и, после чего все это создано самим ST, если я прав в этом. GNU Arm Eclipse находится в перспективе «публичные сторонние усилия», окружающая среда, возможно, похожа на системную Workbench, разработчик (ы) GNU Arm Eclips От Olimex, есть эмулятор QEMU, который занимается несколькими досками из Olimex и целевых целей STM32 F1 и F4, но функции неполны (E.глин. Я думаю, что приоритеты прерывания в настоящее время не будут работать) и, следовательно, только базовая функциональность эмуляции) и Segger J-Link и OpenOCD подключение <<

Вот как я разбил проблемы

Утоа () выпуск

Как упомянул Рик
https: // github.com/arduino/arduino/pull/4830/файлы
Это просто потому, что более поздние версии GCC выполнили функцию utoa (), которая имеет несколько иную декларацию

В моей локальной копии STM32F1/Cores/Maple/Itoa.час #define GCC_VERSION (__GNUC__ * 10000 \ + __GNUC_MINOR__ * 100 \ + __GNUC_PATCHLEVEL__) #if !(GCC_VERSION > 40902) extern char* utoa( unsigned long value, char *string, int radix ) ; #endif

Рик Кимбалл
Пн 17 апреля 2017 г. 12:03
AG123 написал:...
Единственная проблема заключается в том, что это является частью вариантов кодов запуска, поэтому нам нужно будет исправить каждый вариант, если мы хотим исправить отсутствующий _init ()

AG123
Пн 17 апреля 2017 г. 12:50
Спасибо, Рик,
Я нашел init () в STM32F1/Variants/Maple_mini/Wirish/Poards.CPP
я.эн. это часть варианта

Тем не менее, я не могу понять, как Premain (), который вызывает init ()
исправляется в __preinit_array

Видимо в коде Newlib функция __libc_init_array ()
https: // github.com/eblot/newlib/blob/ma ... ISC/Init.в
определяется как таковой: /* Handle ELF .{pre_init,init,fini}_array sections. */ #include #ifdef HAVE_INITFINI_ARRAY /* These magic symbols are provided by the linker. */ extern void (*__preinit_array_start []) (void) __attribute__((weak)); extern void (*__preinit_array_end []) (void) __attribute__((weak)); extern void (*__init_array_start []) (void) __attribute__((weak)); extern void (*__init_array_end []) (void) __attribute__((weak)); extern void _init (void); /* Iterate over all the init routines. */ void __libc_init_array (void) { size_t count; size_t i; count = __preinit_array_end - __preinit_array_start; for (i = 0; i < count; i++) __preinit_array_start[i] (); _init (); count = __init_array_end - __init_array_start; for (i = 0; i < count; i++) __init_array_start[i] (); } #endi

Рик Кимбалл
Пн 17 апреля 2017 г. 12:53
AG123 написал: Отсутствует _init ()

Оказывается, _init (), возможно, предназначена для инициализации общей библиотеки (e.глин. в Linux) и Newlib не поставляется с этим,
http: // dbp-консультирование.com/Учебные пособия/deb ... арт.HTML
Я отметил, что Newlib предоставляет void __libc_init_array (), но не предоставляет _init ()

Я обсуждал это в некоторых деталях здесь http: // www.STM32duino.com/viewtopic.PHP ... = 80#p25978

Рик Кимбалл
Пн 17 апреля 2017 г. 13:01
AG123 написал:Тем не менее, я не могу понять, как Premain (), который вызывает init ()
исправляется в __preinit_array

AG123
Пн 17 апреля 2017 г. 13:03
Спасибо, Рик, тогда казалось, что в моем случае я пропустил, чтобы включить либера

Вау, я отслеживал и отслеживал, и я просто не мог понять, где в сценариях LD, файлы ассемблеров или C -функции, которые Premain () каким -то образом попадает в init_array : D

Рик Кимбалл
Пн 17 апреля 2017 г. 13:08
AG123 написал:Спасибо, Рик, тогда казалось, что в моем случае я пропустил, чтобы включить либера : D

AG123
Пн 17 апреля 2017 г. 13:13
Я сталкиваюсь с проблемой «толстых двоичных файлов» и в попытке решить, что я установил флаги LD
--nostdlib нет стандартной либера
-Xlinker-gc-сечения удаляют неиспользованные секции
--Spects = nano.Спецификации используют newlib-nano

Я на самом деле строю, используя gcc-arm-none-eabi-6-2017-q1-update, пока он работает
Тем не менее, я получаю ошибку _init () не определяется, если установлены параметры LD выше
Я предполагаю, что -nostdlib переопределения -specs = nano.спецификации и, следовательно, _init () больше не включены
Однако без -Ностдлиб бинарный размер значительно более высокий, даже если -specs = nano.спецификации указаны
http: // www.STM32duino.com/viewtopic.PHP ... = 80#p25978

Хорошо, я обнаружил кое-что о моей установке GCC GCC-ARM-None-EAB-6-2017-Q1-UPDATE (это на самом деле 6.3.1 Идя по именам путей, которые я вижу)
В папке установки GCC-ARM-None-EABI-6-2017-Q1-UPDATE/LIB/GCC/ARM-None-EABI/6.3.1

есть 2 CRT*.o Файлы: CRTI.o и crtn.о
nm crti.o 00000000 T _fini 00000000 T _init

Рик Кимбалл
Пн 17 апреля 2017 г. 13:20
Вы, вероятно, хотите «-nostartfiles» вместо «-nostdlib».

-NostartFiles позволяет предоставить свой собственный код запуска, но позволяет ссылаться с Nano.Спецификации Libc Stuff.

Что касается раздувания кода, вам нужно потратить некоторое время на Arm-none-eabi-objdump -cs yoursketch.Ино.CPP.эльф | Меньше, чтобы увидеть, что заставляет ваш код раздуваться.

AG123
Пн 17 апреля 2017 г. 14:24
Я думаю, что, возможно, лучше просто позвонить в init () до вызова main () в start_c (), это сделает код более читабельным. Но в то же время, что конструктор «черная магия» работает, следовательно, я думаю, что мы оставим это, пока это не : D

GCC интересен, с таким количеством неясных/часто игнорируемых функций в секциях эльфов
http: // www.CS.Стивенс.edu/~ jschauma/810/elf.HTML
http: // refspecs.Linuxbase.org/lsb_3.0.0 ... не.HTML

Paksoft
Пт 24 ноября 2017 г. 16:44
Я пытался использовать чертежи Рика.Zip с AC6 в Windows 10 (64 бит), потому что настройка Linux слишком сложно для меня. Я использую синюю таблетку и ST-Link от eBay.
Я просто новичок в программном обеспечении Eclipse. Я пытаюсь сделать несколько параметров, но, наконец, у меня есть сообщение об ошибке. Похоже на фальшивую ошибку ST-Link?

Пожалуйста, дайте несколько предложений.

пак

Рик Кимбалл
Пт 24 ноября 2017 г. 18:00
Вы, вероятно, должны создать новый тестовый проект, используя системный Workbench без использования конфигурации моего проекта. Убедитесь, что вы можете скомпилировать и отлаживать в Windows. Похоже, вы указываете неправильное устройство Stlink, на основе несоответствия VID/PID.

VID/PID 0x0483 0x3748 для ST-Link/V2
VID/PID 0x0483 0x374B для ST-Link/V2-1

Я настроил проект, ожидая Stlink-V2 ... Если вы используете устройство «НУКОВОЕ НАКЛЮЧЕНИЕ», вы можете изменить:
Источник [Найти интерфейс/Stlink-V2.CFG]
к
Источник [Найти интерфейс/Stlink-V2-1.CFG]

Это был openocd.CFG я использовал. # An openocd config for the jc66_coreboard board with a single STM32F103C8Tx chip. source [find interface/stlink-v2.cfg] set WORKAREASIZE 0x4000 transport select hla_swd source [find target/stm32f1x_stlink.cfg] adapter_khz 950 # use software reset reset_config none

Рик Кимбалл
Пт 24 ноября 2017 г. 18:32
Итак, я только что обновил свой системный кабинет. Кажется, автоматическая сгенерированная теперь на самом деле работает со Stlink-V2-1 ...
# Это плата Bluepill с одним чипом STM32F103CBTX
#
# Сгенерировано системным рабочим средством для STM32
# Позаботьтесь о том, что такой файл, как сгенерированный, может быть отменен без какого -либо раннего уведомления. Пожалуйста, посмотрите на настройку конфигурации запуска запуска запуска

Источник [найти интерфейс/stlink.CFG]

Установите Workareasize 0x5000

Транспорт выберите "hla_swd"

Установите ChipName STM32F103CBTX

# Включить отладку в режимах низкой мощности
Установить enable_low_power 1

# Остановите счетчики сторожевого пса, когда остановится
Установите stop_watchdog 1

# Stlink Debug Частота такта
Установить clock_freq 4000

# Используйте аппаратное сброс, подключите к сбросу
# connect_assert_srst необходимо, если запуск приложения режима низкой питания (wfi...)
reset_config srst_only srst_nogate connect_assert_srst
Установите Connect_under_reset 1

Источник [Найти Target/STM32F1X.CFG]
Поиск в моем каталоге AC6 я нахожу Stlink.CFG .. есть это:
$ Найти . -Iname 'Stlink.cfg '
./Systemworkbench/plugins/fr.AC6.MCU.DEBUG_2.1.3.201710251246/resources/openocd/st_scripts/interface/stlink.CFG
$ vi $ (найти . -Iname 'Stlink.CFG ')

...
#
# Stmicroelectronics ST-Link In-Circuit Debugger/Progrommer
#

Интерфейс HLA
hla_layout stlink
HLA_DEVICE_DESC "ST-LINK/V2-1"
hla_vid_pid 0x0483 0x374b
Вам придется использовать пользовательский openocd.Файл CFG вы больше не можете использовать автоматическую сгенерированную.

Примечание: постоянная борьба, чтобы сохранить работу, которые когда -то работали. Продавцы обновляют свои «функции», и обычно люди, которые вносят изменения, не заботятся о поддержании вещей с предыдущими версиями. ... Я думаю, что Рауль Джулия начал их на этом пути:

https: // www.YouTube.com/watch?v = ajgxn249fc0

Рик Кимбалл
Пт 24 ноября 2017 г., 19:45
Поскольку я в последний раз смотрел, кажется, что они добавили новую функцию, сервер ST-Link. Похоже, что он предлагает доступ как к интерфейсу отладки вместе с портом мониторинга последовательного просмотра (SWV).

https: // my.ул.com/content/my_st_com/en/ ... Эрвер.HTML

Вы можете проверить это.

Paksoft
Сб 25 ноября 2017 г. 18:54
@Rick Вы, вероятно, должны создать новый тестовый проект, используя системный Workbench без использования конфигурации моего проекта. Убедитесь, что вы можете скомпилировать и отлаживать в Windows. Похоже, вы указываете неправильное устройство Stlink, на основе несоответствия VID/PID. Я создал новый проект с кодом, сгенерированным STMCubemx.
Это работает, теперь мне нужно заменить CMSIS на ядро ​​STM32Duino Core. Не могли бы вы дать несколько рекомендаций по портированию STM32Duino Core Core?


пак