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

 
 
> STM32F107 + RTL8201 + lwip-1.4.0, драйвер PHY для lwip
smk
сообщение Sep 23 2013, 15:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Необходимо подружить RTL8201 и lwip. Как это делается и каков драйвер для phy мне нужно будет написать? Каким образом lwip общается с железом? Я так понимаю, что драйвер предполагает работу с МАС-уровнем, я прав? Т.к. область для меня новая, то пригодится любая подсказкаю Прошу помощи и советов. Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Nov 13 2013, 08:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



БЛИН!
прошу прощения, я вас полностью обманул...

вызова этих функций найти нельзя он внутри библиотеки, а сами эти функции должны быть созданы....


у меня к LPC есть еще файлик EMAC_LPC17xx.c - там описаны все патроха управления емаком, инициализируются прерывания и мак контроллер

в нем есть эта функция

CODE

void init_ethernet (void)
{
/* Initialize the EMAC ethernet controller. */
uint32_t regv,tout,id1,id2;
DBG_PHY("");
DBG_PHY("\r\nDBG_PHY: Starting Init Physic");
/* Power Up the EMAC controller. */
LPC_SC->PCONP |= 0x40000000;

/* Configure PHY */
LPC_GPIO4 -> FIOSET |= 1<<29;
LPC_GPIO4 -> FIODIR |= 1<<29;
LPC_GPIO1 -> FIOCLR |= 1<<14;
LPC_GPIO1 -> FIODIR |= 1<<14;
LPC_GPIO1 -> FIOCLR |= 1<<8;
LPC_GPIO1 -> FIODIR |= 1<<8;

/* Power doun/up Reset PHY for strapping */
LPC_GPIO4 -> FIOCLR |= 1<<29;
for(tout=0;tout<1000000;tout++);
LPC_GPIO4 -> FIOSET |= 1<<29;
for(tout=0;tout<1000000;tout++);

/* Enable P1 Ethernet Pins. */
LPC_PINCON->PINSEL2 = 0x50150105;
/* LPC176x devices, no MDIO, MDC remap. */
LPC_PINCON->PINSEL3 = (LPC_PINCON->PINSEL3 & ~0x0000000F) | 0x00000005;

/* Reset all EMAC internal modules. */
LPC_EMAC->MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX |
MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES;
LPC_EMAC->Command = CR_REG_RES | CR_TX_RES | CR_RX_RES | CR_PASS_RUNT_FRM;

/* A short delay after reset. */
for (tout = 100; tout; tout--);

/* Initialize MAC control registers. */
LPC_EMAC->MAC1 = MAC1_PASS_ALL;
LPC_EMAC->MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
LPC_EMAC->MAXF = ETH_MAX_FLEN;
LPC_EMAC->CLRT = CLRT_DEF;
LPC_EMAC->IPGR = IPGR_DEF;

/*PCLK=18MHz, clock select=6, MDC=18/6=3MHz */
LPC_EMAC->MCFG = MCFG_CLK_DIV28 | MCFG_RES_MII;
for (tout = 100000; tout; tout--);
LPC_EMAC->MCFG = MCFG_CLK_DIV28;
for (tout = 100000; tout; tout--);

/* Enable Reduced MII interface. */
LPC_EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM;
//LPC_EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM | CR_PASS_RX_FILT;

/* Reset Reduced MII Logic. */
LPC_EMAC->SUPP = SUPP_RES_RMII;
for (tout = 100; tout; tout--);
LPC_EMAC->SUPP = 0;

//PHY_ADDR = 0;
DBG_PHY("\r\nDBG_PHY: Starting Scan PHY address:\r\n");
//while(1)
for(PHY_ADDR = 0; PHY_ADDR<32;PHY_ADDR++)
{
DBG_PHY(".");
/* Put the PHY in reset mode */
write_PHY (PHY_REG_BMCR, 0x8000);
for (tout = 10000; tout; tout--);

/* Wait for hardware reset to end. */
for (tout = 0; tout < 0x100; tout++)
{
regv = read_PHY (PHY_REG_BMCR);
if (!(regv & 0x8000))
{
/* Reset complete */
break;
}
}
if (tout < 0x100) break;
else ;
//PHY_ADDR++;
//PHY_ADDR&=0x1f;
}
if(PHY_ADDR<31)
{
DBG_PHY("\r\nDBG_PHY: Found at PHY_ADDR = %d",PHY_ADDR);
}
else
{
DBG_PHY_ERR("\r\nDBG_PHY_ERR: PHY_ADDR Error");
return;
}

/* Check if this is a kz8721 PHY. */
id1 = read_PHY (PHY_REG_IDR1);
id2 = read_PHY (PHY_REG_IDR2);
DBG_PHY("\r\nDBG_PHY: ID1-0x%04X, ID2-0x%04X",id1, id2);


if (((id1 << 16) | (id2 & 0xFFF0)) != 0x221610)
{
DBG_PHY_ERR("\r\nDDBG_PHY_ERR: Not a KS8721 PHY - ID1-0x%04X, ID2-0x%04X",id1, id2);
return;
}
else
{
DBG_PHY("\r\nDBG_PHY: KS8721 PHY - Sucñess");
}

/* Configure the PHY device */
#if defined (_10MBIT_)
/* Connect at 10MBit */
write_PHY (PHY_REG_BMCR, PHY_FULLD_10M);
#elif defined (_100MBIT_)
/* Connect at 100MBit */
write_PHY (PHY_REG_BMCR, PHY_FULLD_100M);
#else
DBG_PHY("\r\nDBG_PHY: Starting AutoNegotiation Process\r\n");
/* Use autonegotiation about the link speed. */
write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG);
/* Wait to complete Auto_Negotiation. */
for (tout = 0; tout < 0x30000; tout++)
{
regv = read_PHY (PHY_REG_BMSR);
if( !(tout%3000) ) DBG_PHY(".");
if (regv & 0x0020)
{
DBG_PHY("\r\nDBG_PHY: AutoNegotiation Sucñess tout = %d Counts",tout);
/* Autonegotiation Complete. */
break;
}
}
#endif
if (tout >= 0x30000)
{
DBG_PHY_ERR("\r\nDBG_PHY_ERR: AutoNegotiation failed.");
DBG_PHY_ERR("\r\nDBG_PHY:Possibly Cable Unplugget");
DBG_PHY_ERR("\r\nDBG_PHY:Manual Assign: Full duplex - 100 Mbit Mode");
write_PHY (PHY_REG_BMCR, PHY_FULLD_100M);
//return; // auto_neg failed
}

/* Check the link status. */
for (tout = 0; tout < 0x10000; tout++)
{
regv = read_PHY (PHY_REG_BMSR);
if (regv & 0x0004)
{
/* Link is on. */
DBG_PHY("\r\nDBG_PHY: Link is ON");
break;
}
}

if (tout >= 0x10000)
{
DBG_PHY("\r\nDBG_PHY: Link is OFF");
}

regv = ((read_PHY (0x1f))>>2)&0x7;

/* Configure Full/Half Duplex mode. */

if ((regv==0x0005)||(regv==0x0006))
{
/* Full duplex is enabled. */
LPC_EMAC->MAC2 |= MAC2_FULL_DUP;
LPC_EMAC->Command |= CR_FULL_DUP;
LPC_EMAC->IPGT = IPGT_FULL_DUP;
DBG_PHY("\r\nDBG_PHY: Full duplex is enabled.");
}

if ((regv==0x0001)||(regv==0x0002))
{
/* Half duplex mode. */
LPC_EMAC->IPGT = IPGT_HALF_DUP;
DBG_PHY("\r\nDBG_PHY: Half duplex is enabled.");
}

if ((regv==0x0005)||(regv==0x0001))
{
/* 10MBit mode. */
LPC_EMAC->SUPP = 0;
DBG_PHY("\r\nDBG_PHY: 10MBit mode.");
}
if ((regv==0x0006)||(regv==0x0002))
{
/* 100MBit mode. */
LPC_EMAC->SUPP = SUPP_SPEED;
DBG_PHY("\r\nDBG_PHY: 100MBit mode.");
}

#ifdef DEBUG
regv = read_PHY (PHY_REG_BMCR);
DBG_PHY("\r\nDBG_PHY: Register 0h - Basic Control = 0x%X",regv);
regv = read_PHY (PHY_REG_BMSR);
DBG_PHY("\r\nDBG_PHY: Register 1h - Basic Status = 0x%X",regv);

regv = read_PHY (PHY_REG_ANAR);
DBG_PHY("\r\nDBG_PHY: Register 4h - Auto-Negotiation Advertisement = 0x%X",regv);
regv = read_PHY (PHY_REG_ANLPAR);
DBG_PHY("\r\nDBG_PHY: Register 5h - Auto-Negotiation Link Partner Ability = 0x%X",regv);
regv = read_PHY (PHY_REG_ANER);
DBG_PHY("\r\nDBG_PHY: Register 6h - Auto-Negotiation Expansion = 0x%X",regv);
regv = read_PHY (PHY_REG_ANNPTR);
DBG_PHY("\r\nDBG_PHY: Register 7h - Auto-Negotiation Next Page = 0x%X",regv);
regv = read_PHY (PHY_REG_LPNPA);
DBG_PHY("\r\nDBG_PHY: Register 8h - Link Partner Next Page Ability = 0x%X",regv);
#endif

{ /* Using Device Serial Number For Define Last 3 MAC Address */
uint32_t p0,p1,p2,p3,s;
DBG_PHY("\r\nDBG_PHY: Reading Device Serial Number:");
u32IAP_ReadSerialNumber(&p0, &p1, &p2, &p3);
//óïàêóåì ñåðèéíûé íîìåð â 32 áèòà
s = p0 + p1 + p2 + p3;
//32 áèòà óïàêóåì â 24, ÷òîáû èñïîëüçîâàòü äëÿ ìàê àäðåñà
s = s&0xFF + s>>8;
DBG_PHY("\r\nDBG_PHY: Chip Serial Number = 0x%08X 0x%08X 0x%08X 0x%08X",p0,p1,p2,p3);
DBG_PHY("\r\nDBG_PHY: Chip Summ Serial = 0x%08X ",s);
DBG_PHY("\r\nDBG_PHY: Device Hardware Address:" );
own_hw_adr[3] = ( (s>>16) & 0xFF);
own_hw_adr[4] = ( (s>>8 ) & 0xFF);
own_hw_adr[5] = ( (s ) & 0xFF);
DBG_PHY("\r\nDBG_PHY: %02X %02X %02X %02X %02X %02X", own_hw_adr[0], own_hw_adr[1], own_hw_adr[2],
own_hw_adr[3], own_hw_adr[4], own_hw_adr[5] );
}
/* Set the Ethernet MAC Address registers */
LPC_EMAC->SA0 = ((uint32_t)own_hw_adr[5] << 8) | (uint32_t)own_hw_adr[4];
LPC_EMAC->SA1 = ((uint32_t)own_hw_adr[3] << 8) | (uint32_t)own_hw_adr[2];
LPC_EMAC->SA2 = ((uint32_t)own_hw_adr[1] << 8) | (uint32_t)own_hw_adr[0];

/* Initialize Tx and Rx DMA Descriptors */
rx_descr_init ();
tx_descr_init ();

/* Receive Broadcast, Multicast and Perfect Match Packets */
LPC_EMAC->RxFilterCtrl = RFC_MCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN;
/* Receive Broadcast and Perfect Match Packets */
//LPC_EMAC->RxFilterCtrl = RFC_BCAST_EN | RFC_PERFECT_EN;

/* Enable EMAC interrupts. */
LPC_EMAC->IntEnable = INT_RX_DONE | INT_TX_DONE ;

/* Reset all interrupts */
LPC_EMAC->IntClear = 0xFFFF;

/* Enable receive and transmit mode of MAC Ethernet core */
LPC_EMAC->Command |= (CR_RX_EN | CR_TX_EN);
LPC_EMAC->MAC1 |= MAC1_REC_EN;

DBG_PHY("\r\nDBG_PHY: PHY Config Done\r\n" );
return;
}


посылка фрейма там же

CODE
void send_frame (OS_FRAME *frame)
{
/* Send frame to EMAC ethernet controller */
uint32_t idx,len;
uint32_t *sp,*dp;

idx = LPC_EMAC->TxProduceIndex;
sp = (uint32_t *)&frame->data[0];
dp = (uint32_t *)Tx_Desc[idx].Packet;

/* Copy frame data to EMAC packet buffers. */
for (len = (frame->length + 3) >> 2; len; len--) {
*dp++ = *sp++;
}
Tx_Desc[idx].Ctrl = (frame->length-1) | (TCTRL_INT | TCTRL_LAST);

/* Start frame transmission. */
if (++idx == NUM_TX_FRAG) idx = 0;
LPC_EMAC->TxProduceIndex = idx;
}


это я чего то реально затупил. Это же привязанные к конкретному железу функции, они не могли быть в библиотеке....

у вас должен быть библиотека - драйвер от вашего мак контролера, найдите в ней подходящие функции и организуйте вызов!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- smk   STM32F107 + RTL8201 + lwip-1.4.0   Sep 23 2013, 15:36
- - Golikov A.   А мак контроллер на чем? Реалтек это физика, она д...   Sep 23 2013, 18:32
|- - smk   Цитата(Golikov A. @ Sep 23 2013, 21:32) А...   Sep 23 2013, 18:39
- - =F8=   Цитата(smk @ Sep 23 2013, 18:36) Необходи...   Sep 23 2013, 20:53
- - smk   Как я понял связь с физикой и ее инициализация осу...   Sep 24 2013, 07:46
- - сарматъ   кварец стабильнее чем встроенный генератор   Sep 24 2013, 10:04
|- - smk   Цитата(сарматъ @ Sep 24 2013, 13:04) квар...   Sep 24 2013, 11:29
- - Golikov A.   да. физика работает на 50 МГц вроде как, делает и...   Sep 24 2013, 12:31
|- - smk   Цитата(Golikov A. @ Sep 24 2013, 15:31) д...   Sep 24 2013, 12:39
- - сарматъ   25Мгц нормальная частота для кварца что смущает то...   Sep 24 2013, 13:08
- - smk   Я рассуждал так. Если поставить кварц 8 МГц, то мо...   Sep 24 2013, 13:24
|- - bzx   Цитата(smk @ Sep 24 2013, 17:24) Наскольк...   Sep 30 2013, 19:07
|- - smk   Цитата(bzx @ Sep 30 2013, 22:07) Ошибаете...   Oct 1 2013, 08:26
- - сарматъ   понятно, можно поступить по разному -настроить на...   Sep 24 2013, 14:20
- - smk   С отладкой разобрался. У меня файлик *.sfr подключ...   Oct 5 2013, 05:12
- - Golikov A.   почему если физика стандартно работает на 25, 50 и...   Oct 5 2013, 11:07
|- - smk   Цитата(Golikov A. @ Oct 5 2013, 14:07) по...   Oct 5 2013, 12:47
- - Golikov A.   локальные переменные в дебаге кейла отображаются с...   Oct 5 2013, 13:15
- - smk   Вынес в глобальные. Теперь явно лучше. Теперь бы ...   Oct 5 2013, 13:21
- - Golikov A.   ну может отладка в порт? В регистрах там есть гд...   Oct 5 2013, 17:54
- - smk   А где примерно искать настройку обновления? Посмот...   Oct 7 2013, 06:14
- - Golikov A.   я так понимаю это больше к настройкам кейла чем к ...   Oct 7 2013, 07:06
- - vlad_new   Все там есть. В режиме дебагера появляется куча вс...   Oct 7 2013, 10:42
|- - smk   Цитата(vlad_new @ Oct 7 2013, 13:42) Все ...   Oct 7 2013, 16:49
- - smk   Чтобы проверить железо хочу залить в свою платку п...   Oct 13 2013, 12:44
- - smk   Наконец-то продвинулся дальше. Закончил с железом....   Oct 17 2013, 16:27
- - smk   У меня теперь другая проблема появилась. Опишу вкр...   Oct 17 2013, 17:56
|- - antis   Цитата(smk @ Oct 17 2013, 21:56) У меня т...   Oct 18 2013, 06:23
- - Golikov A.   ну надо настроить свич, у вас он хаб, свич или мар...   Oct 17 2013, 19:08
- - smk   3COM OfficeConnect Switch 8 на нем написано. 3С16...   Oct 18 2013, 04:42
|- - Golikov A.   Цитата(smk @ Oct 18 2013, 08:42) 3COM Off...   Oct 18 2013, 06:36
|- - smk   Цитата(Golikov A. @ Oct 18 2013, 09:36) т...   Oct 18 2013, 06:41
|- - antis   Цитата(smk @ Oct 18 2013, 10:41) Я уже ду...   Oct 18 2013, 06:59
- - smk   Ну а если я установлю 254, то при правильной работ...   Oct 18 2013, 06:31
- - smk   Проверю. Если после нескольких отключений / подклю...   Oct 18 2013, 07:44
- - сарматъ   подскажите будьте любезны где можно найти правильн...   Oct 22 2013, 06:28
|- - smk   Цитата(сарматъ @ Oct 22 2013, 09:28) подс...   Oct 22 2013, 16:27
- - vlad_new   В Keil 5.   Oct 22 2013, 11:23
- - сарматъ   спасибо, можете поделиться примерами из кейл5?   Oct 22 2013, 11:25
- - сарматъ   пока точно сказать не могу но есть предположение ч...   Oct 22 2013, 16:36
- - vlad_new   Цитата(сарматъ @ Oct 22 2013, 15:25) спас...   Oct 23 2013, 15:22
|- - smk   Цитата(vlad_new @ Oct 23 2013, 18:22) Там...   Oct 23 2013, 17:07
|- - vlad_new   Цитата(smk @ Oct 23 2013, 21:07) Я так по...   Oct 23 2013, 18:16
|- - сарматъ   Цитата(vlad_new @ Oct 23 2013, 22:16) Это...   Nov 6 2013, 10:15
- - сарматъ   спасибо за наводку   Oct 23 2013, 20:05
- - smk   Эксперимент показал, что айпи при перезагрузках ст...   Oct 27 2013, 12:01
- - Golikov A.   сетевые настройки, забиваете фиксированный IP тот ...   Oct 27 2013, 12:14
- - smk   Тогда на первом этапе создам новое сетевое подключ...   Oct 28 2013, 08:02
- - smk   Только собрался создать новое соединение. Вдруг вы...   Nov 2 2013, 05:59
- - vlad_new   Все что вам может понадобится - открыто. На сайте ...   Nov 6 2013, 21:57
- - сарматъ   хм... возможно я чего то не нашел, но то что мне н...   Nov 7 2013, 06:56
- - smk   Прошу подсказать как мне настроить вторую сетевую ...   Nov 8 2013, 12:51
- - smk   Железо проверил, все работает. Наконец-то можно пр...   Nov 9 2013, 12:26
- - Golikov A.   самый первый тест это попихать данные в МАК контро...   Nov 10 2013, 21:37
- - smk   Пытался скачать стек от кейла но так и не увидел г...   Nov 11 2013, 07:28
|- - Golikov A.   Цитата(smk @ Nov 11 2013, 11:28) Пытался ...   Nov 11 2013, 12:50
- - сарматъ   готовые стеки не использовал, начинал с приема арп...   Nov 11 2013, 11:28
- - smk   А стек кейловский где скачать и где пишут про ...   Nov 11 2013, 13:05
- - vlad_new   Не надо ничего качать. Библиотека уже у вас лежит ...   Nov 11 2013, 13:53
- - smk   Добавил библиотеку и файл Net_Config.c; подключил ...   Nov 11 2013, 17:08
- - Golikov A.   для кеил стэка еще системный таймер надо запустить...   Nov 11 2013, 19:41
|- - smk   Цитата(Golikov A. @ Nov 11 2013, 21:41) в...   Nov 12 2013, 08:01
- - Golikov A.   ну вы их не увидите они в библиотеке кейла вызываю...   Nov 12 2013, 10:59
|- - smk   Цитата(Golikov A. @ Nov 12 2013, 12:59) н...   Nov 12 2013, 11:36
- - Golikov A.   нет конечно... то что в хедере есть прототипы функ...   Nov 12 2013, 18:53
|- - smk   Цитата(Golikov A. @ Nov 12 2013, 20:53) н...   Nov 12 2013, 19:03
|- - ksv198   Цитата(smk @ Nov 12 2013, 23:03) Да подкл...   Nov 13 2013, 10:59
|- - DmitryM   Цитата(ksv198 @ Nov 13 2013, 13:59) менят...   Nov 13 2013, 14:42
|- - ksv198   Цитата(DmitryM @ Nov 13 2013, 18:42) от 0...   Nov 13 2013, 15:36
- - smk   ksv198, благодарю! как глоток воздуха! Сде...   Nov 13 2013, 12:29
- - smk   Что удалось сделать. П.1-4 сделал полностью. Иници...   Nov 13 2013, 18:56
- - Golikov A.   #include "Net_Config.h" ?   Nov 13 2013, 20:05
|- - smk   Цитата(Golikov A. @ Nov 13 2013, 22:05) #...   Nov 13 2013, 20:27
- - Golikov A.   ну тогда остается только свои функции - заглушки н...   Nov 13 2013, 21:13
|- - smk   Цитата(Golikov A. @ Nov 13 2013, 23:13) н...   Nov 14 2013, 08:32
- - Pasha_a13   Добрый день! Прошу совета. Вкратце опишу сут...   Nov 23 2013, 12:40
|- - psL   Цитата(Pasha_a13 @ Nov 23 2013, 16:40) ка...   Nov 24 2013, 18:48
- - smk   Ну вобщем-то с текущими проблемами разобрался. Хот...   Nov 24 2013, 13:49
- - smk   С физикой все более-менее понятно. Хотелось бы уже...   Nov 25 2013, 17:47
- - Golikov A.   init_TcpNet (); а потом в цикле вызывайте main_Tc...   Nov 25 2013, 19:29
|- - smk   Цитата(Golikov A. @ Nov 25 2013, 21:29) i...   Nov 26 2013, 17:46
|- - Golikov A.   Цитата(smk @ Nov 26 2013, 21:46) Может им...   Nov 26 2013, 20:26
- - smk   Разобрался с проблемой. Скомпилировалось. Хочу спр...   Nov 27 2013, 07:55
- - Golikov A.   да, без тика жизни нет... в ТСР стэке есть время ...   Nov 27 2013, 12:17
|- - smk   Цитата(Golikov A. @ Nov 27 2013, 14:17) д...   Nov 27 2013, 14:33
- - Golikov A.   у меня как то так функция которую вызываю в цикле ...   Nov 27 2013, 16:07
- - smk   Наконец-то вернулся к своей теме. Результаты такие...   Dec 4 2013, 16:34
|- - bzx   1. Ваш Phy чип определяется? Цитата/* Check if thi...   Dec 4 2013, 17:30
|- - smk   Цитата(bzx @ Dec 4 2013, 19:30) 1. Ваш Ph...   Dec 4 2013, 17:51
- - Golikov A.   init_ethernet() - вроде вызывать не надо, оно само...   Dec 4 2013, 17:38
- - Golikov A.   дальше уже дело техники, все очень просто! К...   Dec 4 2013, 20:27
- - smk   Вот такое сообщение об ошибке получилось: Кодmain_...   Dec 5 2013, 07:58
- - Golikov A.   у меня такое написано Код#define TCP_TYPE_SERVER ...   Dec 5 2013, 18:41
- - smk   Спасибо, что уделяетемне время! Версия кейла ...   Dec 5 2013, 19:54
- - Golikov A.   нет такого флага в вашем кейле и вашей библиотеке,...   Dec 5 2013, 20:45
|- - smk   Цитата(Golikov A. @ Dec 5 2013, 22:45) н...   Dec 22 2013, 10:24
- - smk   С помощью терминальной программы: http://www.hw-gr...   Dec 22 2013, 12:01
- - DmitryM   Цитата(smk @ Dec 22 2013, 15:01) Есть ли ...   Dec 22 2013, 12:21
- - smk   Цитата(DmitryM @ Dec 22 2013, 14:21) PuTT...   Dec 22 2013, 12:40
2 страниц V   1 2 >


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

 


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


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