Кстати, вот серия постингов про то как скрестить прерывания и плюсы... Вообще без .S файлов.
http://five-embeddev.com/baremetal/intro/
И вот сюда загляните:
https://www.shincbm.com/embedded/2021/06/24/riscv-and-modern-c++-part1-7.html
Начните чтение с конца.
Да именно так и было. Все примеры в сети про 32 бит регистры и без fpu. Подсмотрел что делает компилятор в случае добавления атрибута machine для функции.
Осталось победить кеш память. Счётчик машинных циклов инкрементируется с правильной скоростью 1.2 ГГц а процессор едва ходит как будто на 24 МГц.
Хорошо... сузим тему. Вместо импортозамещения пишем западозамещение.
Разумеется не уверен. Просто как запасное умение для себя рассматриваю.
Корневой раздел кто-то же модерируе.. просто кажется что новичкам вроде меня будет где искать ответы... вспоминаю как лет пятнадцать назад искал инфу про sam7s
Предлагаю создать подраздел тут:
https://electronix.ru/forum/index.php?app=forums&module=forums&controller=forums&id=74
Сужу по возможному импортозамещению...
Посмотрел даташит... Полностью опущены детали, которые в аналогичном месте привели ST. Как вы крутили... Полагаю что это и есть причина.
Еще раз - размер памяти должен быть больше чем в endpoint.
Не надо по всякому, а надо увеличить. В аналогичном месте у ST есть зависимость и от количества ендопинтов всего и от типа DMA/NON DMA. И то что жолжно быть по нулевому смещению в fifo и что дальше.
Пока запустил работу с прерываниями... usb и видео работает по наследству от T113-S3. Похоже, недостаточно полный контекст сохраняю в прерываниях - странности иногда творятся.
В распределении FIFO - посмотрите есть ли разница с тем как оно работает при DMA и без DMA. Если отличия есть - распределяйте как для режима с DMA.
Это на основании разбирательств с STM32... МОжет и тут поможет?
Есть ли какой-то единый способ разрешить кеш память в Risc-v - то что это работает совместно с mmu понятно - но интересно как вообще это делается или это у каждого производителя своё?