Может инетерсующимся программированием будет интересно. Я получил работающий USB device на ядре Сortex a7 stm32mp1 с использованием практически не модифицированных файлов библиотеки HAL кубовской. Оно вообще всё компилируется (разумеется, msp функции и назначение обработчиков другие, но тоже на базе CMSIS). HAL драйверов для Ethernet, LTDC и USB производитель не дает – но они получились с помощью редактирования тех, что были для STM32H7xx.
Я выкинул всё своё, кроме создания дескрипторов и кода обработки USB DEVICE классов.
Взял USB CORE последний (тот что идет с кубом под F4). добавил обработку списка классов для составного устройства и выдачу дескрипторов своих.
Ввел в HAL изменения romanetz про передачу/прием чет/нечет для HS ISO ендпоинтов – кстати, код идентичен на всех процессорах. У меня ранее был баг.. в одном из мест проверялся ноль не в одном младшем бите, а во всех битах номера фрейма.
Короче, звук туда и обратно идет без треска или еще каких проблем. Проверяю на сквозном канале с компьютера в трансивер и обратно, прослушивая на компьютере. Должно сильно уменьшить наводки от USB на прёме.
Да, DMA тоже заработал во всех USB классах. clean/invalidate добавил куда надо.
Что напрямую, что через HUB - работает. Переключаю на ходу. Правда есть один человек, у которого на USB HS AUDIO не заработало. Пришлось в его прошивке оставить USB FS.
Закончил перетряхивать проект на предмет масштабирования сигналов. Все внутри единица минус единица. Разумеется, проще для понимания стало.
Появились объекты трансформ - заранее рассчитанные сдвиги влево вправо для преобразования например выхода плис в 24 бита аудио. То что спрятал внутри работает на сдвигах. А адаптеры это преобразование целых во float и наоборот для заданной разрядности и позиции в слове. Избавился от десятков макросов.
- Перевел внутренность FPGA на 28 бит вместо 32, Занятый ресурс FPGA по логике немного уменьшился - менее чем на 10%. Увеличил порядок интерполятора передатчика (с 8 до 9).
- Продолжаю устранение «скрипа и скрежета» - переходные процессы при передаче/приеме. Причем, при переходе на передачу формировался 15 мс шумовой сигнал в антенне.
- Некоторые эксперименты с цветовым оформлением (попытка уйти от зеленого/темно зеленого фона).