[#] USB mass storage device и libopencm3
habrabot(difrex,1) — All
2016-07-06 23:00:04


[![image][1]
][2]


Моя работа связана с программированием микроконтроллеров, в частности STM32. Долгое время для работы с периферией я использовала STM32 Standard Peripheral Library, так как она предоставляется производителем и, соответственно, является наиболее полной. Однако работать с ней крайне неудобно: инициализирующие структуры зачастую избыточны, в функциях черт ногу сломит, в общем, очень скоро появляется непреодолимое желание слезть с этой библиотеки и перейти на что-нибудь более аккуратное, грамотно спроектированное и написанное «чистым кодом».

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

Одной из последних задач на работе было поднять USB MSD. Для решения задачи использовалась отладочная плата STM32F4-discovery и [вот этот пример][3]. Пример не завелся. Проблем было две:
1. Было невозможно зайти на диск и прочитать находящийся там файл.
2. Распознавание устройства как дискового занимало более 2-х минут.

Все это было связано с наличием нескольких багов в файле [usb\_msc.c][4]. Таким образом, в данной статье я расскажу о том, как исправить эти ошибки и продолжать с удовольствием пользоваться библиотекой libopencm3.
[Читать дальше →][5]

[1]: https://habrastorage.org/getpro/habr/post_images/2f9/23e/a7e/2f923ea7e0df99d429d4c2d1a8fdd576.jpg
[2]: https://habrahabr.ru/post/304924/
[3]: https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f4/stm32f4-discovery/usb_msc
[4]: https://github.com/libopencm3/libopencm3/blob/master/lib/usb/usb_msc.c
[5]: https://habrahabr.ru/post/304924/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut