Резюме по задаче

На плате NUCLEO F767ZI физически распаян только один разъем Micro-USB (он подключен к программатору). Однако сам микроконтроллер STM32F767ZI поддерживает USB, и необходимые контакты USB выведены на внешние разъемы (GND, D+, D-, VBUS).Так как нет второго готового разъема, операционная система ПК сейчас может общаться только с контроллером ST-LINK. Никакой код внутри STM32 физически не может перехватить файлы, которые помещаются на диск ST-LINK (на котором уже находятся файлы DETAILS.TXT и MBED.HTM), так как этот диск аппаратно принадлежит другому камню на плате.

Чтобы была возможность читать файлы из внутреннего хранилища, есть два пути: аппаратный (правильный) и программный (нештатное поведение, может повлечь сбои или выход из строя).

  1. Аппаратный – подключение USB-разъема. Понадобится любой копеечный USB-разъем (USB Type-C или Micro-USB на платке-переходнике) или старый USB-кабель, который можно разрезать. Согласно схеме платы, нужно подключить четыре провода к синей двухрядной колодке CN12: GND любой пин GND, D+ к пину PA12, D- к пину PA11, VBUS к пину PA9 для определения подключения кабеля. Сейчас существует проект, который настроен на данные пины, при записи на подключенный через эти входы диск будут загораться и гаснуть те же диоды, которые уже работают при “пинге” с USART.
  2. Программный обходной путь. Возможно поменять логику проекта – заставить STM32 не притворяться флешкой, а читать файлы, которые загружает встроенный ST-LINK. Контроллер ST-LINK на плате умеет прошивать STM32, если кинуть на него .bin или .hex файл. При этом ST-LINK перезагружает STM32. Мы можем использовать это. !Концепция: компилируем пустой файл, меням его расширение на .bin и перетаскиваем на монтируемый диск ST-LINK. При этом плата немедленно уйдет в сброс, но есть возможность зафиксировать это событие, мы можем проверять флаг источника сброса при старте контроллера. Минус этого способа: STM32 будет перезагружаться, и мы не сможем хранить файлы в RAM-диске, но сможем выполнять действия по фактам загрузок.

Очевидно, что второй путь нам не подходит, поэтому диск, который подключается к ПК при подключении отладочной платы считать местом хранения нельзя.

На мой взгляд наиболее адекватным выглядит использование внешней флеш-памяти (SD-карта), поскольку в стандартной поставке freeRTOS имеется штатная поддержка аж двух SDMMC, что может обеспечить не только балансировку нагрузки по памяти, но и резервирование данных. Но, конечно же, всё будет зависеть от поставленных перед памятью задач.