Сегодня, дорогие мальчики и девочки, мы поговорим, про то, как завести плату STM32 Discovery под Linux.
Как известно, на ней присутствует встроенный отладчик ST-Link, который позволяет программировать и отлаживать основной проц STM32F100RBT6B по интерфейсу SWD. Но вот незадача, ST-Link под Linux работает криво, кое-как эмулируя SCSI диск, что вводит ядро в ступор. Работать с родным ST-link'ом умеет программа stlink. Также можно залить в вспомогательный чип модифицированную прошивку от Versaloon, после чего устройство будет представляться как ком порт и с ним сможет работать например vsprog.
Пойдём по пунктам:
Как написано выше, оригинальная прошивка дискавери по USB представляется SCSI диском, но не отвечает на многие запросы ядра, что приводит к ресетам USB устройства. У автора этих строк получилось добиться относительно стабильной работы добавлением строчки
{ USB_DEVICE(0x0483, 0x3744), .driver_info = USB_QUIRK_RESET_MORPHS },
в файл drivers/usb/core/quirks.c, которая говорит ядру не ресетить устройство при ошибках.
После чего при первом запуске после подключения платы stlink тупит секунд 30 и заводится.
На плате дискавери находится два МК: собственно главный МК STM32F100RBT6B, ради которого вся веселуха и зачиналась. И STM32F103C8T6 - МК с зашитым отладчиком ST-Link.
Оба MK залочены и перед проведением спецоперации их надо уговорить сотрудничать.
Главный МК можно разлочить из винды, через ещё неубитый ST-Link с помощью штатных тулзов. Либо через USART bootloader программой Flash Loader Demonstrator, которая прекрасно пускается через wine. Что бы МК запускался в режиме лодыря необходимо снять перемычку SB16 расположенную с нижней стороны платы и ребутнуть проц чёрной кнопкой. А после разлочки и стирания не забыть поставить её на место.
Кстати, если Вас не интересует отладка, то можно не парится и шить МК через лодырь.
Вспомогательный МК, в котором зашит ST-Link, можно разлочить и перешить тоже двумя способами.
44-BOOT0, к шине +3.3V (можно взять на рядом расположенном конденсаторе C6) и подачей напряжения питания.TODO
TODO