RoboCraft ARM IDE

Re: RoboCraft ARM IDE

Сообщение ajk » 21 мар 2013, 16:48

Под Виндой start-ide.bat, под линем eclipse. Там, вроде, другого нет.
ajk
 
Сообщения: 3
Зарегистрирован: 16 мар 2013, 20:26
programming: php

Re: RoboCraft ARM IDE

Сообщение ivan » 03 июл 2013, 01:42

Спасибо за статью, но написано не очень подробно для STM32L-discovery в win32. Сделал всё как у вас написано(скачал сборку, распаковал, установил драйвер ST-Link 2), но она не работает. В вашей сборке есть 2 файла: eclipse.exe и eclipsec.exe -какой из них для чего. Я делал скелетный проект в eclipsec.exe, пишет ошибку что нету elf-файла. В папке Debug его действительно нет. ЧТО делать? Помогите разобраться.
ivan
 
Сообщения: 1
Зарегистрирован: 30 июн 2013, 19:59
programming: c

Re: RoboCraft ARM IDE

Сообщение gyparr » 03 июл 2013, 06:57

Всем привет, специально зарегался чтоб проблемку решить)
Делал скелетный проект по уроку 1. В наличии у меня есть stm32l-discovery (надо было брать vl и не париться с иде =))
Короче говоря, сперва настраивал чистый эклипс - ошибки при компиляции. Решил попробовать уже настроенный вами эклипс - тоже самое. Не знаю даже теперь в чем и дело. Вот какие ошибки выскакивают:
errors
make: *** [StdPeripheralDriver/src/misc.o] Error 1 C/C++ Problem
makefile:46: *** unterminated variable reference. Stop. C/C++ Problem
makefile:46: *** unterminated variable reference. Stop. test C/C++ Problem
warning
ignoring changed section attributes for .data test line 14, external location: C:\Users\4\AppData\Local\Temp\ccs4pqbB.s C/C++ Problem

Сижу под виндой 7, 32бита.
gyparr
 
Сообщения: 1
Зарегистрирован: 03 июл 2013, 06:52
programming: C, C#, Java

Re: RoboCraft ARM IDE

Сообщение SilverSwift » 14 авг 2013, 07:47

ajk писал(а):То же самое, но под виндами. Что это за "Bad address"?
cs-make all
Building file: ../main.c
Invoking: ARM Sourcery Windows GCC C Compiler
arm-none-eabi-gcc -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD_VL -O0 -Wall -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -o"main.o" "../main.c"
/usr/bin/sh: /c/robocraft-arm-ide-0.1-windows-i686/arm-toolchain/bin/arm-none-eabi-gcc: Bad address
cs-make: *** [main.o] Error 126

Спасибо!
Александр

Наверное уже не актуально, но на будущее. У эклипса свой собственный PATH. ПКМ по проекту в эклипсе, Properties -> C/C++ Build -> Environment. Если PATH нет вообще жмем ADD, название переменной PATH, значение ${PATH} (естественно при этом в системном PATH должны быть прописаны пути к инструментарию сборки). Если переменная есть, жмем edit, проверяем наличие пути к компиляторам.

Путь /usr/bin/sh: /c/robocraft-arm-ide-0.1-windows-i686/arm-toolchain/bin/arm-none-eabi-gcc выглядит как дикая помесь виндовых и линуксовых путей. могу даже предположить, что лишняя часть "/usr/bin/sh: /". Но на 100% не скажу виндой не пользовался.

У меня вот проблема несколько иного рода. Имею STM32F4 Discovery. Я скачал эклипс с CDT, gnuшный gcc для ARM и st-util, скачал некоторый набор библиотек для мой платы с st.com. По отдельности все работает — компилятор справляется со сборкой int main(){}, st-util и gdb позволяют связаться с платой. Но когда я пробую собрать хотя бы один проект с примером начинается полная фигня на этапе линковки.

Пробовал разные скрипты. С вот таким:
Код: Выделить всё
SECTIONS
{
PROVIDE(__executable_start = 0x0008000);
. = 0x00008000 + SIZEOF_HEADERS;
.interp: { *(.interp) }
.note.ABI-tag: { *(.note.ABI-tag) }
.hash: { *(.hash) }
.dynsym: { *(.dynsym) }
.dynstr: { *(.dynstr) }
.version: { *(.version) }
.version_d: { *(.version_d) }
.version_r: { *(.version_r) }
.rel.dyn: { *(.rel.dyn) }
.rela.dyn: { *(.rela.dyn) }
.rel.plt: { *(.rel.plt) }
.rela.plt: { *(.rela.plt) }
.init: { KEEP (*(.init)) }
.plt: { *(.plt) }
.text: { *(.text .text.*) }
.fini: { KEEP (*(.fini)) }
PROVIDE(__etext = .);
PROVIDE(_etext = .);
PROVIDE(etext = .);
.rodata: { *(.rodata .rodata.*) }
__exidx_start = .;
.ARM.exidx: { *(.ARM.exidx*) }
__exidx_end = .;
. = ALIGN (CONSTANT (MAXPAGESIZE)) — ((CONSTANT (MAXPAGESIZE) — .) & (CONSTANT (MAXPAGESIZE) — 1));
. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
.tdata: { *(.tdata .tdata.*) }
.tbss: { *(.tbss .tbss.*) }
.preinit_array:
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
}
.init_array:
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
}
.fini_array:
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .);
}
.dynamic: { *(.dynamic) }
.got: { *(.got.plt) *(.got) }
.data:
{
__data_start = .;
*(.data .data.*)
}
_edata = .;
PROVIDE(edata = .);
__bss_start = .;
__bss_start__ = .;
.bss:
{
*(.bss .bss.*)
. = ALIGN(. != 0? 32 / 8: 1);
}
__bss_end__ = .;
_bss_end__ = .;
. = ALIGN(4);
__end = .;
_end = .;
PROVIDE(end = .);
}

Программа собирается, но при попытке загрузить ее получаю сообщение load failed.

Со скриптом который шел в примере:
Код: Выделить всё
/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = 0x20020000; /* end of 128K RAM on AHB bus*/

/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0; /* required amount of heap */
_Min_Stack_Size = 0x400; /* required amount of stack */

/* Specify the memory areas */
MEMORY
{
FLASH (rx): ORIGIN = 0x08000000, LENGTH = 1024K
RAM (rwx): ORIGIN = 0x20000000, LENGTH = 128K
CCM (rwx): ORIGIN = 0x10000000, LENGTH = 64K
}

/* Define output sections */
SECTIONS
{
/* The startup code goes first into FLASH */
.isr_vector:
{
. = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
} >FLASH

/* The program code and other data goes into FLASH */
.text:
{
. = ALIGN(4);
*(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
*(.glue_7) /* glue arm to thumb code */
*(.glue_7t) /* glue thumb to arm code */
*(.eh_frame)

KEEP (*(.init))
KEEP (*(.fini))

. = ALIGN(4);
_etext = .; /* define a global symbols at end of code */
_exit = .;
} >FLASH

.ARM.extab: { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
.ARM: {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH

.preinit_array:
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
.init_array:
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
.fini_array:
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(.fini_array*))
KEEP (*(SORT(.fini_array.*)))
PROVIDE_HIDDEN (__fini_array_end = .);
} >FLASH

/* used by the startup to initialize data */
_sidata = .;

/* Initialized data sections goes into RAM, load LMA copy after code */
.data: AT ( _sidata )
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */

. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
} >RAM

/* Uninitialized data section */
. = ALIGN(4);
.bss:
{
/* This is used by the startup in order to initialize the .bss secion */
_sbss = .; /* define a global symbol at bss start */
__bss_start__ = _sbss;
*(.bss)
*(.bss*)
*(COMMON)

. = ALIGN(4);
_ebss = .; /* define a global symbol at bss end */
__bss_end__ = _ebss;
} >RAM

/* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack:
{
. = ALIGN(4);
PROVIDE ( end =. );
PROVIDE ( _end =. );
. =. + _Min_Heap_Size;
. =. + _Min_Stack_Size;
. = ALIGN(4);
} >RAM
}

линковщик ругается на отсутствие .rel.plt секции. После добавления этой секции, он ругается на неопределенную ссылку на __libc_init_array.

Прошу помощи со скриптом линковщика и если можно чуть подробнее описать процедуру загрузки и запуска программы в память и флеш stmки.

P.S. Сперва запостил как комментарий сюда: http://robocraft.ru/blog/ARM/653.html , если вдург не к месту, то прошу прощения. Замучился с STMкой, голова уже не варит, буду признателен за любые комментарии, советы и мысли на тему.
SilverSwift
 
Сообщения: 1
Зарегистрирован: 14 авг 2013, 07:34
programming: C++, Qt, Java, JavaScript

Re: RoboCraft ARM IDE

Сообщение TDuke » 13 окт 2013, 17:03

Начал пробовать комилить пример под Эклипсом и получил ошибку:
Код: Выделить всё
fatal error: misc.h: No such file or directory   misc.c   /pr1/StdPeripheralDriver/src   line 24   C/C++ Problem
make: *** [StdPeripheralDriver/src/misc.o] Error 1   pr1          C/C++ Problem


Я так понял компилятор не видит включаемый файл misc.h из каталога /pr1/StdPeripheralDriver/inc
Вероятнее всего, что-то не так с настройкой путей поиска файлов. Как можно решить проблему? Где в эклипсе это настраивается? Или это нужно настраивать в свойствах проекта?

Использую готовую сборку robocraft-arm-ide-0.1-windows-i686\ под масдаем ХР, полный путь - E:\STM32\STM32VL\Soft\robocraft-arm-ide-0.1-windows-i686\

Пока решил проблему тупым копированием *.h файлов в каталог /src А как решить проблему по нормальному?

Теперь проект компилится. Зато вылезла другая проблема. При попытке отладки выскакивает сообщение:
Код: Выделить всё
Error while launching command: gdb --version


В каталоге arm-toolchain, я наблюдаю файл отладчика. Так почему же эклипс его не может запустить?
TDuke
 
Сообщения: 1
Зарегистрирован: 13 окт 2013, 16:42
programming: Scheme

Re: RoboCraft ARM IDE

Сообщение kyb » 27 янв 2014, 01:03

viewtopic.php?p=886#p1182
такая же проблема (
Подскажите как быть
kyb
 
Сообщения: 2
Зарегистрирован: 27 янв 2014, 00:59
programming: java,c

Вопрос чайника

Сообщение Artem1 » 12 авг 2014, 20:52

Приветствую автора и участников!
Спасибо за статью! Надеюсь с Вашей помощью что-то получится.
В программировании пока чайник совсем. Нужно учиться программировать ARM :)
Прочитал Вашу статью.
Пробую установить готовую сборку.
Создал проект со своим названием, настроил по шагам из статьи.
Соединение ST-link получилось,
"много сообщений в окне" тоже,
но debug заканчивается ошибкой:

"Error in final launch sequence
Failed to execute MI command:
-break-insert -t main
Error message from debugger back end:
Function "main" not defined.
Function "main" not defined."


Дебаггер в своем окне пишет:

"<terminated, exit value: 0>gdb
<terminated, exit value: 0>StartTemplate.elf"


StartTemplate - это название моего проекта.
Проект содержит "пустой" файл main.c из Вашего примера.

Плата STM VL 32 Discovery,
кристалл ARM32F100RBT6b
Win Vista

Что можно с этим сделать? Куда копать?
Artem1
 
Сообщения: 1
Зарегистрирован: 12 авг 2014, 20:25

Пред.

Вернуться в Программы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

© 2009-2016 |  О проекте