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

Alex_N

Участник
  • Постов

    11
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Контакты

  • ICQ
    Array
  1. Заметил, что после отправки команды 13 (получение статуса SD карты) в ответ ошибка - таймаут передачи команды.
  2. Использую ADSP-BF518, среду VisualDSP++ update 10 и библиотеки файловой системы из комплекта поставки. На некоторых SD карточках происходит зависание программы при закрытии файла, иногда при записи или чтении. Подобная проблема обсуждалась на http://ez.analog.com/thread/1966?start=0&tstart=0 . Решение проблемы найдено не было. Зависание происходит при вызове функции adi_sem_Pending() из ProcessBufferChain(). Кто-нибудь сталкивался с подобной проблемой?
  3. В проекте на ADSP-BF518 появилась следующая проблема. Происходит периодическая задержка реакции на GPIO прерывание по фронту. Величина задержки достигает 1мкс. В фоновом режиме по мере наполнения буфера данными происходит запись на флеш карту. Если запись на карту убрать, задержки прерываний пропадают. Как побороть проблему? Файловая система используется ADI_FSS из комплекта VisualDsp++5.0 Update 9, GPIO прерывания имеют наивысший приоритет.
  4. Некоторые из драйверов устройств из комплекта поставки VisualDSP++5.0 Update 8 требуют установки бита CDPRIO в регистре EBIU_AMGCTL - приоритет DMA над ядром при обращении к внешней памяти. Я заметил, что при установке этого бита происходит периодическая задержка прерываний(в моем случае от внешнего импульса по фронту) на время 10мкс и более. Это по времени совпадает с DMA или MDMA транзакциями. Прерывания имеют наивысший приоритет, вектора и обработчики расположены в памяти L1, а не в SDRAM. Почему же появляется недетерминированная задержка? Регистр DMA_TC_PER пытался настраивать. Кто-нибудь сталкивался с подобной проблемой? Есть ли способы ее решения?
  5. Я случайно заметил, что у меня в программе не установлен бит CDPRIO - приоритет DMA над ядром. Проверить свою догадку смогу только в понедельник. Строчка с установкой бита CDPRIO была закомментирована мной из за горького опыта с файловой системой ADI_FSS и RSI. Установка CDPRIO приводила с недетерминированному времени реакции на внешние прерывания - т.е. иногда прерывания приходили с задержкой на 10мкс и более. Вектора и обработчики были размещены во внутренней памяти L1. Ждем понедельника...
  6. Проблема решилась - не без Вашей помощи, конечно. Сигнал REF_CLK 50МГц заводился на ADSP с ноги 25MHZ_OUT DP83848I, задержанный примерно на 5нс относительно X1 DP83848I(выход CLKOUT ADSP). Подобное схемное решение было позаимствовано с демо платы MCB2300 от KEIL. В последней ревизии платы KEIL изменил схему - сигнал REF_CLK поступает напрямую с тактового генератора без лишних задержек. Я поступил аналогично - сигнал с ноги CLKBUF ADSP , используемый для тактирования PHY, подается напрямую на вход REF_CLK. После переделки ошибки CRC при приеме пакетов исчезли. Остались правда программные проблемы, но это уже другая тема для форума.
  7. При отключенных кеше данных и кеше кода при многократном recv вываливается в UserExceptionHandler из функции tcpip_thread в строке msg->msg.cb.f(msg->msg.cb.ctx); А еще у меня PHY DP83848I подключен не по MII а по RMII. Драйвер от AD пришлось переписать, поменять конфигурацию некоторых пинов и значения регистров. Не кроется ли ошибка в драйвере? Интересно, если проходишь по шагам цикл с вызовами recv, то принять данные удается!
  8. Спасибо за ответ. А с lwIP + VDK такая фигня творится!!! При приеме данных с FTP клиента беспроблемно можно принять файл не более 1800байт. Если размер больше, то программа залипает на очередном recv - вызывается исключение __cplb_miss_without_replacement. Введение задержек между вызовами recv немного улучшает ситуацию - на 2-3 вызова recv программа работает дольше. При просмотре в окне Call stack можно видеть, что сбой проиcходит в основном в tcp_thread при обращении к несуществующему адресу. Также портятся данные не имеющие никакого отношения к lwIP. У меня сложилось впечатление, что в программе не происходит освобождение динамически выделяемой памяти, т.е. количество вызовов malloc больше количества вызовов free. Только почему это происходит?
  9. Посоветуйте, пожалуйста, TCP стек и FTP сервер для ADSP-BF518F. Среда разработки VisualDSP++5.0 Update 8. Пробовал пользоваться lwIP из комплекта поставки VDSP. Установил tinyFTP. Работает плоховато. При чтении файлов с FTP сервера в цикле send приходится ставить задержку, а иначе все залипает. Работает только на 10base. На 100base чтение фалов идет медленно(единицы килобайт) и ненадежно. При записи фалов на FTP сервер ситуация обратная. На 10base программа залипает на втором-третьем вызовах recv с ошибкой __cplb_miss_without_replacement или Undefined instruction, а на 100base работает с невысокой скоростью около 100кбайт/с. Пробовал выделять побольше памяти для lwIP, менять размер буферов чтения записи.
  10. Длина линии MDC 60мм, REF_CLK 50мм. Выходы терминированы резисторами 33 Ом, установленными непосредственно возле PHY. Посмотрю повнимательнее на фронты.
  11. Никак не получается запустить сеть 100base на ADSP-BF518. Драйвер физического уровня DP83848I подключен по RMII. Используется VDSP++5.0 Update8 и LwIP. Драйвер MAC взял из комплекта поставки VDSP и немного подправил под RMII. На 10base полноценно работает, на 100base отказывается. В регистре MAC_RX_STAT после приема пакета значение 0x12011040 - установливается бит RX_CRC (ошибка CRC пакета). Что делать не знаю! Пробовал уже разные настройки. Может кто знает?
×
×
  • Создать...