Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: работа с FTP сервером через PPP и TCP/IP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
subver
Прикрутил к AT91SAM7s256 вот это
Нажмите для просмотра прикрепленного файла

используется с GPRS модемом WAVECOM M2106B

Нужно работать с FTP сервером, вроде все нормально, но есть глюк.
При скачивании файла с сервера, "хвост" файла не принимается ("хвост" - это конечные несколько байт файла), либо не принимается файл с размером меньше определенного значения (~400 байт). Сижу и понять не могу, то ли это кривая реализация TCP, то ли действительно этот пакет не долетает до меня.

Есть подозрение, что остаток файла передается с установленным флагом TCP_FIN (запрос на разрыв соединения) и эта реализация протокола его игнорирует.

Все остальные операции проходят нормально (хождение по директориям, закачка файла на сервер и т.п.).

Ну и вопрос, может кто занимался такой реализацией и сталкивался с похожими проблемами? чего делать-то? smile.gif

всем спасибо.
Master
Если найдёшь решение, отпиши плиз.
3.14
2 subver
А чем Вас lwIP оттолкнул?
subver
Цитата(3.14 @ Nov 8 2006, 01:31) *
2 subver
А чем Вас lwIP оттолкнул?

А это что? smile.gif
etoja
В lwIP нет FTP.
at90
AT_Modem__PPP__UDP__ICMP___TCP.zip тоже нет ftp.
subver
В общем решился вопрос вроде. Чуть подправил обработку TCP пакета с установленным флагом FIN, чтобы разрыв соединения не обрабатывался, пока из сокета не считаются все данные, теперь все шуршит ОК smile.gif
3.14
2 subver
это более "жирная" реализация стека, в контексте используемого чипа может быть актуальней ...
2 etoja
в выложенном тоже нет реализации ftp, дык ведь это и не должно быть в реализации стека ...
Spider
Ребята, помогите, не могу собрать это дело под ICC. Имею ICC 7 и там что-то поменялось и она гриво открывает этот проект. В итоге собранная штука не работает. Собирал в WinAVR, но там проблема с переменной SRAM она объявлена с учётов особенности ICC компилятора, а как это в WinAVR не знаю. Помогите плз.
etoja
Для какого процессора собираешь?
Я тоже использую ICCV7 для LPC2106.
Spider
Цитата(etoja @ Jan 24 2007, 20:32) *
Для какого процессора собираешь?
Я тоже использую ICCV7 для LPC2106.

Для АТМега128 с внешней памаятью. В итоге я всё же собрал всё это в WinAVR. И даже заработало. Ну там пока почему-то не работает прерывание по приёму на ЮАРТ, ну это уже не важно.

И всё же. Может кто-то знает первоисточник этих исходников?
etoja
Так ведь в исходниках прямо написано:

ProjectID: 199
Title: AT-Modem, PPP, UDP, ICMP & TCP
Author: lexxy (C Moss)
Registered at AVRfreaks.net May 22, 2004
www.avrfreaks.net
Spider
Цитата(etoja @ Jan 25 2007, 11:23) *
Так ведь в исходниках прямо написано:

ProjectID: 199
Title: AT-Modem, PPP, UDP, ICMP & TCP
Author: lexxy (C Moss)
Registered at AVRfreaks.net May 22, 2004
www.avrfreaks.net

ДА? Где? smile.gif На самом деле не важно. Буду смотреть далее.
Spider
Столкнулся с проблемой. ГСМ модем и приведённый выше пример кода работают как нада. НО! начинаю лить файл и где-то на 1кб передачи всё останавливается. Моя сторона пытается слать ретрайны, но удалённая их так и не получает. При этом в стоящих радом колонках не слышно наводок характерных для ГСМ связи. До этого во время передачи они были. Немного стоим и срываемся с линии по таймауту. Что это? Глюк софта или железа? Или же это особенности ГПРС? Если последнее то как с этим бороться?
subver
Цитата(Alexey Belyaev @ Mar 22 2007, 11:54) *
Что это? Глюк софта или железа? Или же это особенности ГПРС? Если последнее то как с этим бороться?

Да все, что угодно может быть. попробуйте модем подключить к компьютеру и с него переслать файл.
У меня вообще странности возникли с одним из ОпСосов, не хотел модуль с их симкой в инет выходить smile.gif
etoja
Возможно, модем смотрит на линии DTR/DSR, RTS/CTS управления потоком байт RS232, а ваша программа - нет. Полтора килобайта - это размер внутреннего буфера модемов Сименс. Так что очень похоже на рассинхронизацию обмена по RS232 между модемом и вашим процессором.
Spider
Цитата(etoja @ Mar 22 2007, 15:57) *
Возможно, модем смотрит на линии DTR/DSR, RTS/CTS управления потоком байт RS232, а ваша программа - нет. Полтора килобайта - это размер внутреннего буфера модемов Сименс. Так что очень похоже на рассинхронизацию обмена по RS232 между модемом и вашим процессором.

У меня именно сименс. Как раз таки обрабатываются. Но ведь модем отправил всё по месту назначения, стало быть буфера пусты. Сейчас делаю переходник, чтобы вместо GSM модема воткнуть обычный анаологовый модем и с ним повторить фокус.
etoja
Нужно посмотреть осциллографом расположение сигналов модема Tx/Rx относительно CTS/RTS.
Если осциллограмма правильная, то нужно проверить настройки модема по умолчанию.
Если и там всё в порядке, то читать протоколы и разбираться в тексте программы TCP/IP.
Spider
Цитата(etoja @ Mar 22 2007, 19:47) *
Нужно посмотреть осциллографом расположение сигналов модема Tx/Rx относительно CTS/RTS.
Если осциллограмма правильная, то нужно проверить настройки модема по умолчанию.
Если и там всё в порядке, то читать протоколы и разбираться в тексте программы TCP/IP.

Всё правильно. Модем настроен на работу с управляемым потокм, поток управляет корректно.
Проверил программу на переполнения и прочее - всё в норме.
"Виснет" всегда по разному. Бывает даже РРР серрсия не проходит, повисает. А бывает файл уходит. Поставил обычный аналоговый модем - работает :\
etoja
Тогда нужно проверить источник питания для модема Сименс. Он должен обеспечивать ток до двух ампер.
Spider
Цитата(etoja @ Mar 28 2007, 10:50) *
Тогда нужно проверить источник питания для модема Сименс. Он должен обеспечивать ток до двух ампер.

Использую LM2576-ADJ. Вроде как должна обеспечивать до 3А.
etoja
Земляки!
У кого есть исходные "Си" тексты FTP-клиента для выкладывания(upload) файла на сервер через протоколы PPP/TCP/IP ?
Spider
Цитата(etoja @ Jun 27 2007, 15:07) *
Земляки!
У кого есть исходные "Си" тексты FTP-клиента для выкладывания(upload) файла на сервер через протоколы PPP/TCP/IP ?

Вот изобретением этого вилосепеда сейчас и занимаюсь. Геморой ещё тот sad.gif
subver
Цитата(etoja @ Jun 27 2007, 15:07) *
Земляки!
У кого есть исходные "Си" тексты FTP-клиента для выкладывания(upload) файла на сервер через протоколы PPP/TCP/IP ?


Стукнись в аську, авось и помогу )

304754518
Spider
Цитата(subver @ Jul 3 2007, 13:23) *
Стукнись в аську, авось и помогу )

304754518

Да мы уже общались smile.gif Я за основу взял тот код с avrfreaks и теперь его развиваю. Там многое не правильно по части TCP или не логично. Вот уже оптимизировал "скользящее окно" и самого FTP клиента. Сейчас бьюсь со всевозможными ситуациями в роезультате потери пакетов и прочего. GPRS оказывает совсем хреновая вещь. Явно вижу, что с UART данные ушли в модеи, последний что-то энергично протрещал, а на полкчателе не вижу такого пакета, потом серия ретрейнов и вот он пролез. И это ещё цветочки. Если же делать DATA соедеинение (простой дозвон на модем), то и скорости приличные и потерь нет.
etoja
аски нет, зато есть почта terrano2003@mail.ru

Кстати, может действительно лучше использовать lwIP?
Шведский институт компьютерных наук разрабатывал как-никак.
У меня к нему есть исходники PPP и FTP.
KonstantinT
PPP в комплекте с ним идут
subver
Цитата(Alexey Belyaev @ Jul 3 2007, 13:28) *
Явно вижу, что с UART данные ушли в модеи, последний что-то энергично протрещал, а на полкчателе не вижу такого пакета, потом серия ретрейнов и вот он пролез. И это ещё цветочки. Если же делать DATA соедеинение (простой дозвон на модем), то и скорости приличные и потерь нет.


Странно это smile.gif
У меня нормально все работает и FTP тоже. На этих же исходниках делал мониторинг по UDP, тоже все нормально, за исключением лага GPRS (что проявляется не зависимо как на компе так и на устройстве).
etoja
"за исключением лага GPRS"

Что имеется в виду?
etoja
Портировал этот стек для LPC2106, компилятор ICCV7.
К UART1 подключен GPRS модем Siemens.
Из прибора идёт следующий листинг по консольному UART0:

dial
*** AT Stage: Dial Init 1
AT\Q0
at\q0
ok

*** AT Stage: Dial Init 2
AT+CGDCONT=1,"IP","internet"
at+cgdcont=1,"ip","internet"
ok

*** AT Stage: Dial Init 3
ATE0
ate0
ok

*** AT Stage: Dialing
ATD*99*217.16.29.51*PPP*1#
connect

*** AT Stage: PPP

*** PPP Stage: None

*** PPP Stage: Starting

*** AT Stage: Disc 1

*** PPP Stage: Starting

*** PPP Stage: LCP Options

TX: Protocol: PPP_LCP [04x] Code:CREQ [1] ID:0 Len:20
type:1 len:4 MRU: 1500
type:2 len:6 ACCM: 00000000000000000000000000000000
type:32 len:253 .. 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02 э®І} } «T} } }
М?L} } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }
} } } } } } } } } } } } } } } 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 0
2X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X 02X

в результате соединение не устанавливается. Пробовал с МТСом и Мегафоном.
Что не так в PPP?
Usatyj
Цитата(etoja @ Jul 3 2007, 16:32) *
аски нет, зато есть почта terrano2003@mail.ru

Кстати, может действительно лучше использовать lwIP?
Шведский институт компьютерных наук разрабатывал как-никак.
У меня к нему есть исходники PPP и FTP.

Если несложно, поделитесь пожалуйста
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.