ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
-
- Компилятор - 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)