novartis 0 April 29, 2015 Posted April 29, 2015 · Report post Я вывел ногу irqn в сигналтап, чтобы отслеживать изменения на ней, но никаких изменений так и не увидел. Я запускаю стандартный пример от атмела UDP_CLIENT_EXAMPLE для winc. SPI работает, chip id считывается, версия прошивки считывается. В самом примере проходят функции m2m_wifi_init, m2m_wifi_connect. Никаких ошибок не появляется. Но в результате к роутеру модуль не подцепляется, на самом роутере он не появляется. Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 April 29, 2015 Posted April 29, 2015 · Report post Никаких ошибок не появляется. Но в результате к роутеру модуль не подцепляется, на самом роутере он не появляется. То-есть функция переданная через pfAppWifiCb вызывается с event==M2M_WIFI_RESP_CON_STATE_CHANGED и M2M_WIFI_CONNECTED == pstrWifiState->u8CurrState ? Сама по себе m2m_wifi_connect() ничего не делает и ее успешный возврат ни о чем не говорит. Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 April 30, 2015 Posted April 30, 2015 · Report post Не совсем понял насчет pfAppWifiCb. А на счет того, что функция m2m_wifi_connect ничего не делает, я бы поспорил. Эта функция передает в вифи модуль параметры для коннекта (ssid,pwd). Я предполагаю, что она также дает команду модулю законектиться к данной вифи сети. Также я предполал, что после вызова этой функции и после того как модуль законнектится к вифи, модуль должен выставить прерывание и вызваться callback - wifi_cb. Может я и ошибаюсь насчет прерывания. Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 April 30, 2015 Posted April 30, 2015 · Report post Не совсем понял насчет pfAppWifiCb. pfAppWifiCb - это член в структуре, через которую происходит инициализация callback-а (в вашем случае это видимо wifi_cb). Поиск по программе должен найти это место, так как сам по себе wifi_cb без регистрации вызваться не будет. У меня под рукой сейчас нет исходников и слишком поздно и лениво качать что-либо. А на счет того, что функция m2m_wifi_connect ничего не делает, я бы поспорил. Под "ничего не делает" я подразумевал, что успешный код завершения от нее не говорит об успешном присоединении, только о правильности параметров. А вообще я бы рекомендовал начать с D21 Xpro. А так выходит слишком много переменных - новое железо с новым процессором. Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 April 30, 2015 Posted April 30, 2015 · Report post Сдвинулось дело! Понизил частоту spi с 40мгц до 20мгц и коннект состоялся - роутер сказал, что к нему подцепился winc. Но вот нога irqn так и не дернулась. Все таки не понятно на какие события она дергается. Буду дальше разбираться. Дергается irqn, это я не туда смотрел сначала. Все, осталось обработчик прерывания в ниосе задействовать. Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 April 30, 2015 Posted April 30, 2015 · Report post Понизил частоту spi с 40мгц до 20мгц и коннект состоялся - роутер сказал, что к нему подцепился winc. Рекомендованная максимальная частота - 12 МГц. Выше - там ни процессор внутренний не справляется ни пропускной полосы ножек не хватает для нормальной передачи сигнала. Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 April 30, 2015 Posted April 30, 2015 · Report post В даташите написано 48мгц максимум для spi, а где про 12 мгц сказано? Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 April 30, 2015 Posted April 30, 2015 · Report post В даташите написано 48мгц максимум для spi, Это хорошо, что сейчас есть DS :). Когда я впервые с этим модулем игрался его не было. Так что это может быть и так, но ПО внутри точно на 48 МГц данные не сможет принять. а где про 12 мгц сказано? Сказано устно разработчиками :) Ну и экспериментально опробовано. Правда пробовалось с D21 в качестве мастера, у которой ноги точно в районе 12-16 МГц ограничены. Плюс я делал эксперименты на сравнительно старых прошивках. Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 April 30, 2015 Posted April 30, 2015 (edited) · Report post Я посмотрел на пример RTSP. Не знаю что именно происходит с закрытием соединения, я смотрел на пример без. В логе Wireshark видно, что VLC посылает запрос, получает ответ, закрывает соединение, создает новое соединение, посылает еще запрос, в этот раз без пути к файлу и с другой строкой User Agent. Потом VLC закрывает соединение, похоже так как не дожидается ответа на этот запрос. Я не знаток RTSP и не могу быстро найти логов нормальной работы для сравнения. Но похоже, что нужно разбираться что происходит во втором соединении и запросе. wo_close.zip Edited April 30, 2015 by ataradov Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 May 2, 2015 Posted May 2, 2015 · Report post Разобрался с rtsp. В ответе на запрос SETUP добавил в конец /r/n. То есть в конце получилось /r/n/r/n. И после этого стал прилетать PLAY. Еще разобрался с портированием под альтеровский ниос. Как уже писал, после того как понизил скорость spi до 20мгц, прерывание стало прилетать. Прерывание завел на кусисный pio. Повесил на него в ниосе стандартный обработчик, в конце обработчика вызываю isr() - это обработчик из атмеловских драйверов. Атмеловский пример UDP client example полностью прошел. Всем спасибо! Особенно ataradov за поддержку! Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 May 25, 2015 Posted May 25, 2015 · Report post Опять возникли сложности . В драйверах атмела есть функция hif_send. Эту функцию вызываем, когда отправляем данные по udp. Сперва в ней читается регистр 0x150400, ответ заполняет переменную dma_addr. Дальше, если dma_addr!=0, то данные отправляются, а если дма аддр равен нулю, то выдается Failed to alloc rx size. Иногда у меня пролетает, что дма аддр равен нулю. Хотелось бы понять из-за чего это происходит, что это значит? Также имеется и более фатальная ситуация с этим дма аддр. Если поднять Роутер на телефоне с андроидом 2.3, законнектить к нему winc и другой телефон с андроидом 4.0, то при отправке udp данных с winc на андроид 4.0, то все работает долго и стабильно. Если поднять Роутер на телефоне с андроидом 4.0. Законнектить к нему winc и с winc отправлять udp данные на телефон-Роутер, то примерно через 12-15 секунд начинает постоянно вылетать dma_addr=0 и это уже не обратимо. Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 May 25, 2015 Posted May 25, 2015 · Report post Хотелось бы понять из-за чего это происходит, что это значит? Это значит, что закончилась память под пакеты внутри модуля. Нужно ждать пока отправятся. И если долго не отправляется, то что-то сломалось :) В первую очередь стоит проверить и обновить версию прошивки на последнюю, из них баги вылизывают постоянно. В версиях до 17.0.0 у меня постоянно эти ошибки были. Если поднять Роутер на телефоне с андроидом 2.3 Можно подробнее, что именно и как "поднимается"? Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 May 25, 2015 Posted May 25, 2015 · Report post Версия firmware - 18.0.3 Min driver ver 18.0.0 Curr driver ver 18.0.0 Вчера проверял в атмел студио, последние версии стоят. На телефоне я включаю точку доступа. Winc коннектится к ней. Вот в первом случае все работает, иногда пролетает дма аддр = 0, но не смертельно. А во втором случае через 12-15 сек ломается без поворотно. А хотелось бы получить вариант задействовывания только одно телефона. Quote Share this post Link to post Share on other sites More sharing options...
novartis 0 May 25, 2015 Posted May 25, 2015 · Report post Вывел на печать dma_addr. Получил такие цифры: ... ... ... 897860 910222 972144 972144 972144 972144 933022 910200 894442 0 0 0 0 0 ... То есть, сначала было много места, потом, бац, и нет места. Что-то ломается. Quote Share this post Link to post Share on other sites More sharing options...
ataradov 0 May 25, 2015 Posted May 25, 2015 · Report post Версия firmware - 18.0.3 Да, это последняя. На телефоне я включаю точку доступа. Winc коннектится к ней. С воспроизведением этого тут могут быть проблемы, так как мобильные операторы отключают эту возможность в телефонах. Нужно будет разлоченый телефон искать. А во втором случае через 12-15 сек ломается без поворотно. А хотелось бы получить вариант задействовывания только одно телефона. У меня точно такая же беда была с точкой D-Link. Пока физически точку не отдал разработчикам - не верили, что есть баг. Будем надеяться, что эта история заставит их верить в новые баги :) То есть, сначала было много места, потом, бац, и нет места. Что-то ломается. Мне кажется этот dma_addr - это реальный адрес в памяти. И судить по нему как много места осталось - нельзя. Я так же не уверен сколько этой памяти под буфферы отведено. Но кусок с 910222 позднее выделен как 910200 и 972144 выделен несколько раз подряд, то-есть до какого-то момента очередь освобождается. Я поговорю с разработчиками и узнаю как они планируют такие вещи отлаживать. Quote Share this post Link to post Share on other sites More sharing options...