
Библиотека для плат на базе WCH CH56x с проверенными драйверами USB3/USB2/HSPI/SerDes, логированием и отложенными прерываниями
Эта библиотека была создана вместе с Hydradancer — новым бэкендом для библиотеки эмуляции USB Facedancer на основе чипа WCH569.
Для этого проекта требовались надёжные драйверы, а многие возможности в примерах WCH отсутствовали или не были протестированы.
Эта библиотека предоставляет драйверы USB3, USB2, HSPI и SerDes, протестированные с помощью бенчмарков и тестов целостности в tests/. Она основана на wch-ch56x-bsp, но её цель — предоставить библиотеку более высокого уровня. Поскольку Hydradancer использовал несколько периферийных устройств одновременно (USB3/HSPI, USB2/HSPI), была реализована очередь прерываний, чтобы не пропускать прерывания при использовании hspi_scheduled, а также статический пул памяти. Хотя тесты в этом репозитории достаточно просты, чтобы выполнять обработку внутри обработчиков прерываний, Hydradancer терял прерывания, и потребовалось откладывать их обработку до пользовательского режима.
В проекте на основе CMake достаточно использовать add_subdirectory(path_to_wch-ch56x-lib) и слинковаться с целью wch-ch56x-lib. Сейчас wch-ch56x-lib является INTERFACE-целью, то есть исходные файлы и заголовки будут компилироваться вместе с вашей целью, а не отдельно.
Доступные опции
Для сборки и прошивки встроенного ПО см. руководство по сборке.
Дополнительную информацию о параметрах компиляции также можно найти там.
В этом проекте используются одна или две платы HydraUSB3 на основе микроконтроллера WCH569 RISCV.
wch-ch56x-lib/
| ├─ tests/ # test firmwares to test various parts of the library
| ├─ src/
| | ├─wch-ch56x-lib # the source/header files of the lib
| ├─ tools/
| ├─ docs/ # additional documentation
Дополнительную информацию о различных тестах и способах их использования можно найти в docs/Testing.md
Если вы столкнулись с ошибками или хотите предложить новые функции, пожалуйста, просмотрите существующие issues и при необходимости создайте новую issue.
Чтобы внести код, рекомендуется проверить существующие issues и сообщить другим участникам через комментарий, что вы работаете над чем-то. Так вы не потратите время зря на функцию, которая не нужна или уже находится в разработке.
После этого, пожалуйста, создайте pull request и укажите ссылку на связанную issue.
Ваш код должен следовать руководству по стилю кодирования.