## Подготовка к работе

Предварительно должен быть установлен и настроен [Git for Windows 64-bit](https://git-scm.com/download/win).

Также должны быть установлены 64-bit драйверы J-Link в папку `C:/Program Files/SEGGER/JLink/`
* Update existing installation
* Install for all users

![alt text](JLink_drivers_install.png)

---

### Установка Dev Tools
Запускаем скрипт [sys/install.sh](../../sys/install.sh)

Произойдет скачивание и распаковка архивов с build tools и toolchain в папку `С:/xpack-dev-tools`. Никакие переменные среды не меняются, установка полностью независима (портативная) и не затрагивает никакие другие программы.

После установки Dev Tools необходимо перезапустить VSCode если он был запущен.

---

### Установка VSCode

Скачиваем и устанавливаем [стабильную версию](https://code.visualstudio.com/).
- Открываем папку с нашим проектом в VSCode.
- Открываем расширения `Ctrl+Shift+X`.
- Устанавливаем расширения рекомендованные нашим `workspace`. Они помечены текстом `This extension is recommended by users of the current workspace.`
- [C/C++](vscode:extension/ms-vscode.cpptools) и [Cortex-Debug](vscode:extension/marus25.cortex-debug) обязательны к установке, остальные по желанию.

Дополнительные расширения:
- [Git Graph](vscode:extension/mhutchie.git-graph) - рекомендую для работы с git.
- [LinkerScript](vscode:extension/ZixuanWang.linkerscript) - Linker Script files syntax.
- [GNU Linker Map files](vscode:extension/trond-snekvik.gnu-mapfiles) - Linker Map files syntax.
- [Intel HEX format](vscode:extension/keroc.hex-fmt) - Intel Hex files syntax.
- [Hex Editor](vscode:extension/ms-vscode.hexeditor) - Hex editor for binary files.
- [Arm Assembly](vscode:extension/dan-c-underwood.arm) - ARM Assembly files syntax.
- [Material Icon Theme](vscode:extension/pkief.material-icon-theme) - Симпатичные иконки файлов и папок в Explorer слева.
- [EditorConfig for VS Code](vscode:extension/EditorConfig.EditorConfig) - Следит за табами/пробелами/отступами/кодировкой для всех файлов проекта.
- [Open in External App](vscode:extension/YuTengjing.open-in-external-app) - Позволяет открывать файлы проекта в системных приложениях прямо из VSCode.
- [Task Buttons](vscode:extension/spencerwmiles.vscode-task-buttons) - Отображает кнопки для запуска тасков в статусбаре.

Рекомендации всех расширений находятся в файле [.vscode/extensions.json](../../.vscode/extensions.json).

---

### Сборка проекта в консоли
Сборка осуществяется с помощью `make`.

В папке `settings` находятся скрипты экспорта переменных окружения:
- [sys/export.sh](../../sys/export.sh) - для bash
- [sys/export.bat](../../sys/export.bat) - для cmd
- [sys/export.ps1](../../sys/export.ps1) - для powershell

Чтобы все наши компиляторы/линкеры/утилиты да и сам `make` стали доступными, вначале необходимо запустить соответствующий скрипт экспорта.

Для bash запускаем через точку `. sys/export.sh`. Для остальных достаточно просто запустить скрипт.

Далее просто запускаем нужный `make` таргет.

#### Команды `make`
- `make -e MODEL=M2 debug` - сборка дебага M2
- `make -e MODEL=M3 debug` - сборка дебага M3
- `make -e MODEL=M2 release` - сборка релиза M2
- `make -e MODEL=M3 release` - сборка релиза M3

Релизные сборки отличаются отключеным дефайном `DEBUG` и оптимизацией кода по размеру.

---

### Сборка проекта в консоли VSCode
Тут проще:
- Открываем папку с нашим проектом в VSCode.
- Открываем консоль `Ctrl+~`. (запустится терминал по молчанию)
- Можете выбрать свой любимый терминал. Я предпочитаю `Git Bash`.
- И сразу можем набирать команды `make`.

В файле [.vscode/settings.json](../../.vscode/settings.json) находятся конфигурации встроенных терминалов которые автоматически подгружают скрипты экспорта при открытии.

---

### Сборка проекта с помощью VSCode Tasks.
- Открываем папку с нашим проектом в VSCode.
- Нажимаем `Ctrl+Shift+B` и выбираем нужный Task.

Таски находятся в файле [.vscode/tasks.json](../../.vscode/tasks.json). Они автоматически загружают экспорт окружения и запускают нужные команды `make`.

Если установлено расширение [Task Buttons](vscode:extension/spencerwmiles.vscode-task-buttons), то в строке статуса появятся кнопки для удобного запуска тасков `M2 Release`, `M3 Release`, `M2 Debug`, `M3 Debug`, `Clean`.

---

### Отладка VSCode
В разделе `Run and Debug` слева выбираем конфигурацию отладки `Debug M2` или `Debug M3` и нажимаем зеленую стрелочку `Start Debugging` или `F5`.

Проект автоматически соберется (preLaunchTask), прошьется МК и запустится отладка.

Вывод логов доступен в терминале `SWO:ITM`.

В дальнейшем если конфигурация ранее уже была выбрана, то для запуска компиляции и отладки достаточно просто нажимать `F5`.

---

### PowerShell (если возникает ошибка)
В PowerShell по умолчанию отключено выполнение скриптов. Для исправления:
- Открываем PowerShell от имени администратора.
- Пишем и запускаем: `Set-ExecutionPolicy RemoteSigned`
- На вопрос отвечаем: A (Да для всех)

---