реклама на сайте
подробности

 
 
> STM32F217 & LwIP 1.3.2, Неравномерные отваливающиеся пинги
ReRayne
сообщение Mar 2 2012, 14:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 12-10-11
Из: Москва
Пользователь №: 67 699



Имеем плату starterkit STM32F217.
Ethernet PHY: KSZ8721BL.
С сайта STM взят вот этот пример с реализацией LwIp 1.3.2.
Запускаем, начинаем пинговать плату.
Все окей, она радостно нам отвечает с пингами <=1мс.
Потом в один прекрасный момент, рандомно, пинги начинают съезжать 400-2000мс.
В конце концов через несколько часов пинга плата перестает отвечать вообще.
При этом весьма забавен тот факт, если с другой машины начинать флудить пингом, то пинги станвятся нормальными 1-40мс.
Отключаешь флуд, снова съезжают пинги.

Собственно, меняли только настройки драйвера. Изменения отмечены жирным.
stm32f2x7_eth_bsp.c
CODE

#define CHECKSUM_BY_HARDWARE 1

/*...................*/

void ETH_BSP_Config(void)
{
/* Configure the GPIO ports for ethernet pins */
ETH_GPIO_Config();

/* Config NVIC for Ethernet */
ETH_NVIC_Config();

/* Configure the Ethernet MAC/DMA */
ETH_MACDMA_Config();

/* if (EthInitStatus == 0)
{
LCD_SetTextColor(Red);
LCD_DisplayStringLine(Line5, (uint8_t*)" Ethernet Init ");
LCD_DisplayStringLine(Line6, (uint8_t*)" failed ");
while(1);
}*/

/* Configure the PHY to generate an interrupt on change of link status */
// Eth_Link_PHYITConfig(DP83848_PHY_ADDRESS);

/* Configure the EXTI for Ethernet link status. */
// Eth_Link_EXTIConfig();

}

void ETH_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

/* Enable GPIOs clocks */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |
RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOI |
RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOH |
RCC_AHB1Periph_GPIOF, ENABLE);

/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

/* Configure MCO (PA8) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);


/* MII/RMII Media interface selection --------------------------------------*/
#ifdef MII_MODE /* Mode MII with STM322xG-EVAL */
#ifdef PHY_CLOCK_MCO

/* Output HSE clock (25MHz) on MCO pin (PA8) to clock the PHY */
RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_1);
#endif /* PHY_CLOCK_MCO */

SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_MII);
#elif defined RMII_MODE /* Mode RMII with STM322xG-EVAL *///!

/* Output PLL clock divided by 2 (50MHz) on MCO pin (PA8) to clock the PHY */
RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_2);

SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_RMII);
SYSCFG_CompensationCellCmd(ENABLE);
#endif

/* Configure PA1, PA2 and PA7 */
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_ETH);

GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_ETH);

GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH);

/* Configure PC1, PC4 and PC5 */
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_ETH);

GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_ETH);

GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH);

/* Configure PG14 and PG13 */
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOG, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOG, GPIO_PinSource13, GPIO_AF_ETH);
GPIO_PinAFConfig(GPIOG, GPIO_PinSource14, GPIO_AF_ETH);

/* Configure PB11 */
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_ETH);


}


system_stm32f2xx.c
Код
uint32_t SystemCoreClock = 100000000;


Сообщение отредактировал ReRayne - Mar 2 2012, 14:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Мусатов Констант...
сообщение Feb 24 2015, 00:24
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Прошло много времени. Не удалось ли решить проблему?
У меня на похожем проекте на STM32F207VET+RTL8201 c FreeRTOS 8.2 + LwIP 1.4.0 происходит падучесть или через HardFault или через переполнение стека в контроле при переключении задач (vTaskSwitchContext) у несуществующей задачи. При этом стеки существующих задач в порядке и имеют большой запас по использованной длине. А указатель смотрит на то место, где скоро должна появиться новая задача, но эта область еще не очищена. Процедуру создания задачи проверил, там критическая область корректно определена. Происходит этот бардак при приходе IP пакета. Причем пинг не приводит к падению. Вероятность падения сильно растет с повышением скорости обмена. Т.е. если на ftp сервер лезть руками через утилиту ftp, то живется заметно лучше, чем через ftp клиента в far или проводник.

Сообщение отредактировал Мусатов Константин - Feb 24 2015, 00:24
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ReRayne   STM32F217 & LwIP 1.3.2   Mar 2 2012, 14:22
- - unkier   не все примеры от ST одинаково полезны.   Mar 5 2012, 07:52
- - Lexy_one   К сожелению с STM32F217 не работал... Но Имел дело...   Mar 5 2012, 08:14
- - ReRayne   unkier, Lexy_one, да, глюки в самом драйвере к пор...   Mar 5 2012, 11:07
|- - scifi   Цитата(ReRayne @ Mar 5 2012, 15:07) Винов...   Mar 5 2012, 11:24
- - =F8=   Уже час пингую STM32F207+RTL8201 с LwIP. Пример то...   Mar 5 2012, 12:54
- - ReRayne   А ни у кого не пробегал стабильный драйвер для LwI...   Mar 7 2012, 08:05
|- - scifi   Цитата(ReRayne @ Mar 7 2012, 12:05) А ни ...   Mar 7 2012, 08:22
|- - =F8=   Цитата(ReRayne @ Mar 7 2012, 11:05) По по...   Mar 7 2012, 15:00
- - ReRayne   scifi, спасибо!) =F8=, мне такое не подходит, ...   Mar 9 2012, 13:09
|- - IXUS666   Здесь решили проблемму переполнения буффера при от...   Sep 22 2012, 13:29
- - shreck   Добрый день. Чем закончилась эта история? Удалось...   Aug 16 2012, 02:23
|- - unkier   Цитата(shreck @ Aug 16 2012, 08:23) Добры...   Aug 20 2012, 10:53
- - athlon64   У меня очередная проблема с этой демкой. Утекает п...   Sep 26 2012, 06:45


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016