[[: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~~