Форум РадиоКот 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. Как это сделать из графического интерфейса, я не нашел.
|
Автор: | YS [ Ср июн 14, 2017 15:16:53 ] |
Заголовок сообщения: | Re: Ошибка в Em::Blocks / EmBitz |
ВАУ. ![]() А я тыкал на ветку "Release" (я использую только ее) и безуспешно искал настройки в ней... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |