Рубрики
Uncategorized

Начало работы с инструментами разработки STM8 на GNU / Linux

В этом руководстве вы узнаете, как настроить разработка и программирование среды для STM8 на Linux на основе систем.

Автор оригинала: Hamza BENDALI BRAHAM.

Это руководство было написано для (и на) Arch Linux, Ubuntu, Mint Отказ Я не проверил процедуру на других архитектурах Linux или дистрибутива, пользователи других дистрибутивов могут обнаружить, что некоторые из инструкций не работают в Verbatim. Адаптироваться по мере необходимости.

STM8S003.PNG

Вступление

STM8 серия микроконтроллеров ST MicroeLectronics — это грязь дешевый и мощный одновременно. Их мощность обработки нечем не совсем не хватает Arduino, а в то же время их энергопотребление значительно меньше. Эти свойства делают STM8 Micro отличный выбор для многих хобби и серьезных проектов. В этом руководстве вы узнаете, как настроить разработка и программирование среды для STM8 на Linux на основе систем.

Вот необходимые инструменты, которые я использовал в этом руководстве:

  • VS-код (Visual Studio Code) Усовершенствованный текстовый редактор.
  • SDCC Компилятор v3.5.0 или выше.
  • STM8 Стандартная библиотека периферийных устройств [SPL] , исправлено для SDCC.
  • ST-Link/STM8FLASH Чтобы написать свой скомпилированный код в микроконтроллер.
  • STM8-GDB/Openocd для отладки.
  • Совет оценки STM8 STM8 Или вы можете уйти с el — дешевыми китайскими досками, которые собираются около 2 $, включая доставку!.

Подготовьте необходимые инструменты

Установить VS-код

Визуальный студийный код Это кроссплатформенная, свободная и открытая источника (лицензированная под лицензионным редактором MIT), разработанным Microsoft и расширяется с использованием расширений, которые можно просматривать из самого текстового редактора (через его галерею расширения) или от https://marketplace.visualstudio.com/vscode Отказ В то время как Open-Source, запатентованная сборка (лицензированная в соответствии с лицензионным соглашением конечного пользователя), предоставляемая Microsoft, доступна и используется в качестве основы для Visual-Studio-Code-Bin [ Aur ] Пакет (для объяснения смешанного лицензирования см. В этом Github Комментарий ).

Установка

# Arch linux
$ yaourt -S visual-studio-code-bin

# Ubuntu and Mint linux 
$ wget https://go.microsoft.com/fwlink/?LinkID=760868 -O vscode.deb
$ sudo dpkg -i vscode.deb

Добиваться

$ code

Добавить расширение

Нажмите (Ctrl + Shift + X) Затем ищите и установите следующее расширение:

  • C/C ++ для кода Visual Studio
  • C ++ Intellisense.
  • Hexdump для VSCode.
  • vscode-devdocs.

Установите SDCC.

Скачать и установить SDCC Snapshot сборки для получения дополнительной оптимизации от SourceForge.

# download the latest version
$ wget https://sourceforge.net/projects/sdcc/files/snapshot_builds/amd64-unknown-linux2.5/sdcc-snapshot-amd64-unknown-linux2.5-20200113-11515.tar.bz2

$ tar -xjf ./sdcc-snapshot-amd64-unknown-linux2.5-20200113-11515.tar.bz2
$ cd sdcc
$ sudo cp -r * /usr/local

SDCC SourceForge Документация SDCC Руководство PDF.

Скачать STM8 Стандартные библиотеки периферийных устройств [SPL]

SDCC поддерживает STM8, но для лицензионных причин (BOOO, ST!), Стандартная периферийная библиотека (SPL) пропал, отсутствует.

Кто-то разработал патч, который делает SPL совместимую с SDCC, доступным здесь: Spl_2.2.0_sdcc_patch Отказ Там есть пакет AUR, который пытается установить его в папку библиотек SDCC ( AUR/STM8-SPL-SDCC ), но allas Zip с файлами SPL — это защищена входным щелчком языке (BOOO снова, ST!) Отказ

Программист

St-link.

ST-Link-v2.jpg

Программист или клон ST-Link или CLONE используется для записи скомпилированного кода (прошивка) в микроконтроллер. Для программиста вам нужен тот, который поддерживает плавать (Однопроводный интерфейсный модуль интерфейса). Вы можете (рекомендуется) пойти с исходным отладчиком STMicroElectronics, который является ST-Link V2 (вы можете получить эту секунду до 20 ) o r i F уход o U А R е R е А l л уход W А N T т o G о е C o N o m i c a l , y o U C А N G е T А W А y w Я T H т h е F А к е o N е S w i c h c o S т y o U U N D е R 1 0 Несомненно Или если вы действительно хотите пойти экономично, вы можете уйти с поддельными, которые стоят вам до 10 Несомненно o r i F уход o U А R е R е А l л уход W А N T т o G о е C o N o m i c a l , y o U C А N G е T А W А y w Я T H т h е F А к е o N е S w i c h c o S т y o U U N D е R 1 0 (Обратите внимание, что эти дешевые отладчики поддерживают только программный режим, который работает нормально, и не дает вам полную функциональность и скорость подлинного отладчиков самого ST). Или вы можете построить свои собственные инструменты Stlink с открытым исходным кодом.

Обновление прошивки ST-Link/V2-1 STSW-Link007 Отказ

Версия с открытым исходным кодом StmicroElectronics STLINK Tools здесь

Черный волшебный зонд, отдохните и программист для отладчика JTAG & SWD GNU GNU здесь и здесь

STM8FLASH

Это была единственная программа, которая способна общаться через интерфейс ST-ссылок для загрузки Commited Code (прошивка) в микроконтроллер.

libusb-1.0-0-dev требуется для компиляции STM8FLASH

Установить STM8FLASH Из [Aur] упаковка

## Arch linux 
$ yaourt -S aur/stm8flash-git

## Ubuntu, Mint Linux
## Install from src git repo
$ git clone https://github.com/vdudouyt/stm8flash.git
$ cd stm8flash
$ make
$ sudo make install

Github Opensource Software распространяется на Vdudouyt/STM8FLASH

Устранение неполадок USB

Чтобы решить USB-устройство, приобретая проблему доступа к записи

libusb: Ошибка [_get_usbfs_fd] libusb Не удалось открыть USB-устройство/dev/bus/usb/003/004: разрешение запрещено libusb: ошибка [_get_usbfs_fd] libusb требует доступа к записи узлов USB-устройства. Не удалось открыть USB-устройство.

Создание файлов с контентом:

49-STLINKV1.RULES.
# stm32 discovery boards, with onboard st/linkv1
# ie, STM32VL.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv1_%n"
49-STLINKV2.RULES.
# stm32 discovery boards, with onboard st/linkv2
# ie, STM32L, STM32F4.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv2_%n"
49-STLINKV2-1.RULES.
# stm32 nucleo boards, with onboard st/linkv2-1
# ie, STM32F0, STM32F4.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv2-1_%n"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv2-1_%n"
49-STLINKV3.RULES.
# stlink-v3 boards (standalone and embedded) in usbloader mode and standard (debug) mode

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv3loader_%n"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv3_%n"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv3_%n"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", \
    MODE="660", GROUP="plugdev", TAG+="uaccess", \
    SYMLINK+="stlinkv3_%n"

Создать 49-STLINKV1.RULES , 49-STLINKV2.RULES , 49-STLINKV2-1.RULES , 49-STLINKV3.RULES и скопируйте его в /etc/udev/rules.d/ Тогда перезагрузить Удевадм

$ sudo cp *.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules && sudo udevadm trigger

Обратите внимание, что файл предоставляется для ST-Link/V1), несмотря на большинство инструментов, не поддерживают его.

GDB отладчик

GDB предлагает обширные возможности для отслеживания и изменения выполнения программ. Пользователь может контролировать и изменять значения внутренних переменных программ и даже вызовов функции независимо от нормального поведения программы.

gdb.png.

Openocd.

Установить Openocd от Aur/Openocd-Git Для последнего обновления для использования STM8 устройство

# Arch linux 
$ yaourt -S aur/openocd-git

# Ubuntu and mint linux 
$ sudo apt install openocd

SourceForge Openocd Отказ

STM8-GDB.

Загрузите последние STM8 Binutils-GSB-источники из Официальный сайт или прямо из SourceForge Отказ https://sourceforge.net/projects/stm8-binutils-gdb/files/stm8-binutils-gdb-sources-2018-03-04.tar.gz/download

Построение двоичных файлов в основном процесс загрузки источников и нанесение патчей. Есть вспомогательные скрипты, чтобы помочь с процессом.

Также обратите внимание, вам нужны некоторые библиотеки для режима TUI для работы. Среди них NCursesw.

Для скачивания, исправления и настройки:

$ wget https://sourceforge.net/projects/stm8-binutils-gdb/files/stm8-binutils-gdb-sources-2018-03-04.tar.gz/download -O stm8-binutils-gdb-sources-2018-03-04.tar.gz

$ tar -xf stm8-binutils-gdb-sources-2018-03-04.tar.gz
$ cd stm8-binutils-gdb-sources
$ ./patch_binutils.sh
$ ./configure_binutils.sh

Следующий шаг — это обычное здание и установка:

$ cd binutils-2.30
$ make
$ sudo make install

SourceForge STM8-Binutils-GDB Отказ

STM8 Discovery

STM8S-Discovery поможет вам обнаружить функции STM8S и разработать и поделиться собственным приложением. В моем случае я использую модуль минимальной системы разработки STM8S003F3P6 STM8S. Это около 1-5 долларов от Aliexpress.

STM8S003F3P6.jpg.

Начать

Ваш первый код

Обычно первый шаг к развитию обучения на микроконтроллере просто мигает светодиодом, как аналог «Hello, World!» Пример, используемый на языках программирования ПК. На этот раз мы посмотрим, как начать программирование и разработки на серии микроконтроллеров STMICroElectronics STM8.

На этом этапе вы должны иметь рабочую среду Dev и могут начать экспериментировать с доской.

Справочное руководство STM8S

STM8_BLINKY.C.
#include "stm8l.h"

#define Led_Init GPIO_Init(GPIOD, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST)
#define Led_ON   GPIO_WriteHigh    (GPIOD,GPIO_PIN_1)
#define Led_OFF  GPIO_WriteLow     (GPIOD,GPIO_PIN_1)
#define Led_TOG  GPIO_WriteReverse (GPIOD,GPIO_PIN_1)

void main(void) 
{

   // Init LED Port, Pin
   Led_Init;

   // Set LED ON
   Led_ON;

   // Loop
   while(1){
      // Toggle LED ON/OFF
      Led_TOG;

      // White moment
      for(uint16_t d = 0; d<19000; d++){
         for(uint8_t c = 0; c<5; c++);
      }
   }
}

Код сборки

$ sdcc -lstm8 -mstm8 --opt-code-size --std-sdcc99 --nogcse --all-callee-saves --debug --verbose --stack-auto --fverbose-asm --float-reent --no-peep -I./ -I./STM8S_StdPeriph_Driver/inc -D STM8S003 ./stm8_blinky.c

Проводка

Вышло из завода, каждая плата вспыхнула мигающей демонстрацией, поэтому вы должны увидеть, что он начнет мигать, как только вы подключаете USB. Мы не будем использовать USB, хотя, поэтому снова отключите снова и подготовим свою ST-Link и подключенный кабель, который пришел с ним.

Вам также потребуется припаять несколько заголовков к вашей доске STM8, по крайней мере, в заголовке программирования (напротив USB). Как штифты ключ, так и заголовок программирования четко маркируются, поэтому у вас не должно быть никаких проблем.

Если вы используете программист CLONE ST-LINK, не подключайте линию 3V3 от ключа до доски При включении доски от USB Отказ Технически ничего плохого не должно произойти, но вы подключаете два LDO параллельно, и это просто плохое представление.

Просто оставьте 3V3 PIN-код заголовка программирования, не подключенного в этом случае.

Впервые протрите

Доска должна начать мигать немедленно. Первый шаг, хотя будет протирать чип, поскольку загруженная заводская прошивка защищена, и вы ничего не можете сделать, пока он заблокирован.

Чтобы разблокировать чип, используйте Флашерная опция (для получения дополнительной информации, запустить STM8FLASH -H ):

$ stm8flash -c stlinkv2 -p stm8s003f3 -u
Determine OPT area
Unlocked device. Option bytes reset to default state.
Bytes written: 11

Доска перестанет мигать, вы просто кирпировали его. О, нет! Но мы будем исправить это быстро.

Загрузка прошивки

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

$ stm8flash -c stlinkv2 -p stm8s003f3 -s flash -w stm8_blinky.ihx
Determine FLASH area
Writing Intel hex file 655 bytes at 0x8000... OK
Bytes written: 655

Передовой

Отлаживать

Компиляция SDCC и отладочной информации:

$ sdcc -mstm8 led.c --out-fmt-elf --all-callee-saves --debug --verbose --stack-auto --fverbose-asm  --float-reent --no-peep

Запустите Openocd во второй оболочке:

$ openocd -f /usr/share/openocd/scripts/interface/stlink.cfg -f /usr/share/openocd/scripts/target/stm8s105.cfg -c "init" -c "reset halt"

Или если вы предпочитаете общие конфигурацию STM8S (для STM8S Flash STM8S), замените STM8S105.CFG. По STM8S.CFG.

В настоящее время доступны файлы конфигурации для STM8S003, STM8S105 и STM8L152.

Затем начните GDB:

$ stm8-gdb test.elf --tui
start

Или если вы предпочитаете загрузить вручную:

$ stm8-gdb test.elf --tui
target extended-remote localhost:3333
load
break main
continue

Оригинал: «https://www.codementor.io/@hbendali/getting-started-with-stm8-development-tools-on-gnu-linux-zu59yo35x»