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

TSURKOV

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

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

  • Посещение

Репутация

0 Обычный

Информация о TSURKOV

  • Звание
    Участник
    Участник

Контакты

  • ICQ
    Array
  1. Спасибо за информацию. Уточняю данные по проекту. Работаю с системой на кристале HPS - ARM, Cyclone-V, ОС linux - сборка ядра Angstrom v2013.12 - Kernel 3.10.31 - ltsi - 02861 - g801a40f Прерывание хочу обрабатывать от собственного модуля, подключаемого к HPS по avalon шине (вроде того что в ссылке которую привел в начале)
  2. нашел статью с примером https://zhehaomao.com/blog/fpga/2014/05/24/sockit-10.html не получается подключить библиотеки module.h nit.h kernel.h fs.h ioport.h sched.h даже не могу найти заголовочные файлы на диске. Слышал что эти библиотеки входят в состав какой то другой обобщающей библиотеки. Прошу помощи !!!
  3. Здравствуйте Коллеги. Проектирую фазовый детектор. Требуется нормировать отчеты сигнала относительно максимума. Подскажите какой наиболее эффективный алгоритм лучше использовать для реализации на ПЛИС, в проекте с частатой дискритехации 100 Мгц. Спасибо.
  4. Здравствуйте Коллеги. Проектирую фазовый детектор. Требуется нормировать отчеты сигнала относительно максимума. Подскажите какой наиболее эффективный алгоритм лучше использовать для реализации на ПЛИС, в проекте с частатой дискритехации 100 Мгц. Спасибо.
  5. Спасибо. Я тоже такую штуку в интернете нашел. Смутило что на плате AVRISP стоит mega128 а в списке утилиты такой схемы нет.
  6. прошивка для AVRISP mkII

    Здравствуйте. Подскажите как оживить программатор AVRISP mkII - он завис в режиме обновления и теперь не удается к нему подключиться! Можно его оживить? и как ? или уже все?
  7. Вопрос про DMA

    Я тоже обратил внимание на выход к шине. но в таблице каналов и потоков не обнаружил FSMC интерфейса !?
  8. Вопрос про DMA

    Уважаемые коллеги. Хотел уточнить, правильно ли я понимаю ситуацию, что stm32f207 не имеет возможности работать по DMA в режиме внешняя память-> внешняя память !?
  9. Уважаемые знатоки lwip стека. Подскажите пожалуйста как грамотно контролировать tcp соединение, как его перезапустить. Насколько я понимаю для этой цели используется функция poll, она периодически вызовется, но в момент ее вызова я не наблюдаю отправки каких либо сообщений в сторону сервера. О закрытии соединения меня информирует флаг (es->pcb->state == CLOSE_WAIT) находящийся в функции обработки принятых сообщений, по нему, пытаюсь закрывать клиента, и потом пере запускать (где то пока подглючивает). А как быть если сервер просто завис в установленном соединении, а потом его перезапустили? Как определить его зависание на stm ? В таком случае мне нужно, определить сбой соединения и установить новое соединение, значит я должен периодически посылать запрос серверу (tcp_connect) до момента подключения?
  10. Еще раз большое спасибо. ;) Все отлично заработало, проблема оказалась в программе на ПК.
  11. Интересно, а могу я на уровне пользователя lwip стека, убедится, что переданное мной сообщение получено, и только после передавать новое. Где и какие это могут быть флаги!?
  12. Помогло. Но правда в другом. После вызова tcp_write стал делать вызов tcp_output (подсмотрел в Вашем коде). Скорость возросла более чем в два раза, местами до полу мегабайта дотягивает. Но этого все равно маловато, видимо это не основная причина, попрежнему много коллизий и перезапросов как с одной так и с другой стороны. Когда тестирую две программы на PC все передается чисто, равномерно, с процессором из за перезапросов все дергается. Периодически отправляет несколько раз один и тот же пакет данных. Буду думать дальше. Спасибо за помощь.
  13. скриншот wareshark. Такое впечатление, что процессор не получает некоторые подтверждения от PC и повторно шлет пакеты. Что и снижает общую скорость.
  14. Насколько я понимаю подтверждение tcp_recived это для случая когда процессор принимает. Во всяком случае я так делал. err_t tcp_client_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err) { // обработка принятого пакета tcp_recved(tpcb,p->tot_len); pbuf_free(p); } Для случая передачи я просто вызываю calback функцию tcp_sent(ptcp_pcb, tcp_client_sent) Хотя ее смысл мне не понятен (функцию взял из примера) в if программа не заходит. err_t tcp_client_sent(void *arg, struct tcp_pcb *tpcb, u16_t len) { struct tcp_client_struct *es; LWIP_UNUSED_ARG(len); es = (struct tcp_client_struct *)arg; if(es->p_tx != NULL) { tcp_client_send(tpcb, es); } return ERR_OK; } вообще мой обработчик передачи крутится в основном цикле и выглядит примерно так void SendDataHandler(void) { // запаковка данных if(tcp_sndbuf(ptcp_pcb) >= msg_len) { err = tcp_write(ptcp_pcb,&tx_tcp_msg,msg_len,1); tcp_sent(ptcp_pcb, tcp_client_sent); } } если err == ERR_OK значит данные переданы.
×
×
  • Создать...