[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Вы определитесь. Или wch-link-only, или по-человечески.[/uquote]Как бы вы не пытались переврать, моя позиция чёткая и однозначная. Отлаживать через WCH-Link совершенно нормально. Прошивать через WCH-Link, USB или UART - более чем нормально. Все ваши нечеловеческие страдания по этому поводу это какая-то нездоровая фобия.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Те же stm32flash и dfu-util не видят.[/uquote]Ещё есть sam-ba у бывшей Atmel, она тоже не видит. А с чего бы они должны видеть?
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Опять искать странный китайский софт, разбираться как его запустить и все в этом роде.[/uquote]Скачать на официальном сайте и запустить даблкликом не судьба? Это выше ваших способностей?
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Правда, сам софт кривой: запускается раза с пятого, может не показать интерфейс и т.д.[/uquote]Работает как автомат калашникова
Спойлер

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]В чем претензия-то?[/uquote]Перевираете слова.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]...абсолютно бесполезны без контекста. Я не собираюсь угадывать что же вы хотели ими сказать.[/uquote]Опять таки, я не виноват, что вы не можете уследить за контекстом беседы. Могу, разве что, посоветовать перечитывать по несколько раз.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]В том-то и дело, что просто не вызовется.[/uquote]Зашибись, просто не вызовется прерывание. Это называется "всё работает"? А теперь усложним задачу - не прерывание, а немаскируемое исключение. Вызовется и таки все сломает.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Если бы вы сами читали документацию, то видели бы, что для работы приоритетных прерываний сам обработчик должен произвести некие
манипуляции.[/uquote]Интересно получается. Я показал код, который как раз эти "некие манипуляции" делает. У вас он вызвал вопрос "какой-то странный код". На картинку из документации с пояснениями вы ответили "не понимаю". И после этого именно я не читал документацию? Ну совесть то поимейте.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Когда я с этим разбирался, набросал вот такой код:[/uquote]Честно? Так себе код то. 1. Стек сломается при вложенных прерываниях. 2. Для быстрого сохранения контекста в ядре есть регистры pushmcause, pushmepc и pushmsubm. 3. Зачем целых три регистра временных задействовано? Можно одним обойтись - меньше в стек лазить. 4. Зачем по несколько раз регистры в стек кочуют? В начале сохранил, в конце восстановил.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Там довольно интересный механизм обработки вложенных прерываний: чтобы прерывание вызвалось, надо чтобы его приоритет был выше текущего (у обычного кода приоритет, очевидно, самый низкий), и был поднят флаг глобального разрешения.[/uquote]Ну надо же, как интересно

В других контроллерах приоритетных прерываний не бывает?
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]Насколько я понял, это сделано для того чтобы обработчик успел сохранить все необходимое на стеке, а главное - регистр возврата.[/uquote]При вызове обработчика глобальные прерывания автоматически запрещаются. После того как сохранён контекст прерывания разрешаются либо руками в векторном режиме, либо автоматически в момент перехода на реальный обработчик по команде "csrrw ra, CSR_JALMNXTI, ra".
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4355921#p4355921"]В не-векторном режиме сделано еще более красиво, но им я не особо интересовался, поэтому подробностей не помню.[/uquote]Я бы назвал это просто практично. В невекторном режиме команда "csrrw ra, CSR_JALMNXTI, ra" вызывает текущее прерывание по таблице векторов. Возврат происходит опять на неё и если есть ещё необработанные прерывания, то они тоже вызываются, но уже без этапа сохранения контекста. Если активных прерываний больше нет, то "csrrw ra, CSR_JALMNXTI, ra" выполняется как NOP и код переходит к восстановлению контекста.