Переместить встроенное программирование с Keil на Linux

9

В настоящее время я использую Keil для разработки платы обнаружения STM32. Мой проект близок к завершению, и я бы хотел перейти к среде разработки на базе Linux. Я использовал предварительно сконфигурированный инструмент перепрошивки и драйверы STLink для Windows для прошивки платы, и я получил возможность экспортировать bin-файл, который мне удалось перепрограммировать на моем компьютере Linux с использованием qSTLink2 . Все идет нормально.

Теперь я застрял в процессе создания всего проекта. В частности:

Как мне перенести мой .uvproj в make-файл, принимая во внимание такие вещи, как файл запуска 'startup_stm32l1xx_md.s'?

Lg102
источник
В частности, я не использовал STM32 в среде сборки Linux GCC, но вы, вероятно, обнаружите, что GCC нужен другой файл запуска. Возможно, вам лучше найти уже работающий простой проект, а затем добавить к нему свой код.
PeterJ
Трудный путь, без сомнения.
Игнасио Васкес-Абрамс
Могу ли я использовать текущий файл .o, созданный Keil с использованием MDK-ARM, проигнорировать компиляцию для этого файла и связать его статически?
Lg102
Как уже писал PeterJ. Он будет использовать другой файл запуска с разными метками и другой семантикой. Не должно быть способа сохранить файл Keil startup_stm32l1xx_md.o. У вас нет исходного файла startup_stm32l1xx_md.s для этого?
Harper
Я делаю, но, кажется, ориентирован на MDK-ARM (или так утверждает заголовок). Я заменил его другим . Я не уверен, что влечет за собой различие между средней и высокой плотностью.
Lg102

Ответы:

11

Сделано. Я решил поделиться своими результатами, чтобы другие могли его использовать. Всем спасибо за ваше время.


Я использовал этот набор инструментов ARM для создания своего проекта и библиотеку texane / stlink , которая поставляется вместе с ./st-flashинструментом, для прошивки двоичного файла на мой STM32L1. В то время как texane / stlink поставляется с GDB, я обнаружил, что могу сделать процесс build + flash без него.

Мой Makefile в итоге выглядел так. Это не очень красиво или абстрактно, но оно выполняет свою работу.

all:
    arm-none-eabi-gcc -T stm32l1xx.ld -mthumb -mcpu=cortex-m3 -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER startup_stm32l1xx_md.s system_stm32l1xx.c main.c [ sources ] -lm --specs=nosys.specs -o Project.elf

В котором:

  • arm-none-eabi-gcc
    ARM toolchain
  • -T stm32l1xx.ld
    Документ-компоновщик
  • -mthumb -mcpu=cortex-m3
    Скажите GCC, что это для M3
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    Определяет для стандартного периферийного драйвера
  • startup_stm32l1xx_md.s
    GCC ориентированный стартовый документ.
  • system_stm32l1xx.c main.c [ sources ]
    Список моих исходных файлов
  • -lm
    Для Math.h( L ib M ath)
  • --specs=nosys.specs
    Не используйте системные вызовы как _exit.
  • -o Project.elf
    Имя выхода
Lg102
источник
1
Откуда этот stm32l1xx.ldфайл?
ярость
3

Существует набор инструментов Gnu ARM (arm-none-eabi), и предположительно openOCD работает с gdb (хотя я не смог сделать это под Win7 - openOCD подключается к плате STM32F4disco в порядке, но у gdb есть проблемы с подключением к openOCD ).

У некоторых рыть вокруг здесь , и вы найдете ссылки на инструментарий , , OpenOCD и примеров проектов , которые включают в себя запуск источника.

Markt
источник