Ошибка в Em::Blocks / EmBitz

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Ошибка в Em::Blocks / EmBitz

Сообщение YS »

Сегодня обнаружил ошибку в Em::Blocks. Актуально для тех, кто, как и я, использует эту IDE. Найденное также справедливо и для EmBitz 1.11, специально проверил.

При создании проекта для STM32F100RB в определениях оказывается STM32F10X_LD_VL (low-density value line), в то время как STM32F100RB в действительности относится к medium-density value line. Это приводит к тому, что stm32f10x.h оказывается сконфигурирован неверно. Например, невозможно настроить SPI2, т.к. соответствующее определение оказывается отключено через #ifdef.

Вот так выглядит строка вызова компилятора (вывод полного пути в HTML-файл включается в настройках):

arm-none-eabi-gcc.exe -mcpu=cortex-m3 -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=soft -Wimplicit-int -Werror-implicit-function-declaration -Wdiv-by-zero -Wall -Os -g1 -funsigned-char -Wno-main -DSTM32F100RB -fno-strict-aliasing -DSTM32F10X_LD_VL -O2 -g2 -fdata-sections -ffunction-sections -c src\main.c -o obj\release\src\main.o -MMD -I.\inc -I.\src -I.\cmsis -I"C:\Program Files (x86)\EmBlocks\2.10\share\em_armgcc\bin\..\arm-none-eabi\include" -I"C:\Program Files (x86)\EmBlocks\2.10\share\em_armgcc\bin\..\arm-none-eabi" -I"C:\Program Files (x86)\EmBlocks\2.10\share\em_armgcc\bin\..\lib\cmsis\include"

Проще всего решить проблему, отредактировав файл проекта (.ebp, текстовый файл с XML-записями) руками. В нем надо найти настройки компилятора:

<Compiler>
<Add option="-mfloat-abi=soft" />
<Add option="-DSTM32F100RB" />
<Add option="-fno-strict-aliasing" />
<Add option="-DSTM32F10X_LD_VL" />
<Add directory=".\inc" />
<Add directory=".\src" />
<Add directory=".\cmsis" />
</Compiler>

И, соответственно, поменять на -DSTM32F10X_MD_VL. Как это сделать из графического интерфейса, я не нашел.

Багрепорт разработчику не писал, т.к. не нашел простого способа это сделать. Если кто напишет - будет хорошо.

UPD:

Ошибку можно исправить коренным образом. Настройки устройств лежат в файле devices.xml, который упакован в архив st.zip, находящийся в папке %PROGRAM_FILES%\EmBlocks\2.10\share\EmBlocks\templates\wizard\arm\st (для Em::Blocks 2.10) либо %PROGRAM_FILES%\EmBitz\1.11\share\EmBitz\templates\wizard\arm\st (для EmBitz 1.11).

Там можно видеть строки:

<STM32F100R8 romAddr=0x08000000 romLen=64K ramAddr=0x20000000 ramLen=8K cpu_core=cortex-m3 serie=md_vl />
<STM32F100RB romAddr=0x08000000 romLen=128K ramAddr=0x20000000 ramLen=8K cpu_core=cortex-m3 serie=ld_vl />
<STM32F100RC romAddr=0x08000000 romLen=256K ramAddr=0x20000000 ramLen=24K cpu_core=cortex-m3 serie=hd_vl />

Соответственно, надо поменять значение "serie" на "md_vl".
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Ошибка в Em::Blocks / EmBitz

Сообщение Мурик »

YS писал(а):И, соответственно, поменять на -DSTM32F10X_MD_VL. Как это сделать из графического интерфейса, я не нашел.
Изображение
Вложения
EmBitz.png
(11.41 КБ) 1189 скачиваний
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Ошибка в Em::Blocks / EmBitz

Сообщение YS »

ВАУ. :shock:

А я тыкал на ветку "Release" (я использую только ее) и безуспешно искал настройки в ней...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Ответить

Вернуться в «ARM»