|
Стек TCP IP для LPC2478 |
|
|
|
 |
Ответов
|
Jun 29 2011, 16:15
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 27-05-11
Пользователь №: 65 303

|
Цитата(MALLOY2 @ Jun 29 2011, 20:10)  Для ARM однозначно LwIP, прекрастно совместим c FREERTOS. На STM32F107 50 мегабит TCP/IP 100% загрузка проца, STR912 тоже порядка 40-50, SAM9XE 90 мегабит, переписал расчет CRC на асм, свой драйвер на МАС заточенный сугубо на LwIP. Еще свой манагер памяти для ОС и стека. Нареканий на стек нету, хотя я не пользуюсь сокетами там вроде есть какие то грабли, но как я сказал я ими не пользуюсь. То что надо! Будем разбираться спасибо! Только вот не сочтите за наглость ног если можно подскажите где взять живой пример под LPC2478 и Keil! Заранее благодарен!
Сообщение отредактировал glonium - Jun 29 2011, 16:18
|
|
|
|
|
Jun 30 2011, 00:40
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (glonium @ Jun 30 2011, 01:15)  Только вот не сочтите за наглость ног если можно подскажите где взять живой пример под LPC2478 и Keil! Прямо в примерах Кейла и можно взять (каталоги examples и Boards). Только на Вашей плате эти примеры могут сразу не заработать, т.к. примеры могут быть под разные микросхемы PHY. Но! Настоятельно требую посмотреть вот эту тему.
--------------------
Выбор.
|
|
|
|
|
Jul 3 2011, 14:39
|
Частый гость
 
Группа: Участник
Сообщений: 77
Регистрация: 27-05-11
Пользователь №: 65 303

|
Цитата(haker_fox @ Jun 30 2011, 04:40)  Прямо в примерах Кейла и можно взять (каталоги examples и Boards). Только на Вашей плате эти примеры могут сразу не заработать, т.к. примеры могут быть под разные микросхемы PHY. Но! Настоятельно требую посмотреть вот эту тему. К сожалению в примерах Кейла не нашёл! Скачал сам стек lwIP но с какой стороны к нему подойти не пойму, да плюс моё плохое знание английского сказывается! Понял что в первую очередь надо разобраться с PHY уровнем. Это отдельный вопрос! (у меня микруха ks8721BL отладочная плата sk-mlpc2478). Меня интересует простой пример как прикрутить эту огромную кучу сырцов к проекту и как связать стек с EMAK (как организуется стыковка lwIP и PHY)! Заранее спасибо!
|
|
|
|
|
Jul 12 2011, 10:22
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(toweroff @ Jul 3 2011, 19:16)  c:\Program Files (x86)\Keil\ARM\Boards\Keil\MCB2470\RL\TCPnet (а) это появляется только в последней версии MDK 4.21 (б) .\Obj\Http_demo.axf: Error: L9937E: RL-ARM is not allowed with this license
|
|
|
|
|
Jul 12 2011, 17:17
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(toweroff @ Jul 12 2011, 18:08)  ну так скачать и поставить вот тута кейген на шо?  так в кейгене нужно правильную пипку нажимать. Но это фигня по сравнению с тем, что берешь пример, например, l\ARM\Boards\Keil\MCB1700\RL\TCPnet\Http_demo оно собирается, заливается и не работает. И где оно не работает - хрен поймешь, может потому как в версии EasyWeb мне пришлось чуть поправить EMAC.c то ли еще почему. и EasyWeb непонятно в каком направлении ковырять с целью побороть.... {{ вот если у нас дивайс напрямую соединен с компьютером, то и пинг не пропадает, и на запросы сервер всегда отвечает. а если воткнуть в локальную сеть, то половина пингов теряются, на половину или больше запросов сервер молчит как партизан. и дрыганье старт-стоп в жЫтаговском отладчике в момент молчания ничего не проясняет. }}
|
|
|
|
|
Jul 12 2011, 19:20
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(evgen2 @ Jul 12 2011, 21:17)  так в кейгене нужно правильную пипку нажимать. Но это фигня по сравнению с тем, что берешь пример, например, l\ARM\Boards\Keil\MCB1700\RL\TCPnet\Http_demo
оно собирается, заливается и не работает. И где оно не работает - хрен поймешь, может потому как в версии EasyWeb мне пришлось чуть поправить EMAC.c то ли еще почему. и EasyWeb непонятно в каком направлении ковырять с целью побороть.... {{ вот если у нас дивайс напрямую соединен с компьютером, то и пинг не пропадает, и на запросы сервер всегда отвечает. а если воткнуть в локальную сеть, то половина пингов теряются, на половину или больше запросов сервер молчит как партизан. и дрыганье старт-стоп в жЫтаговском отладчике в момент молчания ничего не проясняет. }} и какие претензии к компилятору и среде разработки? как говорит zltigo, все проблемы создали "индусы"
|
|
|
|
|
Jul 12 2011, 20:05
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(toweroff @ Jul 12 2011, 23:20)  и какие претензии к компилятору и среде разработки?
как говорит zltigo, все проблемы создали "индусы" гы. К ним у меня тоже есть претензии. Как оказалось при установке на стационарном компьютере установщик как-то криво то ли поставил, то ли проапгрейдил Segger и теперь я занимаюсь любимым делом - ставлю и сношу, а ставиться оно чем дальше, тем дольше
|
|
|
|
|
Jul 12 2011, 21:37
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(toweroff @ Jul 13 2011, 00:24)  segger можно скачать и с сайта, скопировать dll в кейл да и беты-альфы всегда лежат тут: http://www.segger.com/cms/beta-software-version.htmlэто я знаю, у меня их зоопарк и что-то где-то...не смог найти где. rename KEIL KEIL_OLD и последущая установка заново помогли. И с emac'ом оказывается разобраться можно, только похоже что отладчик очень сильно чудит в функции init_ethernet, которая вызывается где-то до main() аааа... победил ;-) Кейлы до сих пор не знают KS8721B, редиски id1 = read_PHY (PHY_REG_IDR1); id2 = read_PHY (PHY_REG_IDR2); moduleid = ((id1 << 16) | (id2 & 0xFFF0)); if ( moduleid == DP83848C_ID ) model=1; else if ( moduleid == KS8721B_ID ) model=2;
|
|
|
|
|
Jul 16 2011, 07:33
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(haker_fox @ Jul 14 2011, 05:51)  Вы читали ссылки, которые я приводил? У меня тоже KS8721 и я имел некоторое количество мучений с ней. А вот на счет "до сих пор" Вы не правы. KS8721 - устаревший чип. Ссылки - это ветка "Olimex/Startetkit LPC23/4 + RMII KS8721BL, Баги в схеме :" ? Похоже читал, когда оно только началось и когда у меня были проблемы. Допустим, KS8721 - устаревший чип, тогда всё равно редиски, потому как кроме DP83848C ничего другого не знают.
|
|
|
|
|
Jul 17 2011, 22:18
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(haker_fox @ Jul 16 2011, 16:43)  Ну так я там же написал, что нужно поправить в примерах Кейла, чтобы стек заработал с BS8721. кхе-кхе как оно может работать при наличии if (((id1 << 16) | (id2 & 0xFFF0)) == DP83848C_ID) { - совершенно непонятно я кажется уже где постил, не могу найти где, повторю тут Вариант для SK-MLPC1768, для SK-MLPC-237 делается аналогично в EMAC.h добавляем #define KS8721B_ID 0x00221610 /* PHY Identifier ks8721b */ в EMAC.c меняем void Init_EMAC(void) на int Init_EMAC(int mode) Код #define MCFG_CLK_DIV20 0x00000038 /* MDC = hclk / 20 */
// configure port-pins for use with LAN-controller, // reset it and send the configuration-sequence //mode = 0 - slow mode, 1 - fast int Init_EMAC(int mode) { // Keil: function modified to access the EMAC // Initializes the EMAC ethernet controller unsigned int regv,regv1,tout,id1,id2, moduleid, model=0, twait;
twait = 0x100000; if(mode) twait = 0x10000;
/* Power Up the EMAC controller. */ LPC_SC->PCONP |= 0x40000000; /* Enable P1 Ethernet Pins. */ LPC_PINCON->PINSEL2 = 0x50150105;
#ifdef __LPC175x /* LPC175x devices, use software MII management. */ LPC_PINCON->PINSEL4 &= ~0x000F0000; LPC_GPIO2->FIODIR |= MDC; #else /* LPC176x devices, no MDIO, MDC remap. */ LPC_PINCON->PINSEL3 = (LPC_PINCON->PINSEL3 & ~0x0000000F) | 0x00000005; #endif /* 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 */ /* Enable Reduced MII interface. */ LPC_EMAC->MCFG = MCFG_CLK_DIV20 | MCFG_RES_MII; for (tout = 100; tout; tout--); LPC_EMAC->MCFG = MCFG_CLK_DIV20;
regv = read_PHY (PHY_REG_BMSR); regv1= read_PHY (PHY_REG_STS);
/* Enable Reduced MII interface. */ LPC_EMAC->Command = CR_RMII | CR_PASS_RUNT_FRM;
/* Put the DP83848C in reset mode */ write_PHY (PHY_REG_BMCR, 0x8000);
/* Wait for hardware reset to end. */ for (tout = 0; tout < 0x100000; tout++) { regv = read_PHY (PHY_REG_BMCR); if (!(regv & 0x8000)) { /* Reset complete */ break; } }
/* Check if this is a DP83848C PHY. */ id1 = read_PHY (PHY_REG_IDR1); id2 = read_PHY (PHY_REG_IDR2);
moduleid = ((id1 << 16) | (id2 & 0xFFF0)); if ( moduleid == DP83848C_ID ) model=1; else if ( moduleid == KS8721B_ID ) model=2;
/* Use autonegotiation about the link speed. */ write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG);
/* Wait to complete Auto_Negotiation. 0x10000*/ for (tout = 0; tout < twait; tout++) { regv = read_PHY (PHY_REG_BMSR); if (regv & 0x0020) { /* Autonegotiation Complete. */ break; } if (tout > 0x100 && (LPC_EMAC->MIND & MIND_NOT_VAL)) break; }
if (regv & 0x0020) { /* Autonegotiation Complete. */ } else { return 1; /* Ωαßσδⁿ φσ ∩εΣΩδ■≈σφ */ }
/* Check the link status. */ for (tout = 0; tout < 0x10000; tout++) { // regv = read_PHY (PHY_REG_STS); // if (regv & 0x0001) { // /* Link is on. */ // break; // } regv = read_PHY (PHY_REG_BMSR); if (regv & 0x0004) { /* Link is on. */ break; }
}
/*****************/ if(model == 2) { regv = read_PHY (PHY_REG_STS2); regv=(regv>>2)&7; if ((regv==5)||(regv==6)) {/* Full duplex is enabled. */ LPC_EMAC->MAC2 |= MAC2_FULL_DUP; LPC_EMAC->Command |= CR_FULL_DUP; LPC_EMAC->IPGT = IPGT_FULL_DUP; } else { /* Half duplex mode. */ LPC_EMAC->IPGT = IPGT_HALF_DUP; }
/* Configure 100MBit/10MBit mode. */ if ((regv==1)||(regv==5)) {/* 10MBit mode. */ LPC_EMAC->SUPP = 0; } else { /* 100MBit mode. */ LPC_EMAC->SUPP = SUPP_SPEED; } /*****************/ } else { regv = read_PHY (PHY_REG_STS);
/* Configure Full/Half Duplex mode. */ if (regv & 0x0004) { /* Full duplex is enabled. */ LPC_EMAC->MAC2 |= MAC2_FULL_DUP; LPC_EMAC->Command |= CR_FULL_DUP; LPC_EMAC->IPGT = IPGT_FULL_DUP; } else { /* Half duplex mode. */ LPC_EMAC->IPGT = IPGT_HALF_DUP; }
/* Configure 100MBit/10MBit mode. */ if (regv & 0x0002) { /* 10MBit mode. */ LPC_EMAC->SUPP = 0; } else { /* 100MBit mode. */ LPC_EMAC->SUPP = SUPP_SPEED; } } /*****************/
/* Set the Ethernet MAC Address registers */ LPC_EMAC->SA0 = (MYMAC_1 << 8) | MYMAC_2; LPC_EMAC->SA1 = (MYMAC_3 << 8) | MYMAC_4; LPC_EMAC->SA2 = (MYMAC_5 << 8) | MYMAC_6;
/* Initialize Tx and Rx DMA Descriptors */ rx_descr_init (); tx_descr_init ();
/* 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;
return 0; }
Сообщение отредактировал evgen2 - Jul 17 2011, 22:20
|
|
|
|
Сообщений в этой теме
glonium Стек TCP IP для LPC2478 Jun 28 2011, 19:22 scifi Если нет опыта МК+Ethernet, то лучше брать что-ниб... Jun 28 2011, 19:33 glonium Цитата(scifi @ Jun 28 2011, 23:33) Посмот... Jun 28 2011, 20:01  aaarrr Цитата(glonium @ Jun 29 2011, 00:01) Я ка... Jun 28 2011, 20:34  zltigo QUOTE (glonium @ Jun 28 2011, 22:01) А чт... Jun 28 2011, 21:40   glonium Цитата(zltigo @ Jun 29 2011, 01:40) Если ... Jun 29 2011, 14:39    Lotor Цитата(glonium @ Jun 29 2011, 17:39) И чт... Jun 29 2011, 16:22  scifi Цитата(glonium @ Jun 29 2011, 00:01) Я ка... Jun 29 2011, 07:26 Lotor Выбрал кейловский стек, правда мне нужны только со... Jun 29 2011, 09:38     glonium Цитата(toweroff @ Jul 3 2011, 19:16) c:... Jul 3 2011, 19:07      AlexandrY Цитата(glonium @ Jul 3 2011, 22:07) Нет т... Jul 3 2011, 19:25       glonium Цитата(AlexandrY @ Jul 3 2011, 23:25) Вы ... Jul 3 2011, 19:30       Буратино Цитата(AlexandrY @ Jul 3 2011, 23:25) Вы ... Jul 3 2011, 19:33        AlexandrY Цитата(Буратино @ Jul 3 2011, 22:33) Кста... Jul 3 2011, 20:28      toweroff Цитата(glonium @ Jul 3 2011, 23:07) Нет т... Jul 3 2011, 20:14      haker_fox QUOTE (glonium @ Jul 4 2011, 04:07) Нет т... Jul 4 2011, 02:54       glonium Цитата(haker_fox @ Jul 4 2011, 06:54) Стр... Jul 4 2011, 16:47                haker_fox QUOTE (evgen2 @ Jul 18 2011, 07:18) кхе-к... Jul 18 2011, 03:35                Slowhan Цитата(evgen2 @ Jul 18 2011, 01:18) Код/*... Jul 20 2011, 18:38 MALLOY2 ЦитатаLPC2478 и Keil!
К сожалению с кайлом не... Jun 29 2011, 16:43 glonium У меня к вам ещё вопрос пролеченный кайл оставляет... Jun 29 2011, 19:02 aaarrr Цитата(glonium @ Jun 29 2011, 23:02) У ме... Jun 29 2011, 19:06  glonium Цитата(aaarrr @ Jun 29 2011, 23:06) Ага, ... Jun 29 2011, 19:10   aaarrr Цитата(glonium @ Jun 29 2011, 23:10) Вы п... Jun 29 2011, 19:14 glonium кстати в EasyWeb есть большой минус она может рабо... Jul 4 2011, 18:45 haker_fox QUOTE (glonium @ Jul 5 2011, 03:45) кстат... Jul 5 2011, 01:46 glonium Народ прошу вас поделиться примером как прикрутить... Jul 4 2011, 19:51 glonium Дааа!! Оказалось намного сложнее найти при... Jul 5 2011, 16:30 zltigo QUOTE (glonium @ Jul 5 2011, 19:30) и под... Jul 5 2011, 16:38  haker_fox QUOTE (zltigo @ Jul 6 2011, 01:38) Бред. ... Jul 6 2011, 05:17 glonium ARM, IAR, GCC. Они достаточно равноценны. А как же... Jul 5 2011, 17:11 zltigo QUOTE (glonium @ Jul 5 2011, 20:11) А как... Jul 5 2011, 17:56 glonium Тогда посоветуйте пожалуйста что почитать потолков... Jul 5 2011, 18:29 glonium Покурив немного даташит на стек lwIP, понял, что с... Jul 8 2011, 18:04 glonium так же понял что каким то образом надо настроить 2... Jul 8 2011, 19:47 Slowhan В кейловском стеке есть функция создания сокета:
К... Jul 19 2011, 07:19 haker_fox QUOTE (Slowhan @ Jul 19 2011, 16:19) U16 ... Jul 20 2011, 00:57  Slowhan Цитата(haker_fox @ Jul 20 2011, 04:57) На... Jul 21 2011, 07:31 RA3WUM Нет желания плодить темы, поэтому сдесь спрошу.
По... Jul 25 2011, 21:05 Lotor Цитата(RA3WUM @ Jul 26 2011, 01:05) Нет ж... Jul 26 2011, 05:05 MALLOY2 ЦитатаПосоветуйте tcp-ip стек на мелкий чип вроде ... Jul 26 2011, 07:26 RA3WUM Цитата(MALLOY2 @ Jul 26 2011, 10:26) А чт... Jul 26 2011, 20:34 MiDV Посоветуйте, плиз, литературу по прикручиванию lwi... Jul 29 2011, 07:23 glonium Доброго времени суток народ!
И вот наконец пос... Aug 6 2011, 17:20  glonium Да ещё не понятно NicheLite это ОС или нет! Aug 6 2011, 18:34
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|