Russky 0 22 декабря, 2014 Опубликовано 22 декабря, 2014 · Жалоба Всем привет! Продолжаю я сражаться с 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. Все предложения принимаются к рассмотрению! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Russky 0 24 февраля, 2015 Опубликовано 24 февраля, 2015 (изменено) · Жалоба В общем нашел я проблему! Можете меня поздравить! :) Проблема была не в 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 много таких фичь. :) Изменено 24 февраля, 2015 пользователем Russky Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться