Оглавление:

Начать разработку STM32 в Linux: 4 шага
Начать разработку STM32 в Linux: 4 шага

Видео: Начать разработку STM32 в Linux: 4 шага

Видео: Начать разработку STM32 в Linux: 4 шага
Видео: STM32 на Linux 2024, Июль
Anonim
Image
Image
Загрузите все, что вам нужно
Загрузите все, что вам нужно

В этом руководстве я покажу вам, как легко начать разработку программ STM32 в Linux. Я начал использовать Linux в качестве основной машины 2 года назад и меня не подводили. Все работает быстрее и лучше окон. Конечно, время от времени это менее удобно, но заставляет вас изучать вещи глубже, чтобы вы могли их использовать.

В любом случае, в этой инструкции, часть серии, которую я начинаю здесь И на YouTube, посвящена тому, как ее начать. Не забудьте также посмотреть мое видео на YouTube, где я все объясняю как один фрагмент, а вы можете писать код вместе со мной.

В этой серии я покажу вам, как вы можете разрабатывать, используя только текстовый редактор, такой как блокнот, SublimeText или Atom, так что вам не нужно какое-либо проприетарное программное обеспечение или IDE. Это максимально просто, и это на удивление легко.

Шаг 1. Загрузите все, что вам нужно

Чтобы все заработало, нужно скачать три части:

  • Компилятор GCC для ARM
  • Файлы прошивки STM32
  • Утилита st-link
  • Образец проекта

Компилятор - это основная часть программного обеспечения, которое компилирует наш код C со всеми другими файлами библиотеки на машинный язык, который может понять наш контроллер stm32. Загрузите последнюю предварительно скомпилированную версию этого компилятора.

Папка с прошивкой STM32 - это папка, в которой хранятся все файлы запуска и ядра, необходимые для работы основного процессора. Мы будем использовать стандартную периферийную библиотеку, которую превзошел HAL. Мне больше нравится StPeriphLibrary, поскольку компании, которые работают с этими процессорами, используют их, потому что он надежен, старше и поддерживается. Кроме того, он более прочный. Это не сокращает работу, которую вам нужно выполнить для инициализации периферийного устройства или включения светодиода, но заставляет вас изучить, как работают эти процессоры. Благодаря этому у вас будет больше знаний о внутренней работе, что позволит вам программировать любую задачу.

Последняя часть программного обеспечения для загрузки - это утилита st-link. Он поддерживается на github и используется для передачи скомпилированных двоичных файлов в процессор с использованием микросхемы stlink на плате, выступающей в качестве программатора / отладчика SWD / JTAG.

Также я предоставил образец папки проекта, о котором я расскажу позже, и вы можете его скачать. Он находится внутри первой папки VIDEO1.

Шаг 2: Установка программного обеспечения

Установка программного обеспечения
Установка программного обеспечения
Установка программного обеспечения
Установка программного обеспечения

После того, как вы загрузили все файлы, я предлагаю вам поместить их в общую папку, поскольку все они используются вместе для одной цели. Я помещаю все папки в папку под названием «Embedded» в моем HOME каталоге.

Мы начнем с самых простых - библиотек STM32. Папку, которую вы скачали, можно просто оставить там. Просто не забудьте покопаться, чтобы увидеть, где хранятся соответствующие файлы. Поэтому вы можете изменить и отредактировать основной MakeFile, чтобы он работал с вашей платформой.

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

  1. Зайдите в свою домашнюю папку "/ home / ИМЯ ПОЛЬЗОВАТЕЛЯ /" или "~ /" или введите cd в терминал.
  2. откройте файл ".bashrc", набрав: nano.bashrc
  3. прокрутите вниз до конца файла и добавьте эту строку: export PATH = $ PATH: ~ / Embedded / gcc-arm-none-eabi-8-2018-q4 / bin
  4. выйти, сохранив: CTRL + X, нажмите Y, ENTER
  5. запустите команду: source.bashrc, чтобы обновить источники терминала
  6. проверьте, все ли работает, набрав: arm-none-eabi-gcc --version, он должен отобразить последнюю версию компилятора

Для установки st-link распакуйте архив, который вы скачали, в папку Embedded. Затем выполните следующие действия:

  1. Беги: сделай
  2. Зайдите в папку "build / Release": cd build / Release.
  3. Введите ls, и вы увидите два исполняемых файла под названием «st-flash» и «st-util».
  4. Переместите эти два в родительский каталог stlink: mv st-flash st-util../../
  5. Если вы хотите использовать эти две функции, вы можете снова глобально отредактировать файл ".bashrc", добавив:

    экспорт ПУТЬ = $ ПУТЬ: ~ / Встроенный / stlink /

Это все! У тебя есть все необходимое. А теперь возьмите свой любимый текстовый редактор. Используйте только стандартный, более умный, такой как SublimeText или Atom, это то, что я использую.

Шаг 3: Настройка образца проекта

Настройка образца проекта
Настройка образца проекта

Теперь мы создадим образец проекта, который вы можете использовать для запуска каждого проекта. Это похоже на шаблон, в котором все основные настройки уже обработаны.

Вы можете скачать его на моей MEGA, ссылка находится на первом этапе этого руководства и под каждым моим видео на YouTube. Внутри находится пустой файл main.c вместе с некоторыми файлами запуска для этого процессора и Makefile. Makefile - это тот файл, который сообщает компилятору C, где найти компилятор arm, как его компилировать и где находятся все библиотеки. Чтобы получить эти файлы, подходящие для вашего проекта, вы можете зайти в папку библиотеки STM32 и проверить наличие папок «проект» или «примеры». Внутри вы увидите и скопируете эти файлы: main.c, Makefile и XXX_conf.h, system_XXX.c. Также вам понадобится файл компоновщика stm32_flash.ld, который можно найти в папке:

"/ FLASH_Program / TrueSTUDIO / FLASH_Program /", который находится внутри папки примера, или просто найдите файл.

Makefile можно найти в Интернете или скопировать из моей папки, но вам нужно будет изменить несколько вещей. Давайте посмотрим на мой make-файл и на то, что вы могли изменить.

# Путь к папке stlink для загрузки кода на борт

STLINK = ~ / Embedded / stlink # Поместите сюда свои исходные файлы (*.c) SRCS = main.c system_stm32f4xx.c # Исходные файлы библиотек #SRCS + = stm32f4xx_rcc.c #SRCS + = stm32f4xx_gpio.c # Двоичные файлы будут созданы с это имя (.elf,.bin,.hex) PROJ_NAME = test # Поместите сюда каталог кода библиотеки STM32F4, измените ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ на свое STM_COMMON = / home / matej / Embedded / STM32F4-Discovery_FW_V1.1.0 # Настройки компилятора. Отредактируйте CFLAGS только для включения других файлов заголовков. CC = arm-none-eabi-gcc OBJCOPY = arm-none-eabi-objcopy # Флаги компилятора CFLAGS = -g -O2 -Wall -Tstm32_flash.ld CFLAGS + = -DUSE_STDPERIPH_DRIVER CFLAGS + = -mlittle-endian -mthuumb = -mcpu. cortex-m4 -mthumb-interwork CFLAGS + = -mfloat-abi = hard -mfpu = fpv4-sp-d16 CFLAGS + = -I. # Включить файлы из библиотек STM CFLAGS + = -I $ (STM_COMMON) / Libraries / CMSIS / Include CFLAGS + = -I $ (STM_COMMON) / Libraries / CMSIS / ST / STM32F4xx / Include CFLAGS + = -I $ (STM_COMMON) / Библиотеки / STM32F4xx_StdPeriph_Driver / inc CFLAGS + = -I $ (STM_COMMON) / Utilities / STM32F4-Discovery # добавить файл запуска для сборки SRCS + = $ (STM_COMMON) / Libraries / CMSIS / ST / STM32F4xx / Source / Start / Templates / TruestmUDIO / Templates / s OBJS = $ (SRCS:.c =.o) vpath%.c $ (STM_COMMON) / Libraries / STM32F4xx_StdPeriph_Driver / src \. PHONY: proj all: proj proj: $ (PROJ_NAME).elf $ (PROJ_NAME).elf: $ (SRCS) $ (CC) $ (CFLAGS) $ ^ -o $ @ $ (OBJCOPY) -O ihex $ (PROJ_NAME).elf $ (PROJ_NAME).hex $ (OBJCOPY) -O binary $ (PROJ_NAME).elf $ (PROJ_NAME).bin clean: rm -f *.o $ (PROJ_NAME).elf $ (PROJ_NAME).hex $ (PROJ_NAME).bin # Прошить запись STM32F4: proj $ (STLINK) / st-flash write $ (PROJ_NAME).bin 0x80000000

  • Вы можете отредактировать первую строку, чтобы изменить путь к вашей служебной папке stlink
  • Вы можете изменить строку на место назначения вашей папки с библиотеками и ИМЯ ПОЛЬЗОВАТЕЛЯ.

    STM_COMMON = / home / ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ / Встроенный / STM32F4-Discovery_FW_V1.1.0

  • Также ознакомьтесь с разделом, в котором связаны все библиотеки. Это может измениться в зависимости от платформы, которую вы используете, поэтому проверьте наличие изменений в дереве файлов. Все остальное, что включает любые пути к определенным файлам, например, со следующей строкой с файлом запуска, может быть изменено.

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

Кроме того, когда я использую Atom, я кладу два фрагмента кода рядом. Обычно main.c и Makefile слева, так как вам нужно отредактировать Makefile только один раз, а библиотеки - справа. На картинке видно, что я открыл папку, содержащую файлы.c и.h для каждой библиотеки. Все это вы можете увидеть в видеороликах.

Шаг 4: Готово

Законченный!
Законченный!

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

Также вы можете протестировать программы st-flash и st-info, подключив плату разработки и набрав в терминале:

st-info --probe

Вы можете увидеть платформу, которую распознает программное обеспечение stlink, и семейство IC, а также кеш и другие вещи. Вы можете ввести:

st-info

чтобы увидеть все доступные параметры.

Теперь можно начинать программировать. В следующих инструкциях и видео я покажу вам основы GPIO и часов. Эти два являются основой для всего остального, так как почти все, с чем взаимодействует плата, осуществляется через GPIO, и все работает по часам, и вы увидите схему программирования этих процессоров.

А пока, спасибо, что посмотрели мои инструкции и видео на YouTube, если вы еще этого не сделали.

Рекомендуемые: