Связанные сообщения
- Вопрос по CH32V003.2025-02-28
- Я извиняюсь народ.) Но пролейте пожалуйста свет кто чем сейчас
programmирует чипы на RISC-V?2023-11-07
- У ядра QingKeV4 есть расширенный набор коротких команд. Их пока
только WCH-ный GCC порддерживает.2023-04-06
- Траблы с WCH для CH32V203RBT6.2023-03-24
-
- В общем, казалось бы, победил, поправив ключи компилятора. Но нет:
стал опять падать. Причём, в зависимости от кода (использовал
IQmath_RV32 или float - пробовал и то, и другое) получал целый ряд
причин отказа mcause - от 4й до 7й (interrupt = 0): Nikolay_Po(1196 знак., 29.04.2026 00:06, картинка)
- Могу выдвинуть такое предположение: il-2(3736 знак., 29.04.2026 07:08)
- Спасибо. Проверю. В этом проекте, использую два типа блокировки прерываний: Nikolay_Po(170 знак., 29.04.2026 07:24)
- Могу выдвинуть такое предположение: il-2(3736 знак., 29.04.2026 07:08)
- Тоже давеча искал ошибку в проге для CH32V, вылечилось добавлением емкостей по ногам питания и перекладкой питания. - Yft(24.04.2026 09:10)
- Вот почему в прожэкте коней не меняю. Ну, разве что, ГовинИДЕ
первая была глюкавая до невозможности, хош-не хош, пришлось. - mse homjak(23.04.2026 23:02)
- Дык нет же указаний на то, что менял? И вообще, может, с
коэффициентами умножителя тактовой напутал, и от повышенной
скорости всё заглючило. Там много причин придумать можно. - SciFi(23.04.2026 23:13)
- Не-не-не. С тактовой всё ОК - от встроенного RC, там не ошибёшься. Менял - IDE. - Nikolay_Po(23.04.2026 23:42)
- Перенос из одной ИДЕ в другую. Каких-то ключиков не хватило. А
могло и чего дргого. Работает, не трожь, сломаешь. А бегать под
конец прожэкта с горелым задом, такое себе. - mse homjak(23.04.2026 23:19)
- А, ну да. Но на кортексах такие штуки диагностируются довольно
легко. Не знаю, как там в этом риске, но мне было бы интересно
докопаться до корня. - SciFi(23.04.2026 23:22)
- По всей видимости, компилятор генерил неподходящие инструкции из-за
того, что некоторых ключей не было. Падало как раз на выходе из
считалки, где было деление на 10. Но падало не там, где была
неверная инструкция, а чуть позже. Nikolay_Po(703 знак., 23.04.2026 23:51)
- Простите, не проснулся похоже... а все же, если misa убрать, изменится поведение? полезно было бы понять где собаки зарыты - Sergei_sR(24.04.2026 08:14)
- Так неинтересно. В кортексах обычно без труда можно было найти
именно ту инструкцию, на которой он спотыкался. А так лучше вообще
откатиться к проверенным тулзам, как справедливо заметил мсье
хомяк. - SciFi(24.04.2026 07:58)
- Компилятор - GCC15, но собран специально для WCH (из дистрибутыва
MRS2) и учитывает специфические расширения. Если оставить настройки
целевого ЦП в Eclipse по-умолчанию, компилятор вызывается с
ключами: Nikolay_Po(833 знак., 24.04.2026 11:45)
- Ну вот "lw a0,0(a0)", нужно отследить, что там в a0. Перед этим
туда прибавляется t1, а оно берётся из стека "lw t1,0(sp)". Может,
тупо адресная арифметика в исходниках кривая, это же Си, там есть
множество способов выстрелить себе в ногу. Или стек испорчен - тоже
бывает чаще, чем хотелось бы. - SciFi(24.04.2026 12:21)
- Проблема в том, что это место вызывается тысячи раз в секунду. И
лишь при некоторой смене состояния - уходит в исключение. Не
получается поймать. Nikolay_Po(325 знак., 24.04.2026 12:34)
- Насчёт illegal instruction - не знаю, после установки нужных ключей, исключения пропали. Проблема с работой программы нашлась - на какой-то из редакций, код обработчика прерывания ошибки I2C оказался сокращён - я его перенёс в другую функцию, а прерывание использовало прежнюю, которая не сбрасывала ошибку и не отключала прерывание. Nikolay_Po(155 знак., 24.04.2026 13:37)
- Проблема в том, что это место вызывается тысячи раз в секунду. И
лишь при некоторой смене состояния - уходит в исключение. Не
получается поймать. Nikolay_Po(325 знак., 24.04.2026 12:34)
- Ну вот "lw a0,0(a0)", нужно отследить, что там в a0. Перед этим
туда прибавляется t1, а оно берётся из стека "lw t1,0(sp)". Может,
тупо адресная арифметика в исходниках кривая, это же Си, там есть
множество способов выстрелить себе в ногу. Или стек испорчен - тоже
бывает чаще, чем хотелось бы. - SciFi(24.04.2026 12:21)
- Компилятор - GCC15, но собран специально для WCH (из дистрибутыва
MRS2) и учитывает специфические расширения. Если оставить настройки
целевого ЦП в Eclipse по-умолчанию, компилятор вызывается с
ключами: Nikolay_Po(833 знак., 24.04.2026 11:45)
- По всей видимости, компилятор генерил неподходящие инструкции из-за
того, что некоторых ключей не было. Падало как раз на выходе из
считалки, где было деление на 10. Но падало не там, где была
неверная инструкция, а чуть позже. Nikolay_Po(703 знак., 23.04.2026 23:51)
- А, ну да. Но на кортексах такие штуки диагностируются довольно
легко. Не знаю, как там в этом риске, но мне было бы интересно
докопаться до корня. - SciFi(23.04.2026 23:22)
- Дык нет же указаний на то, что менял? И вообще, может, с
коэффициентами умножителя тактовой напутал, и от повышенной
скорости всё заглючило. Там много причин придумать можно. - SciFi(23.04.2026 23:13)
- В общем, казалось бы, победил, поправив ключи компилятора. Но нет:
стал опять падать. Причём, в зависимости от кода (использовал
IQmath_RV32 или float - пробовал и то, и другое) получал целый ряд
причин отказа mcause - от 4й до 7й (interrupt = 0): Nikolay_Po(1196 знак., 29.04.2026 00:06, картинка)