|
|
  |
проблема с прерываниями, GCC thumb |
|
|
|
Mar 7 2007, 12:36
|
Группа: Участник
Сообщений: 13
Регистрация: 15-10-06
Пользователь №: 21 331

|
Использую GCC из дистрибутива Yagarto. Если просто моргать светодиодом в главном цикле, то периодические прерывания функционируют нормально. Если, к примеру, добавить вызов в цикле sprintf, прерывания перестают работать (через какое-то время ~ несколько сотен вызовов), но главный цикл продолжает выполняться. Предполагаю проблема в стандартной библиотеке, внутри которой используется thumb режим (мой код весь в arm режиме). Хотя, если вызывать мою thumb функцию, зависаний не происходит. В какую сторону копать?
|
|
|
|
|
Mar 7 2007, 14:32
|
Местный
  
Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034

|
Цитата(Latch @ Mar 7 2007, 14:36)  Использую GCC из дистрибутива Yagarto. Если просто моргать светодиодом в главном цикле, то периодические прерывания функционируют нормально. Если, к примеру, добавить вызов в цикле sprintf, прерывания перестают работать (через какое-то время ~ несколько сотен вызовов), но главный цикл продолжает выполняться. Предполагаю проблема в стандартной библиотеке, внутри которой используется thumb режим (мой код весь в arm режиме). Хотя, если вызывать мою thumb функцию, зависаний не происходит. В какую сторону копать? 1. Размеры стеков. 2. Прерывание случайно не в С коде с __attribute__((interrupt("IRQ")))? 3. ...
|
|
|
|
|
Mar 7 2007, 16:08
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(SpiritDance @ Mar 7 2007, 14:52)  Кстати с компилером, который собрал klen проблем вроде нет, и thumb режиме тоже, правда глубоко не тестил. Очень интересует такой вопрос - кто и какие телодвижения должен сделать, чтобы эта проблема исчезла и в официальной сборке WinARM? Ведь, насколько я понимаю, данное исправление никак не влияет на совместимость со старыми исходными кодами (с ручной вставкой пролога/эпилога)? Просто WinARM жив и будет жить, а klen завтра откроет для себя какой-нибудь более вкусный BlackFin и его ветка будет заброшена, поэтому "подсаживаться" на нее несколько опасно.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 7 2007, 20:30
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(Сергей Борщ @ Mar 7 2007, 16:08)  ....а klen завтра откроет для себя какой-нибудь более вкусный BlackFin и его ветка будет заброшена а еще кирпич может на голову упасть, или метеорт. Не волнуйтесь. GCC очень похож на В.И.Ленина - живее всех живых. Кстате после открытия вкусных ARM7 я авэрки не забросил, собираю под обе платформы, скоро циррусы подвизут  . Сеоро свежак соберу  4.1.2 - мои коллеги пообесчали выдать avr-libc 1.5.0 вот ждусь обесчанного чтоб разом пересобрать все а теперь по делу. кто моим исправленным пользовался? были ли побочные эффекты и тд. Просба потраить время и сообщить. Чтоб протащить изменения в основную ветку GCC нужны серьезные основания. Одного моего тестирования недостаточно. О! коллеги, а скажите пажалуста, в КросссВорке 1.6b3 gcc тоже ошибку дает в эпилоге или они исправленный в дистрибутив кладут? я просто его ниразу не пробывал, сразу свой заливал.
|
|
|
|
|
Mar 7 2007, 22:30
|
Группа: Участник
Сообщений: 13
Регистрация: 15-10-06
Пользователь №: 21 331

|
всем спасибо, завтра буду пробовать. похоже действительно в прологе-эпилоге (просто поторопился и код брал из готового примера). как обычно проект надо сдать "вчера"
|
|
|
|
|
Mar 9 2007, 10:19
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288

|
Цитата(klen @ Mar 7 2007, 20:30)  а теперь по делу. кто моим исправленным пользовался? были ли побочные эффекты и тд. Просба потраить время и сообщить. Чтоб протащить изменения в основную ветку GCC нужны серьезные основания. Одного моего тестирования недостаточно. А каких оснований достаточно? И вообще описать поподробней что и как исправлено можно? Цитата(klen @ Mar 7 2007, 20:30)  О! коллеги, а скажите пажалуста, в КросссВорке 1.6b3 gcc тоже ошибку дает в эпилоге... Похоже что да. Таки дает.
--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
|
|
|
|
|
Mar 9 2007, 10:42
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(klen @ Mar 7 2007, 19:30)  а еще кирпич может на голову упасть, или метеорт.  Типун тебе на клавиатуру  . Цитата(klen @ Mar 7 2007, 19:30)  Не волнуйтесь. GCC очень похож на В.И.Ленина - живее всех живых. Но ведь это относится к проекту в целом, а не к отдельным веткам? Цитата(klen @ Mar 7 2007, 19:30)  Кстате после открытия вкусных ARM7 я авэрки не забросил, собираю под обе платформы Так и времени полка прошло всего ничего - я не глуболкий старик, а уже помню как ты открыл ARM7
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|