ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
6 сентября
1602870 Топик полностью
Связанные сообщения
Ch32VWch-LinkeCh32V317DmaIdeOpenocd
Ёё-хо-хо.. и бутылка рома! не зря просидел 48 часов в трусах впилившись в монитор. прикрутил FreeRTOS TCP к ch32v307!! Ni...2026-07-22
Положу ещё и сюда, на память. WCH CH32V317. Ещё один нюанс с UARTом. Не исключаю, что такое будет и у STM32F1xx: Если вручную по...2026-07-05
удалось портануть lua 5.5.x из транка в ch32v307. Родя Иерусалимский был бы гением если стал бы писать свою нетленку НЕ-на-С.......2026-06-11
Продолжение темы:2026-06-09
для меня таки настала новая эра - мульти ядерных микроконтроллеров. с алика приехала muse lab nanoCH32H417. посчупал за вымя.. д...2026-06-08
KGP свежак riscv32 . небеса упали на землю, собрал для масдая... не идет гора к Магомету. акцент на оптимизацию под популярные м...2026-04-22
подпилил openocd для большей поддержки ядра процессора QingKeV4F что стоит в сh32v3xx, показывает только те регистры CSR которые...2025-12-25
Китайцы пояснили насчёт остановки таймера в отладке. Есть отладочный регистр dcsr и в нём бит 9 отвечает за остановку СисТика.2025-08-20
Вышел Clion 2024.12024-04-11
тут говорят некоторые что не влетит?2023-04-12
Есть проблема, что скорей профессиональные программисты мало пользуются такими программами. Какой-то функционал частично востреб...2019-02-28
Nikolay_Po (Сегодня, 01:37, просмотров: 91)
Отладка WCH CH32V317. Есть странности/глюки. Вроде, не фатальные, но попивают крови. Дублирую тут своё сообщение из группы RISC-V MCU: 

WCH CH32V317 и отладка WCH-LinkE с комплектным OpenOCD из MRS 2.5, но среда - Eclipse CDT с GDB (не MRS).


Условия: FreeRTOS, критичный код, когда с большой частотой идут прерывания, передаются уведомления, переключаются задачи. Всё отлажено, всё работает, каждую ассемблерную инструкцию управления задачами FreeRTOS знаю. Не только видел, но могу обосновать зачем она там.

И при всём при этом, как минимум два раза наблюдал такое именно во время отладки, когда подключён отладчик и держится сессия GDB:

а) Происходят сбои - например, прерывание DMA срабатывает дважды подряд после одной транзакции. Или что-то подобное - разобрать сложно - при пошаговой отладке всё работает.

б) При снижении скорости работы периферии, связанной с DMA - работает нормально.

в) Сбои постоянные - возникают на несколько-тысячной транзакции, но каждый раз, после перезапуска, на одной и той же. Если меняю код - меняется и количество транзакций перед сбоем. Но для каждой версии прошивки, во время отладки, момент наступления сбоя - один и тот же, на том же номере транзакции (правда, в описываемом случае, других сигналов на МК вообще не поступало - возможно, нагрузка при обработке внешних возмущений меняла бы картину).

г) Но сбои не вечные. После нескольких перезапусков кода (хоть командой в среде разработки, хоть автоматически изнутри программы) - на третью-четвёртую попытку - удачное завершение обмена (~32МБ данных суммарно по каналам SPI) .

И уже дважды было подобное. Нет, трижды. Просто в давний раз я уже не помню, с чем работал, возможно, с UART. Получается так: всё перепроверяю - всё под контролем, я не дурак. Код, вплоть до ассемблера - чёткий, верный. Ну, думаю, всё, тут я больше ничего не сделаю. Проблема в другом.

И если раньше методом тыка, то теперь просто знаю:

- Нужно перезагрузить МК по питанию (один вариант лечения);

- Нужно остановить отладку (нажать стоп в среде разработки) и перезапустить чип внешним RESET.

В сегодняшнем случае у меня сработал второй вариант, не пришлось даже снимать питания с МК.