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

Вопрос по OMAP L-138

Здравствуйте.

Не мог ли кто-то помочь в решении такой проблемы: Мне нужно каждую секунду передавать массив(результат расчета алгоритма) из DSP в ARM ядро. Я делаю это через DSP link. Объем массива 1200 байт.

В ARM ядре я этот массив обрабатываю и пишу в файл, находящийся на USB флэш. Помимо этого я пишу в этот же файл еще один поток раз в три секунды объемом 2 килобайта. Пишу на лету, обработал и сразу записал.

Переодически поступают неверные данные из DSP. Причем абсолютно в случайные моменты времени. Если убираю функцию записи в файл сбои исчезают. При этом данные я смотрю на консоли.

 

Как запись в файл может влиять на работу DSP или dsplink?

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


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

Например неправильно заданное окно общения для DSPlink. Точнее ситуация когда ядро не знает об этом окне. :)

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


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

Не подскажите как это можно отследить?

 

В ARM ядре я жду сообщение от DSP

/* Receive the message */

status = MSGQ_get (gppMsgq, WAIT_FOREVER, (MSGQ_Msg *)&msg) ;

if (DSP_FAILED (status)) {

printf ("MSGQ_get () failed. Status = [0x%x]\n",(Uint16)status) ;

}

 

Дожидаюсь посылаю обратно данные

/*Send the same message received in earlier MSGQ_get () call */

status = MSGQ_put (dspMsgq, (MSGQ_Msg)msg);

 

Соответственно в DSP я посылаю сообщение

msgqStatus = MSGQ_put(dstMsgQueue , (MSGQ_Msg)outputMsg);

if (msgqStatus != SYS_OK) {

SYS_abort("Failed to send a message to process function");

}

 

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

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


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

Честно говоря уже не помню. Кажется, ядру передавался параметр mem=size@location mem=size2@location2 или подобное. Таким образом резервировалась область для общения с DSP.

PS верно помню. http://processors.wiki.ti.com/index.php/GS...-L138_EVM_board

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


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

Посмотрел, беру я правильно. Сбоев указателей не происходит. У меня такой вопрос - не могут ли драйвера в самом Linux для SDHC и USB давать какое-то прерывание или как-то подвешивать DSP?

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

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


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

Посмотрел, беру я правильно. Сбоев указателей не происходит. У меня такой вопрос - не могут ли драйвера в самом Linux для SDHC и USB давать какое-то прерывание или как-то подвешивать DSP?

Всё возможно конечно, но 99.9% вероятность, что баг в Вашем коде. :laughing:

А если всё-таки грешите на линух - так не пользуйтесь им. :laughing:

Межъядерный обмен там элементарный - достаточно небольшого куска общей памяти и пары прерываний (одно - к ARM-ядру, другое - к DSP).

Ну и ещё конечно - желательно запретить кеширование для этого куска памяти.

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


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

От Linux я на данном этапе отказаться уже не могу. Думаю и c Linux все решаемо если знать как. А вот насчет кэширования - спасибо, я об этом не подумал

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


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

Трудно сказать что может быть.

Куда идти:

Если вам удастся найти критерий отличия хороших данных от неверных, то можно написать код, который пишет в лог разную информацию, включая признак неверности данных кода. Из разных мест вы пишите иникальный идентификатор.

Дальше анализируйте результат.

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


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

Я разобрался, но пока не пойму как исправить. Это происходит когда что-то пишешь на USB флэш. Т.е. стоит обратиться к USB флэш происходят сбои

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


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

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

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

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

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

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

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

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

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

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