Доброго вечерка!
Ещё с давних пор я смирился с тем фактом, что хардварная разработка будет проходить на винде. 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
- нужно установить CEDET и https://github.com/texane/stlink
- клонируем https://github.com/SL-RU/stm32-emacs и делаем git submodule update --init
- в init.el
(load-file (concat user-emacs-directory "/stm32/stm32.el")) (require 'stm32) ;;По желанию (stm32-load-all-projects) (global-semantic-idle-scheduler-mode 1)
- создаём проект в CubeMx и генерируем его для SW4STM32
- M-x stm32-new-project RET *select CubeMX project path*
- stm32-run-st-util для запуска st-util
- stm32-start-gdb для запуска gdb
- (gdb) load для загрузки прошивки
- stm32-generate-makefile для перерегенерации мэйкфайла и тд после изменений в кубМх и тд
И оно роботаит. О том как загружать прошивку стоит почитать в доках st-util.
Итак, что вы можете предложить, чтобы улучшить ето? Текущее состояние довольно юзабельно, но можно же сделать лучше, хех