Например TDA7294

Форум РадиоКот :: Просмотр темы - Ошибка в Em::Blocks / EmBitz
Форум РадиоКот
https://radiokot.ru/forum/

Ошибка в Em::Blocks / EmBitz
https://radiokot.ru/forum/viewtopic.php?f=59&t=146067
Страница 1 из 1

Автор:  YS [ Ср июн 14, 2017 14:21:43 ]
Заголовок сообщения:  Ошибка в Em::Blocks / EmBitz

Сегодня обнаружил ошибку в 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".

Автор:  Мурик [ Ср июн 14, 2017 14:43:56 ]
Заголовок сообщения:  Re: Ошибка в Em::Blocks / EmBitz

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

Изображение

Вложения:
EmBitz.png [11.41 KiB]
Скачиваний: 1173

Автор:  YS [ Ср июн 14, 2017 15:16:53 ]
Заголовок сообщения:  Re: Ошибка в Em::Blocks / EmBitz

ВАУ. :shock:

А я тыкал на ветку "Release" (я использую только ее) и безуспешно искал настройки в ней...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/