-
- Отличие CM0 и CM3 - в отработке невыровненного доступа. CM3
отрабатывает невыровненный доступ корректно, только тактов больше
уходит. CM0 выпадает в HardFault. В настройках ядра какого-то из
них (или обоих) есть бит, отвечающий за работу при невыровненном
доступе. Толи в CM0 есть такой бит, и он по умолчанию сброшен, толи
в CM3 он по умолчанию установлен. Толи у обоих он есть. Ищи сам.
Возможно, что будет достаточно для CM0 его включить (если он там
есть). 99%, что проблема il-2(148 знак., 23.09.2024 09:24)
- Спасибо, вот это похоже на корень зла. Ради интереса поисследую. Но библиотеку я другую возьму - попроще. - vesago(23.09.2024 09:26)
- А заняться отладкой? Нет? "CONNECT caxapa://wtf?bug=hardfault GET answer"... - SciFi(23.09.2024 09:12)
- Может, сюда: Nikolay_Po(464 знак., 23.09.2024 09:12)
- Спасибо, интересные мысли. Я понимаю, что хардфаулт из-за обращения
по левым адресам наверное. Из-за каких-то особенностей кода.
Которые m3 проглатывает, а m0 не хочет. Сам бы я не осилил такую
библиотеку написать. Шрифты и все такое - для меня китайская
грамота. - vesago(23.09.2024 09:22)
- Нужно различать обращение к несуществующим адресам и обращение к
правильным адресам, но не выровненное. Поэтому важно понять, какая
из ловушек Hard Fault срабатывает. А для этого, нужно подключить
файл, в котором прописаны коды ловушек (trap). По-умолчанию, они
weak и заменяются одним общим кодом прерывания, поэтому может быть
непонятно, что конкретно сработало. - Nikolay_Po(23.09.2024 09:38)
- Я обычно проще делаю. В обработчике HardFault пишу "volatile int w
= 1; while (w);". Если туда залетели, отладчиком делаем w=0 и
выходим по шагам. Он вернётся туда, откуда улетел. Там и смотрим
все переменные и т.д. - SciFi(23.09.2024 09:42)
- Мне Эклипс слева, в режиме отладки, выкладывает весь граф
переходов, от самого main(). И не нужно переходить, чтобы
вернуться. - Nikolay_Po(23.09.2024 09:45)
- У меня Ozone тоже показывает Call Stack. Можно прыгать в точки вызовов, смотреть переменные... - SciFi(23.09.2024 09:49)
- Мне Эклипс слева, в режиме отладки, выкладывает весь граф
переходов, от самого main(). И не нужно переходить, чтобы
вернуться. - Nikolay_Po(23.09.2024 09:45)
- Я обычно проще делаю. В обработчике HardFault пишу "volatile int w
= 1; while (w);". Если туда залетели, отладчиком делаем w=0 и
выходим по шагам. Он вернётся туда, откуда улетел. Там и смотрим
все переменные и т.д. - SciFi(23.09.2024 09:42)
- Нужно различать обращение к несуществующим адресам и обращение к
правильным адресам, но не выровненное. Поэтому важно понять, какая
из ловушек Hard Fault срабатывает. А для этого, нужно подключить
файл, в котором прописаны коды ловушек (trap). По-умолчанию, они
weak и заменяются одним общим кодом прерывания, поэтому может быть
непонятно, что конкретно сработало. - Nikolay_Po(23.09.2024 09:38)
- Спасибо, интересные мысли. Я понимаю, что хардфаулт из-за обращения
по левым адресам наверное. Из-за каких-то особенностей кода.
Которые m3 проглатывает, а m0 не хочет. Сам бы я не осилил такую
библиотеку написать. Шрифты и все такое - для меня китайская
грамота. - vesago(23.09.2024 09:22)
- Очень похоже на ардуинщика. "Взял библиотеку. Не работает. Что
делать?" Nikolay_Po(1140 знак., 23.09.2024 09:05)
- Все может быть. Но согласитесь. Этот же проект на F103 работает без
вопросов. И плевать ему на кодировку и черточки. - vesago(23.09.2024 09:18)
- Пролистал файл дальше. Там есть буковки. Просто первые коды, почему-то, пустые. - Nikolay_Po(23.09.2024 09:36)
- Все может быть. Но согласитесь. Этот же проект на F103 работает без
вопросов. И плевать ему на кодировку и черточки. - vesago(23.09.2024 09:18)
- Отличие CM0 и CM3 - в отработке невыровненного доступа. CM3
отрабатывает невыровненный доступ корректно, только тактов больше
уходит. CM0 выпадает в HardFault. В настройках ядра какого-то из
них (или обоих) есть бит, отвечающий за работу при невыровненном
доступе. Толи в CM0 есть такой бит, и он по умолчанию сброшен, толи
в CM3 он по умолчанию установлен. Толи у обоих он есть. Ищи сам.
Возможно, что будет достаточно для CM0 его включить (если он там
есть). 99%, что проблема il-2(148 знак., 23.09.2024 09:24)