Предлагаю здесь обсуждать среду программирования EmBitz.
EmBitz
Сообщений 1 страница 15 из 15
Поделиться22016-10-01 20:25:03
Недавно вышла новая версия 1.00.
Список изменений.
- Toolchain 5.4
- EB monitor - Alternative for Semihost stdin/stdout
- Lot of bug fixes
- Компилятор GCC обновился до версии 5.4.
- Немного изменился метод отладочного вывода данных Semihosting.
- Исправлены найденные ошибки.
Сейчас сайт перегружен, но тем не менее, архив скачать можно http://www.emblocks.com/web/downloads-main
Поделиться32016-10-01 20:54:22
Один из недостатков этой IDE в том что отсутсвуют инструменты для прошивки МК и чтобы это сделать из среды, приходится запускать сессию отладки (перед которой выполняется прошивка если она необходима). Чтобы исправить это, добавим в среду инструмент "Flash". Нужно извлечь файлы из архива в папку в которой установлен EmBitz http://pure-basic.narod.ru/forum_files/ … _flash.zip
Затем запустить среду и в меню "Инструменты" кликнуть по "Конфигурировать инструменты". В окне кликнуть по кнопке "Добавить" и заполнить поля как на скриншоте.
Строка из поля "Параметры"
-c swd srst -p "${PROJECT_DIR}${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex" -Rst
Теперь сохраняем и при необходимости прошивки, кликаем в меню по пункту "Flash" и ждем ее окончания.
stdout> STM32 ST-LINK CLI v3.0.0.0
stdout> STM32 ST-LINK Command Line Interface
stdout>
stdout> ST-LINK SN :
stdout> ST-LINK Firmware version : V2J28S6
stdout> Connected via SWD.
stdout> SWD Frequency = 4000K.
stdout> Target voltage = 3.3 V.
stdout> Connection mode : Normal.
stdout> Device ID:0x444
stdout> Device flash Size : 16 Kbytes
stdout> Device family :STM32F030x4/F030x6
stdout>
stdout> Loading file...
stdout> Flash Programming:
stdout> File : E:\STM32\Test\Test.hex
stdout> Address : 0x08000000
stdout> Memory programming...
stdout> ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± 0%
stdout> 0%ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ 100%
stdout> Memory programmed in 0s and 780ms.
stdout> Programming Complete.
stdout>
stdout> MCU Reset.
Поделиться42016-10-01 23:04:53
Спасибо, Пётр! пригодится!
информация лишней не бывает
Поделиться52016-10-31 13:52:22
Расскажу как уменьшить размер прошивки, компилируемой из файлов Куба. Для примера возьмем этот код USB - PWM
В исходном варианте результат компиляции таков
Program size (bytes): 10916 Data size (bytes): 1300 BSS size (bytes): 3988 Total size (bytes): 16204 (R/W Memory: 5288)
Это значит что скомпилированный код имеет размер 10916 байт и кроме того в прошивку входит "Data size" информация из которой потом копируется в ОЗУ инициализируя переменные и общий размер прошивки составляет 12216 байт. В этой области памяти как раз и заключается проблема, потому что она занимает много места (больше килобайта) как во Falsh так и в ОЗУ. Будем это исправлять.
Открываем файл stm32f103cb_flash.ld (для других моделей МК его имя будет отличаться) находящийся в папке проекта. В нем находим строки
/* Remove information from the standard libraries */
/DISCARD/ :
{
libc.a ( * )
libm.a ( * )
libgcc.a ( * )
}и удаляем их.
После этого результат компиляции будет таким.
Program size (bytes): 10664 Data size (bytes): 232 BSS size (bytes): 3988 Total size (bytes): 14884 (R/W Memory: 4220)
Получилось сэкономить 1320 байт flash и 1068 байт ОЗУ.
Поделиться62016-11-05 00:04:42
В предыдущем сообщении речь шла о размере прошивки. Продолжим. Размер прошивки при неизменном коде зависит от уровня оптимизации кода и некоторых других параметров. Давайте рассмотрим сколько байт займет прошивка скомпилированная из этого кода при разных уровнях оптимизации.
Сперва вообще отключим оптимизацию
получим такой результат
Program size (bytes): 1800 Data size (bytes): 104 BSS size (bytes): 28 Total size (bytes): 1932 (R/W Memory: 132)
Код занял 1800 байт.
Теперь включим оптимизацию по размеру.
Размер скомпилированного кода заметно уменьшился.
Program size (bytes): 1340 Data size (bytes): 104 BSS size (bytes): 28 Total size (bytes): 1472 (R/W Memory: 132)
Но и это не предел. На вкладке "Linker setting" включаем "Link time optimization"
Что позволит уменьшить размер прошивки на 188 байт.
Program size (bytes): 1152 Data size (bytes): 104 BSS size (bytes): 28 Total size (bytes): 1284 (R/W Memory: 132)
Но и это не все. Если открыть map файл где содержится информация о распределении памяти, то можно увидеть что часть памяти занимают системные библиотеки, которые не используются в коде. Например
*(.text*) .text 0x080000ec 0x5c c:/program files (x86)/embitz/1.00/share/em_armgcc/bin/../lib/gcc/arm-none-eabi/5.4.1/armv7-m/crtbegin.o .text 0x08000148 0x74 c:/program files (x86)/embitz/1.00/share/em_armgcc/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7-m/crt0.o
Только эти две библиотеки не понятно для чего добавили 0x5c + 0x74 = 208 байт в прошивку.
Сообщим компилятору чтобы он не использовал стандартные библиотеки, добавив ключ -nostdlib
И прошивка еще уменьшится на 388 байт. Кроме того, освободиться оперативная память (секции Data и BSS).
Program size (bytes): 764 Data size (bytes): 0 BSS size (bytes): 0 Total size (bytes): 764 (R/W Memory: 0)
Несколько слов о том как работает оптимизация. Упрощенный код "мигалки" светодиодом.
void Delay(volatile uint32_t nCount) {
for (; nCount != 0; nCount--);
}
int main(void)
{
// Здесь был код настройки порта.
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13);
Delay(2000000);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
Delay(2000000);
}
}Если код скомпилировать (естественно не этот упрощенный а полнофункциональный с настройкой порта), то как и ожидалось светодиод будет мигать. Но если в функции Delay убрать спецификатор volatile
void Delay(uint32_t nCount) {
for (; nCount != 0; nCount--);
}и на первый взгляд ничего не должно измениться, то работа программы будет нарушена. Вместо мигания, светодиод будет светить в "пол накала" и размер прошивки уменьшится на 20 байт. В чем дело? А дело в оптимизаторе, который при таком раскладе (отсутствии спецификатора volatile) начинает оптимизировать функцию. В первую очередь оптимизатор "видит" что переменная nCount в цикле в конечном итоге будет равна нулю, а цикл пустой и оптимизатор решает что цикл не нужен и выкидывает его, а переменную обнуляет. Дальше оптимизатор "видит" что переменная нигде не используется, а значит не нужна и выкидывает ее. После оптимизатор обнаруживает что функция без цикла и переменной ничего не делает, а значит не нужна и выкидывает ее из кода и ее вызовы тоже. В конечном итоге после оптимизации код становится таким.
int main(void)
{
// Здесь был код настройки порта.
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}
}Т. е. отсутствует функция Delay и ее вызовы. Думаю теперь понятно почему светодиод светит в "пол накала" и размер прошивки уменьшится на 20 байт - оптимизатор решил что функция Delay не нужна и выкинул ее. Спецификатор volatile предотвращает это указывая компилятору что все что так или иначе связанно с переменной nCount оптимизировать не нужно.
Поделиться72016-11-17 13:19:33
На видео показано как получить SVD файл (необходим для просмотра регистров МК) и пошагово выполнить программу с просмотром регистров и переменных.
Поделиться82016-11-17 17:14:20
В EmBitz есть проверка орфографии, но по умолчанию только для английского. Нам же нужен русский (но при необходимости можно добавить поддержку и других языков). Для этого содержимое архива нужно извлечь в папку
Папка_EmBitz\share\EmBitz\SpellChecker\
Потом нужно зайти в настройки редактора (меню Настройки пункт Editor) и в разделе SpellChecker, в списке выбрать ru_RU.

Вот как это работает.

Поделиться92016-11-17 17:27:25
то есть, он будет ругаться и на все имена переменных, подпрограмм?
Поделиться102016-11-17 19:29:18
Если они будут закомментированы то да. Орфография проверяется только в комментариях.
Поделиться112016-11-17 20:31:11
понял, спасибо!
Поделиться122016-12-04 00:11:03
Иногда кроме hex файла нужен bin файл. Один из способов его получить - нужно в настройках проекта, во вкладке "Pre/post build steps" в области "Выполнить после сборки" выбрать с выпадающем списке строку "Only on build" и в поле скопировать команду
arm-none-eabi-objcopy -O binary $(TARGET_OUTPUT_DIR)\$(TARGET_OUTPUT_BASENAME).elf $(TARGET_OUTPUT_DIR)\$(TARGET_OUTPUT_BASENAME).bin
bin файл будет создан рядом с hex файлом.
Поделиться132019-12-19 13:59:12
Добавление прошивателя и отладчика EBlink в EmBitz 1.11.
Нужно распаковать архив в папку в которой установлен EmBitz. После этого станет доступным интерфейс отладчика EBlink, который можно выбрать в окне Debug interface options, котрое открывается из меню Debug -> Interfaces.
Кнопка Setting откроет настройки EBlink.
Для прошивки нужно добавить инструмент как написано в 3 сообщении. Но параметры немного другие.
Командная строка
-I stlink,swd -S stm32-auto -a -F verify,run,file="${PROJECT_DIR}${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex"Может у кого возникнет вопрос, чем EBlink лучше STLinkGDB который сейчас используется? Тем что поддерживает больше моделей МК в том числе недавно появившиеся H7, G0 и G4.
Поделиться142020-09-04 12:41:03
На официальном форуме выложено обновление для EmBitz 1.11. https://www.embitz.org/forum/thread-12.html
Оно добавляет поддержку почти всех существующих на данный момент STM32.
Это семейства STM32F0, STM32F1, STM32F2, STM32F3, STM32F4, STM32F7, STM32H7, STM32L0, STM32L1, STM32L4, STM32L4+, STM32L5, STM32G0, STM32G4 и STM32WB.
При создании проекта можно выбрать библиотеку SPL, HAL или LL.
Поделиться152021-10-27 09:45:41
EmBitz обновился до версии 2.0 https://www.embitz.org/
Залил на диск https://disk.yandex.ru/d/oxJiAfUWFPIJzQ
Изменение этой версии https://embitz.org/forum/thread-51.html
Добавили поддержку новых МК.
Обновили компилятор до версии 9.3.1
Для отладки теперь используется GDB сервер EBlink. Через него же заливаются и считываются прошивки с МК.
Добавлена возможность подключения к МК "на лету" (меню Debug -> Target Hotplug). Может пригодится при поиске причин зависания или неправильной работы. Кратко я об этом писал в этой теме Отладка программы
Похожие темы
| Отладка программы | Не пора ли нам попробовать ARM? | 2019-07-10 |
| STM32 и 1Wire | Не пора ли нам попробовать ARM? | 2017-07-05 |
| Для ржавых чайников | Не пора ли нам попробовать ARM? | 2017-06-20 |
| Цветомузыка на STM32 | Световые эффекты | 2018-08-25 |
| Язык Си | Не пора ли нам попробовать ARM? | 2019-06-01 |








