Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » STM32: Software » VS Code редактор и не только


VS Code редактор и не только

Сообщений 1 страница 8 из 8

1

Смотрел, как только появился - сыроват был. Недавно наткнулся на тему: https://electronix.ru/forum/index.php?s … try1479913
Решил еще раз "пасматреть". Вроде все весьма неплохо оказалось.
Основу брать тут: https://code.visualstudio.com/
Еще надо установить расширение C/C++ отсюда: https://marketplace.visualstudio.com/it … e.cpptools
Как установить, легким движением руки, написано прям сверху:

Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.

Вначале проверил на PC-шном GCC консольное приложение
http://sf.uploads.ru/t/r2vif.png
Давно чего-то стали нравиться "черные" редакторы, вроде как глаза меньше устают.
Чтоб скомпилировать надо нажать Ctrl+Shift+B.
Поначалу любезно предложат настроить средство... Согласимся. Выберем "Others". Настроим, прочтя рекомендации по ссылке, типа так:

Код:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format 
    "version": "0.1.0",
    "command": "d:\\TDM-GCC-32\\bin\\g++.exe",
    "isShellCommand": true,
    "args": ["-g", "main.cpp"],
    "showOutput": "always"
}

Путь к exe компилятора каждый выбирает сам  :question: .
VSCode аккуратно создаст папочку - там разместит особый файлик с нашим содержимым.
Теперь должно, если наш супер код правильный, все скомпилиться. У меня после компиляции образовался файлик a.exe.
При запуске хелловордит, как хотелось. Подчеркивания в тексте заголовков - это к ним не прописаны пути. Можно настроить, пока пропустим. Похоже редактор сам видит заголовки, которые в родной папке, где редактируемый исходник.
Плюшки не закончились - можно запустить отладку с брекпоинтами - прям нажав на панели иконку перечеркнутого жука. Придется опять понастраивать - там не сложно. В итоге можно дебажить.

Продолжение в применении к АРМ следует...

Отредактировано oleg110592 (2017-02-12 13:32:58)

2

Посмотрел, впечатляет )
А я и не знал, что microsoft на github есть, кто бы мог подумать - microsoft - open source - все платформы - MIT лицензия
Я так понял что vscode может к обычному gdb цепляться?

3

gdb будет время поразбираюсь.
Продолжение. VSCode и ARM.
Создаем папку с нашим будущим великим проектом под ARM микроконтроллер. Да, к этому времени должен быть установлен GNU ARM Embedded Toolchain, ну например отсюда:
https://launchpad.net/gcc-arm-embedded
Открываем в VS Code нашу папочку и создаем главный файл "main.c", можно добавить в папочку нужные для проекта файлы, а можно прописать пути...  тут уж каждый сам.
В "main.c" пишем супер код - мигание светодиодом на микроконтроллере STM32F401RE, думаю ему по силам будет такая задача.  :D
Вот код, который построил Джэк:

Код:
#include "stm32f4xx.h"

volatile uint32_t msTicks; // counts 1ms timeTicks
                           //SysTick_Handler:
void SysTick_Handler(void)
{
    msTicks++;
}

// Delay: delays a number of Systicks
void Delay(uint32_t dlyTicks)
{
    uint32_t curTicks;

    curTicks = msTicks;
    while ((msTicks - curTicks) < dlyTicks)
    {
        __NOP();
    }
}

int main(void)
{
    SysTick_Config(SystemCoreClock / 1000); // SysTick 1 msec interrupts

    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
    GPIOA->MODER |= GPIO_MODER_MODER8_0;

    for (;;)
    {
        GPIOA->ODR |= GPIO_ODR_ODR_8;  // Turn specified LED on
        Delay(500);                    // Wait 500ms
        GPIOA->ODR &= ~GPIO_ODR_ODR_8; // Turn specified LED off
        Delay(500);                    // Wait 500ms
    }
}

Теперь это нужно "скомпилировать", т.е. превратить в прошивку. Поскольку являюсь пользователем Виндовс, создадим обычный bat файл, кто хочет может собирать с помощью make, cmake и пр.  Содержимое bat файла (по рекомендациям Микрософта):

compil bat
Код:
set compilerflags=-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -D__HEAP_SIZE=0x0000 -D__STACK_SIZE=0x0100 -mfloat-abi=hard -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2 -DARM_MATH_CM4 -D__FPU_USED -DSTM32F401RE -DSTM32F4XX  -MMD -I.\inc -I.\src -I.\cmsis -flto
 

set linkerflags=-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -Wl,--defsym=__HEAP_SIZE=0x0000 -Wl,--defsym=__STACK_SIZE=0x0100 -mfloat-abi=hard -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -O2 -g2 -Wl,-script="./stm32f401re_flash.ld"  -Wl,--gc-sections -flto -nostartfiles -Wl,-Map=bin\Release\Blink.map

d:\GCCARM\bin\arm-none-eabi-gcc.exe %compilerflags% -c src\startup_stm32f4xx.S -o obj\release\src\startup_stm32f4xx.o
d:\GCCARM\bin\arm-none-eabi-gcc.exe %compilerflags% -c src\system_stm32f4xx.c -o obj\release\src\system_stm32f4xx.o
d:\GCCARM\bin\arm-none-eabi-gcc.exe %compilerflags% -c src\main.c -o obj\release\src\main.o
d:\GCCARM\bin\arm-none-eabi-gcc.exe %linkerflags% -o bin\Release\Blink.elf obj\release\src\startup_stm32f4xx.o obj\release\src\system_stm32f4xx.o obj\release\src\main.o

d:\GCCARM\bin\arm-none-eabi-objcopy.exe -O ihex bin\Release\Blink.elf bin\Release\Blink.hex


d:\GCCARM\bin\arm-none-eabi-size.exe bin\Release\Blink.elf

Создаем в текстовом редакторе и назовем его редким именем "compil.bat"
Теперь как раньше

Чтоб скомпилировать надо нажать Ctrl+Shift+B.
Поначалу любезно предложат настроить средство... Согласимся. Выберем "Others". Настроим, прочтя рекомендации по ссылке, типа так:

Код:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "compil.bat",
    "isShellCommand": true,
    "args": [""],
    "showOutput": "always"
}

Вроде все просто. Опять как раньше:

VSCode аккуратно создаст папочку - там разместит особый файлик с нашим содержимым.
Теперь должно, если наш супер код правильный, все скомпилиться.

http://s2.uploads.ru/t/VYQvf.png
Загружаем полученный hex или bin в микроконтроллер и наслаждаемся миганием.
Для Keil все проще - в настройках проекта есть птичка создать bat файл - тут понятно открываем папочку проекта и редактируем исходники, если надо компилировать - можно прямо из VS Code, только название bat файла надо соответствующее ранее указать. Если нужна отладка - тогда уж запускаем Keil, отладка там удобная .

4

Продолжение. VSCode + ARM + GDB. Отладка в редакторе.
Ну после написания, компилирования, заливки, иногда бывает нужно поотлаживать.
Запускаем GDB StLink Server. Окошко пусть висит - не закрываем. Нажимаем на панели иконку перечеркнутого жука. Предложат понастраивать, в итоге должно получится что-то типа такого

Код:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/main.elf",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "miDebuggerPath": "d:\\Tools\\arm-none-eabi-gdb.exe",
            "environment": [],
            "externalConsole": false,
            "logging": {
                "engineLogging": false,
                "moduleLoad": true,
                "exceptions": true
            },
            "windows": {
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "text": "-target-select remote localhost:4242"
                    },
                    {
                        "text": "-interpreter-exec console \"monitor reset halt\""
                    }
                ],
                "launchCompleteCommand": "exec-continue"
            }
        }
    ]
}

Потом расставляем брейкпоинты, нажимаем зеленую кнопочку типа "play" и дебажим:
http://s1.uploads.ru/t/bvi9a.png
Отладка так себе, как регистры смотреть не разбирался, но что-то посмотреть наверняка можно.

5

С регистрами наверно можно как-нибудь так выкрутиться

Код:
GPIOA_Type* const gpiob = GPIOB

и потом смотреть *gpiob в дебаггере, по идее должна показываться вся структура

6

вот минусы всех таких редакторов кода это как раз регистры при отладке... вернее их отсутствие

7

Atomic-dm написал(а):

вот минусы всех таких редакторов кода это как раз регистры при отладке... вернее их отсутствие

основное занятие редакторов - редактировать (имхо), остальное притягивают за уши. В Кейле ИАРе отладка на высоте, а редакторы хромают, недаром они с плагинами эклипса возюкаются/лись. Для GCC полно приличных IDE с отладкой (в том числе на основе эклипса), качество оной отладки не могу оценить - опыта нет.
з.ы. Еще выход, кроме выше предложенного - регистр можно переписать в переменную, правда будет без структуры - надо  будет больше напрягать мозги.

8

да, понятно. сам использую Sublime Text если все  более менее нормально работает... А если возникают проблемы то Кеил. хотя сейчас думаю буду скорее Озон юзать.


Вы здесь » Микроконтроллеры » STM32: Software » VS Code редактор и не только