Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil MB1700: RTX+HTTP+FTP+Telnet+SNMP. проблема с аплоадом по FTP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
politen
Доброго времени

Предварительно попробовал все тестовые проекты, которые идут вместе с поставкой RL, но которые поддерживают каждую функцию по отдельности.
Файловая система размещена на SD.
Все работает шикарно (для моей задачи), в т.ч. загрузка файлов по FTP (на SD)

На основе проекта Http_demo путем включения в Net_Config.c дополнительных сервисов (FTP, Telnet, SNMP) создался собственно свой проект. Теперь все так же красиво работает, за исключением загрузки файла по FTP - при загрузке любого файла, на SD создается файл с нулевой длиной. Та же история и с заменой FTP на TFTP. Прогресс бар клиента показывает загрузку блоков файла и по окончании рапортует об успешном завершении. Но на SD файл нулевой длины.

Пробовал ставить флаги проверки ошибок при операциях записи и закрытия файлов по фтп - все происходит без ошибок.

Создание/удаление папок, удаление файлов по фтп работает. Загрузка нет.

Количество сокетов достаточное.

Буду признателен, если подтолкнете в нужном направлении как запустить данную связку сервисов и что бы работало как нужно.
Allregia
Посмотрите пожалуйста: http://electronix.ru/forum/index.php?showt...mp;#entry804551
Вы те-хе исходники демок использовали? И небыло описанных там проблем?
politen
Цитата(Allregia @ Sep 1 2010, 19:53) *
Посмотрите пожалуйста: http://electronix.ru/forum/index.php?showt...mp;#entry804551
Вы те-хе исходники демок использовали? И небыло описанных там проблем?

Ошибки были только с путями, т.к. при установке указал путь отличный от пути по-умолчанию. Это касается путей к FCARM и к бибилиотекам (в демо проектах за базу берется диск С:\...) Других ошибок не попадалось.
По ссылке обсуждается другой проц. у меня LPC1768. По последнему посту ничего сказать не могу, т.к. все работает.
Еще раз повторю, все демо проекты по отдельности работают. Даже перелопатил демо http_demo под свою задачу. Тоже все работает. Начал добавлять к HTTP другие сервисы и столкнулся с subj. Единственное отличие текущего проекта от демок FTP и TFTP, что хочу, что бы все работало под RTX (идея с мноозадачностью очень понравилась после нескольких экспериментов), а в демках к FTP и TFTP нет опции RTX. Но вряд ли в этом причина, т.к. насколько я понял RTX ядро запускается первым, и оно уже в зависимости от Net_Config.c цепляет и разруливает все остальные сетевые сервисы.
Allregia
Цитата(politen @ Sep 2 2010, 10:37) *
По ссылке обсуждается другой проц. у меня LPC1768. По последнему посту ничего сказать не могу, т.к. все работает.
Еще раз повторю, все демо проекты по отдельности работают. Даже перелопатил демо http_demo под свою задачу. Тоже все работает.


У меня тоже 1768, но как я уже там написал - проблема стала понятна:
Цитата
я понял в чем дело - файл в самом Кейле LPC17xx.h и такой же файл в CMSIS - они разные, в последнем - без префикса.
politen
Цитата(Allregia @ Sep 2 2010, 17:46) *
У меня тоже 1768, но как я уже там написал - проблема стала понятна:

еще раз перепроверил что на что ссылается и на какие версии. различий на ссылки/инклуде не нашел. еще раз пересобрал проект. та же песня.
Allregia, LPC17xx.h цепляется из всех .с фалов из одного и того же места, что внутри проектов, что и из проекта FTP_demo. Ткни носом, что именно ты имел ввиду под "файл в самом Кейле LPC17xx.h и такой жу файл в CMSIS - разные, в последнем - без префикса".
Allregia
В CMSIS LPC17xx.h:
Цитата
/******************************************************************************
* @file: LPC17xx.h
* @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for
* NXP LPC17xx Device Series
* @version: V1.1
* @date: 14th May 2009
*----------------------------------------------------------------------------
......
/******************************************************************************/
/* Peripheral declaration */
/******************************************************************************/
#define SC (( SC_TypeDef *) SC_BASE)
#define GPIO0 (( GPIO_TypeDef *) GPIO0_BASE)
#define GPIO1 (( GPIO_TypeDef *) GPIO1_BASE)
#define GPIO2 (( GPIO_TypeDef *) GPIO2_BASE)
#define GPIO3 (( GPIO_TypeDef *) GPIO3_BASE)
#define GPIO4 (( GPIO_TypeDef *) GPIO4_BASE)
#define WDT (( WDT_TypeDef *) WDT_BASE)


В Keil 412 такой же файл:
Цитата
/******************************************************************************
* @file: LPC17xx.h
* @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for
* NXP LPC17xx Device Series
* @version: V1.09
* @date: 17. March 2010
*----------------------------------------------------------------------------
......
/******************************************************************************/
/* Peripheral declaration */
/******************************************************************************/
#define LPC_SC ((LPC_SC_TypeDef *) LPC_SC_BASE )
#define LPC_GPIO0 ((LPC_GPIO_TypeDef *) LPC_GPIO0_BASE )
#define LPC_GPIO1 ((LPC_GPIO_TypeDef *) LPC_GPIO1_BASE )
#define LPC_GPIO2 ((LPC_GPIO_TypeDef *) LPC_GPIO2_BASE )
#define LPC_GPIO3 ((LPC_GPIO_TypeDef *) LPC_GPIO3_BASE )
#define LPC_GPIO4 ((LPC_GPIO_TypeDef *) LPC_GPIO4_BASE )
#define LPC_WDT ((LPC_WDT_TypeDef *) LPC_WDT_BASE )
#define LPC_TIM0 ((LPC_TIM_TypeDef *) LPC_TIM0_BASE )
#define LPC_TIM1 ((LPC_TIM_TypeDef *) LPC_TIM1_BASE )
#define LPC_TIM2 ((LPC_TIM_TypeDef *) LPC_TIM2_BASE )


А вот файл adc.c из MCB1700_Http_Demo\
Цитата
/*----------------------------------------------------------------------------
* Name: ADC.c
* Purpose: MCB1700 low level ADC functions
* Version: V1.00
* Note(s):
*----------------------------------------------------------------------------
* This file is part of the uVision/ARM development tools.
* This software may only be used under the terms of a valid, current,
* end user licence from KEIL for a compatible version of KEIL software
* development tools. Nothing else gives you the right to use this software.
*
* This software is supplied "AS IS" without warranties of any kind.
*
* Copyright © 2009 Keil - An ARM Company. All rights reserved.
*----------------------------------------------------------------------------
* History:
* V1.00 Initial Version
*----------------------------------------------------------------------------*/

#include <LPC17xx.H> /* LPC17xx definitions */
#include "ADC.h"

/*----------------------------------------------------------------------------
initialize ADC Pins
*----------------------------------------------------------------------------*/
void ADC_init (void) {

PINCON->PINSEL1 &= ~(3<<18); /* P0.25 is GPIO */
PINCON->PINSEL1 |= (1<<18); /* P0.25 is AD0.2 */

SC->PCONP |= (1<<12); /* Enable power to ADC block */

ADC->ADCR = (1<< 2) | /* select AD0.2 pin */


из чего видно, что ему нужна старая версия инклуда.

P.S. Я честно говоря, на АРМы только перешел, и с Кейлм не знаком. Был бы рад, если бы кто обьяснил самые элементарные вещи - типа как сконфгуриовать рабочую среду, чтобы заниматься программированием а не борьбой с софтом.
Вот что я делал:
1) запустил mdk412.exe - установил Keil.
2) запустил rlarm412.exe - установил РТОС.

далее - у меня есть файл cmsis_v1p20.zip, я его разархивировал, что дальше?

файл с примерами: mcb1700_http_demo.zip разархзиваровал.

У меня на работе и спросить не у кого - единственный человек, который работал в Кейл с АРМами - уволился и его проекты перекинули на остальных, а мы все время на msp430 и других работали.
politen
в FTP_demo (загрузка работает) цепляется файл LPC17xx.h
Код
/******************************************************************************
* @file:    LPC17xx.h
* @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Header File for
*           NXP LPC17xx Device Series
* @version: V1.09
* @date:    17. March 2010


скопировано из дерева исходников

в моем проекте то же самое отображает


в догонку...

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

У себя же я заметил такой глюк при компиляции http_demo (пробовал на 4.05 кажется) - компилятор ни в какую не хотел цеплять файл ad.cgi. Только после переименования в ad2.cgi компиляция прошла нормально.

А по поводу сабжа уже начинают гложить сомнения, а не глюк ли библиотеки? Хотя буду рад, если окажется, что это у меня глюк и мне укажут в чем именно.
politen
продолжение: RTX ни причем. Компиляция без RTX_KERNEL - результат тот же. при загрузке по фтп - файлы нулевой длины.
может кто подскажет, как воспользоваться отладчиком для TCP/IP операций?
skripach
Цитата
как воспользоваться отладчиком для TCP/IP операций?

Терминал.
politen
Цитата(skripach @ Sep 6 2010, 10:57) *
Терминал.


подключил Net_Debug
установил все только на еррор
при удалении файлов, смене папок, терминал молчит
при попытке что либо загрузить по фтп в терминал сваливается листинг записываемого файла, потом пауза, потом выдает
Код
TCP ERR: Socket 5 Retries used up, connection reset

попробовал в netconf поставить число попыток 8. все равно сообщение о 5-ти использованных попытках

в продолжение...

лог при включенном Application Full debug.
файл 12345.txt - текущий проект
файл 123456.txt - FTP_demo, в котором загрузка работает

запись производится на SD карту в папку "1" файл 1.txt в котором только 11111

что сразу бросается в глаза, то что в текущем проекте после FTP команды STOR... выводится листинг записываемого файла (в "эталонном" демо проекте листинг не выводится, т.е. как бы ошибки и нет), что свидетельствует о моментальном возникновении ошибки. Если файл выбрать большой длины, то листниг файла сразу появляется в терминалке, т.е. похоже ошибка возникает в момент начала передачи файла.....

попробую теперь сравнить листинг фулл дебаг и для TCP



продолжаем

во вложении два файла логов с full debug для TCP.
ошибка возникает при "начале" использования второго сокета для FTP сессии
Код
TCP:  Mapped to Active Socket 6
TCP:  Socket 6, State CONNECT...

11111

TCP: Socket 6, Sending Control


в демо проекте, в этом месте "чисто"
Код
TCP:  Mapped to Active Socket 2
TCP:  Socket 2, State CONNECT...


TCP: Socket 2, Sending Control


по предыдущему посту про использованные ретраи. После Socket идет его номер, а не количество использованных попыток.
в проекте количество сокетов достаточно.


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