Перейти к содержанию
    

SYS/BIOS C674x DSP проблемы с прерываниями

Всем привет!

 

Продолжаю я сражаться с L138, SYS/BIOS 6.x и сейчас вот какая штука всплыла.

Приложение у меня многозадачное. Работают сразу несколько задач. Одновременно работает и ARM. Но в один прекрасный момент ARM перестает работать. DSP работает как и работал.

Происходит вот что.

В системе есть таймер с клоком 1 mS. Есть еще одна задача, которая блокирует прерывания на 2..3 mS. Запускается иногда. В общем для меня не очень критично. Но... В один прекрасный момент перестает работать ARM. Я обнаружил, что кто-то сбрасывет регистры SD карты. Происходит это не сразу. Но после 15 минут работы, системы вылетает.

Попытки отследить где это происходит и кто это делает, результатов не дали, но то что это происходит где-то в прерывании - 100%. Мое приложение точно к SD карте никак не доступается. Происходит это когда блокируется прерывание. Если та-же ф-я (FFT написанная на C) будет выполняться без запрета прерываний, то все работает. :)

 

Может кто уже сталкивался с подобным? Или у кого есть идеи как эту проблему решить? Кто виновать в общем надо найти.

 

Использую SYS/BIOS 6.x на стороне DSP.

 

Все предложения принимаются к рассмотрению! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем нашел я проблему! Можете меня поздравить! :)

Проблема была не в DSP а в WinCE которая работает на ARMе.

 

Все дело в том, что по дефолту, у WinCE установлены режим отключения юзера через 3 минуты, и режим спячки через 5 минут.

Когда WinCE переходит в режим спячки (по идее она это делать не должна), она отключает и SD карту и многое другое. Это и было проблемой.

Чтобы этого избежать, нодо вот что сделать.

В файле платформы ( platform.reg ) есть вот что:

; State transition timeouts

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]

"ACUserIdle"=dword:078 ; in seconds (currently 2 minutes)

"ACSystemIdle"=dword:12c ; in seconds (currently 5 minutes)

"ACSuspend"=dword:0 ; disabled

 

Эти значения надо поменять на "0" т.е.:

; State transition timeouts
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]
    "ACUserIdle"=dword:0      ; disabled
    "ACSystemIdle"=dword:0  ; disabled
    "ACSuspend"=dword:0      ; disabled

 

И тогда все будет работать! :)

 

Нафига это было выносить в общую конфигурацию платформы, для меня загадка. Но у TI много таких фичь. :)

Изменено пользователем Russky

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...