[[:start|На главную]], [[rtos:rtos|Операционные системы реального времени (ОСРВ)]] ---- ====== Установка ChibiStudio и создание проекта ====== {{tag>RTOS ChibiOS ChibiStudio}} В этом документе пойдет речь о развертывании пакета ChibiStudio на Windows платформе. ===== Скачивание и установка ===== ChibiStudio является готовым пакетом включающем все необходимое для начала разработки Вашего проекта с использованием ChibiOS. Скачать ChibiStudio можно с официального сайта проекта: [[http://chibios.org/dokuwiki/doku.php?id=chibios:product:chibistudio:start|chibios.org]] На данный момент актуальная версия (прямая ссылка): [[https://osdn.net/projects/chibios/downloads/70767/ChibiStudio_Windows_Preview21.7z/|ChibiStudio_Windows_Preview21.7z (433.56MB)]] После скачивания архив нужно распаковать в удобное для Вас место. Я предпочитаю размещать в корневом каталоге диска, например c:\Chibios\ ===== Первый запуск ===== Для запуска ChibiStudio нужно воспользоваться одним из ярлыков вида "Chibi Studio GCC x.x.lnk" (в данном случае "Chibi Studio GCC 5.4.lnk" или "Chibi Studio GCC 7.0.lnk"). Разница между ними в версии используемого компилятора GCC. После запуска, откроется обычное окно Eclipse {{ :rtos:chibistudio_1.png?direct&300 |Главное окно программы}} Слева расположена "рабочая область" - Project Explorer. По умолчанию открывается пользовательская рабочая область "workspace_user". Для начала работы с ChibiOs она не очень удобна. Поэтому переключимся на другую рабочую область, с уже подключенными проектами примеров/ Для этого нужно выбрать меню //File->Switch Workspace->C:\ChibiStudio\workspace191\// В данном случае будет использоваться версия ChibiOs 19.1. {{ :rtos:chibistudio_2.png?direct&300 |File->Switch Workspace}} Окно программы закроется и спустя несколько секунд программа перезапустится с использованием выбранной "рабочей области": {{ :rtos:chibistudio_3.png?direct&300 |workspace191}} В окне "Project Explorer" присутствует список проектов примеров работы с ChibiOs под различные микроконтроллеры и отладочные платы. ===== Создание проекта ===== Теперь можно создать свой проект. Удобно сделать это на базе подходящего примера. Допустим, у нас есть отладочная плата STM32L-DISCOVERY и нас интересует проект с низким энергопотреблением, т.е. с использованием ChibiOs-Nil. * Выбираем подходящий проект примера: //NIL-STM32L152-DISCOVERY//. * Двойным щелчком мыши по имени проекта открываем его. * Щелкнуть правой кнопкой мыши на имени проекта и, в открывшемся меню, выбрать "//Copy//". {{ :rtos:chibistudio_4.png?direct&300 |Копирование проекта}} * Щелкнуть правой кнопкой на свободной области в окне "//Project Explorer//" и, в открывшемся меню, выбрать "//Paste//". {{ :rtos:chibistudio_5.png?direct&300 |Создание копии}} * Откроется окно с запросом имени для копии проекта. Ввести желаемое имя и нажать "//OK//" {{ :rtos:chibistudio_6.png?direct&300 |Задать имя проекта}} * Будет создана копия проекта под заданным именем и добавлена в список проектов в окне "Project Explorer". Проекты расположены в алфавитном порядке, поэтому расположение нового проекта будет зависеть от его имени {{ :rtos:chibistudio_7.png?direct&300 |Открыть проект}} Наш проект создан и размещается в каталоге c:\ChibiStudio\workspace191\ю В принципе, проект готов для компиляции и запуска, но я предпочитаю выполнить еще ряд дополнительных настроек. ===== Настройка созданного проекта ===== Если открыть папку проекта, то мы увидим что ее содержимое несколько отличается от того что отображается в окне "//Project Explorer//". {{ :rtos:chibistudio_8.png?direct&300 |}} В частности, в ней отсутствуют каталоги //board// и //os//. Если в "//Project Explorer//", в проекте, щелкнуть правой кнопкой мыши на папке //os// и выбрать меню "//Properties//", то мы увидим что это виртуальная папка: {{ :rtos:chibistudio_9.png?direct&300 |}} Т.е. она ссылается на код ChibiOs расположенный в //C:\ChibiStudio\chibios191\os// Аналогично, папка //board// ссылается на //C:\ChibiStudio\chibios191\os\hal\boards\ST_STM32L_DISCOVERY// на эту же папку ссылается и исходный проект примера и, возможно, другие примеры. Т.е. если мы внесем какие-то изменения в board.c или board.h они отразятся на всех проектах. Поэтому, нужно скопировать содержимое //ST_STM32L_DISCOVERY// в наш проект, в папку //board//. {{ :rtos:chibistudio_10.png?direct&300 |}} Теперь нужно удалить виртуальную папку //board// из проекта. Для этого, нажать на ней правой кнопкой мыши и выбрать "//Delete//". На запрос "Действительно хотите удалить" ответить "Да". Будет удалена только виртуальная папка из нашего проекта. С папкой на которую она ссылается ничего не произойдет! {{ :rtos:chibistudio_11.png?direct&300 |}} После удаления виртуальной папки //board// Еклипс автоматически добавит в проект локальную папку //board//. Теперь нужно скорректировать //Makefile// чтобы при компиляции также использовались наши локальные файлы //board.h/board.c//. Открыть //Makefile// и найти следующие строки: # Imported source files and paths. CHIBIOS := ../../.. CONFDIR := ./cfg BUILDDIR := ./build DEPDIR := ./.dep # Licensing files. include $(CHIBIOS)/os/license/license.mk # Startup files. include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk # HAL-OSAL files (optional). include $(CHIBIOS)/os/hal/hal.mk include $(CHIBIOS)/os/hal/ports/STM32/STM32L1xx/platform.mk include $(CHIBIOS)/os/hal/boards/ST_STM32L_DISCOVERY/board.mk include $(CHIBIOS)/os/hal/osal/nil/osal.mk # RTOS files (optional). include $(CHIBIOS)/os/nil/nil.mk include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk # Auto-build files in ./source recursively. include $(CHIBIOS)/tools/mk/autobuild.mk # Other files (optional). #include $(CHIBIOS)/test/lib/test.mk #include $(CHIBIOS)/test/nil/nil_test.mk #include $(CHIBIOS)/test/oslib/oslib_test.mk и заменить выделенные строки на CHIBIOS := ../../chibios191 (т.к. изменился относительный путь к расположению файлов ChibiOs) и include ./board.mk Затем открыть файл board.mk # List of all the board related files. BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_STM32L_DISCOVERY/board.c # Required include directories BOARDINC = $(CHIBIOS)/os/hal/boards/ST_STM32L_DISCOVERY # Shared variables ALLCSRC += $(BOARDSRC) ALLINC += $(BOARDINC) и отредактировать его следующим образом: # List of all the board related files. BOARDSRC = ./board/board.c # Required include directories BOARDINC = ./board # Shared variables ALLCSRC += $(BOARDSRC) ALLINC += $(BOARDINC) ===== Компиляция проекта ===== Теперь все готово для компиляции и сборки проекта. Для этого можно воспользоваться соответствующей кнопкой на панели инструментов: {{ :rtos:chibistudio_12.png?direct&300 |Сборка проекта}} Если в проекте будут созданы несколько конфигураций, то можно выбрать нужную воспользовавшись стрелкой справа от кнопки. Запустится процесс сборки проекта. Результат процесса будет отображаться внизу в окне "//Console//" {{ :rtos:chibistudio_13.png?direct&300 |}} В случае успеха, лог будет оканчиваться примерно такими строками: Linking build/ch.elf Creating build/ch.hex Creating build/ch.bin Creating build/ch.dmp Creating build/ch.list text data bss dec hex filename 4868 0 16384 21252 5304 build/ch.elf Done 11:10:23 Build Finished (took 53s.911ms) Теперь проект готов к загрузке в микроконтроллер и запуску. ===== Настройка отладчика ===== Прежде чем продолжить, нужно убедиться что у нас открыт только наш проект. Конфигурации отладчика запоминаются в проекте и, если открыто несколько проектов, то будут отображаться все конфигурации и есть вероятность отредактировать "не свою". В окне "//Project Explorer//" просматриваем список проектов и закрываем ненужные (все кроме нашего). Закрыть проект можно щелкнув на нем правой кнопкой мыши и выбрав меню "//Close Project//". {{ :rtos:chibistudio_14.png?direct&300 |}} Затем выбрать пункт "//External Tools Configuration...//" {{ :rtos:chibistudio_15.png?direct&300 |External Tools Configuration}} Откроется диалоговое окно "//External Tools Configuration//". В этом окне конфигурируется служба OpenOCD для работы с аппаратным отладчиком. Здесь уже существует несколько конфигураций под различные типы отладчиков. Нас интересует ST-Link. Выбрав конфигурацию под ST-Link, видим следующую картину: {{ :rtos:chibistudio_16.png?direct&300 |External Tools Configuration}} Тут, в качестве конфигурации целевого процессора, указано "$(file_prompt)". Это означает, что при запуске службы будет выдано предложение выбрать файл целевого процессора. Файлы с описанием целевых процессоров находятся в каталоге //c:\ChibiStudio\tools\openocd\scripts\target\//. Поэтому меняем строку "//Arguments//" следующим образом (ключ "-f"): -c "telnet_port 4444" -s "/ChibiStudio/tools/openocd/scripts" -f "/interface/stlink.cfg" -f "/ChibiStudio/tools/openocd/scripts/target/stm32l1.cfg" Теперь можно запустить службу нажатием кнопки //Run// Если все прошло нормально, то в окне "//Console//" выйдет лог вида: Open On-Chip Debugger 0.10.0+dev-00746-g8f518d359 (2019-03-14-17:18) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport select '. adapter speed: 300 kHz adapter_nsrst_delay: 100 Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD none separate Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 300 kHz Info : STLINK V2J25S0 (API v2) VID:PID 0483:3748 Info : Target voltage: 0.000000 Error: target voltage may be too low for reliable debugging Info : stm32l1.cpu: hardware has 6 breakpoints, 4 watchpoints Info : Listening on port 3333 for gdb connections Если переключиться на //Перспективу// "//Debug//", то в окне "//Debug//" увидим запущенную службу: {{ :rtos:chibistudio_17.png?direct&300 |}} {{ :rtos:chibistudio_18.png?direct&300 |}} ===== Настройка отладки ===== Теперь необходимо настроить собственно отладчик оболочки. Для этого, в панели инструментов нужно выбрать пункт "//Debug Configuration...//" как показано ниже: {{ :rtos:chibistudio_19.png?direct&300 |Debug Configurations}} Откроется одноименное диалоговое окно. В нем, слева в списке, нужно выбрать тип нужной отладки. В нашем случае - "//GDB Hardware Debugging//". Щелкнуть на нем правой кнопкой мыши и выбрать "//New//". {{ :rtos:chibistudio_20.png?direct&300 |New}} Будет создана новая конфигурация отладчика. Теперь нужно прописать для нее нужные настройки, как показано на скриншотах ниже: {{ :rtos:chibistudio_21.png?direct&300 |Main}} {{ :rtos:chibistudio_22.png?direct&300 |Debugger}} {{ :rtos:chibistudio_23.png?direct&300 |Startup}} По умолчанию, после старта. отладка начинается с 0-го адреса (с таблицы векторов прерываний). Если нет необходимости в отладке ассемблерного Startup файла, можно настроить чтоб, после запуска, отладчик сразу останавливался на точке входа в функцию main(). Для этого нажно добавить следующие парамеры на закладке Startup: {{ :rtos:chibistudio_23_1.png?direct&300 |Startup_additional}} {{ :rtos:chibistudio_24.png?direct&300 |Source}} {{ :rtos:chibistudio_25.png?direct&300 |Common}} Не забываем после редактирования параметров нажимать кнопку "//Apply//" По окончании конфигурирования, можно запустить процесс отладки нажатием кнопки "//Debug//" (помним, что служба OpenOCD у нас уже запущена) ===== Запуск отладки ===== В общем случае, запуск отладки производится в два этапа: - Запуск службы OpenOCD - Запуск собственно отладки {{ :rtos:chibistudio_26.png?direct&300 |Start OpenOCD}} {{ :rtos:chibistudio_27.png?direct&300 |Start Debug}} Откроется "Перспектива" "//Debug//" и окно программы примет вид: {{ :rtos:chibistudio_28.png?direct&300 |}} Далее, можно приступать к отладке проекта. ---- [[:start|На главную]], [[rtos:rtos|Операционные системы реального времени (ОСРВ)]] ~~DISCUSSION~~