Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73859

STM32 + Emacs. Убираем костыли

$
0
0

Доброго вечерка!

Ещё с давних пор я смирился с тем фактом, что хардварная разработка будет проходить на винде. Eagle и Keil не оставляли меня в покое.

Чуть более года назад я перешёл на kiCad, чем был чрезвычайно доволен! Просто невероятно крутая ЕДА и удобная. Теперь ещё меньше времени стал проводить в винде...

Но keil так и не хотел уходить. А на фоне эклипса (SW4STM32) keil выглядел прямо таки великолепно. И, к огромному сожалению, работать в своём емаксике было совсем не удобно - библиотеки HAL просто гигантские, а юзать Stm32CubeMX и переписывать Мэйкфайл после каждого действия было бы мазохизмом. Ещё одной проблемой была отладка и загрузка прошивок.

Но всё встало на свои места через некоторое время после поисков. Сначала нашёл опенсорсный st-link (на то время он был кривоват), а потом и скрипт для генерации мэйкфайла по проекту STM32CubeMX.

https://github.com/baoshi/CubeMX2Makefile

https://github.com/texane/stlink

Сделал тестовый проектик. И ОНО СКОМПИЛЛИРОВАЛОСЬ! Я был щастлев. Но прошивка на STM32F4xx не удалась =с Только сработало с STM32F103. Но всё-равно.

И вот через несколько месяцев у меня появилось время между проектами и я решил похимичить. Репозиторий ст-линк обновился - теперь всё дебагилось и шилось без проблем. С компиляцией проблем не было тоже(только пришлось добавить -с99 в генерацию мэйкфайла).

И решил я прицепить это к емаксу. И получилось отлично! Но не так идеально, как я хотел... время поджимало, поэтому вышли костыли.

Я использовал EDE проекты для автокомплита, компиляции и дебага. И в идеале хотел сделать для ЕДЕ тэмплейт, чтобы всё было автоматизировано, но пока есть только костыли.

Мне оч нравится lisp, но нет времени и задач для его изучения, поэтому код может быть ужасным. Но он работает ^^

Итак мой костыль для stm32 в емаксе: https://github.com/SL-RU/stm32-emacs

  1. нужно установить CEDET и https://github.com/texane/stlink
  2. клонируем https://github.com/SL-RU/stm32-emacs и делаем git submodule update --init
  3. в init.el
    (load-file (concat user-emacs-directory "/stm32/stm32.el"))
    (require 'stm32)
    ;;По желанию
    (stm32-load-all-projects)
    (global-semantic-idle-scheduler-mode 1)
    
  4. создаём проект в CubeMx и генерируем его для SW4STM32
  5. M-x stm32-new-project RET *select CubeMX project path*
  6. stm32-run-st-util для запуска st-util
  7. stm32-start-gdb для запуска gdb
  8. (gdb) load для загрузки прошивки
  9. stm32-generate-makefile для перерегенерации мэйкфайла и тд после изменений в кубМх и тд

И оно роботаит. О том как загружать прошивку стоит почитать в доках st-util.

Итак, что вы можете предложить, чтобы улучшить ето? Текущее состояние довольно юзабельно, но можно же сделать лучше, хех

 , ,


Viewing all articles
Browse latest Browse all 73859

Trending Articles