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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Olimex/Startetkit LPC23/4 + RMII KS8721BL, Баги в схеме :(
zltigo
сообщение Sep 24 2008, 12:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Во всех китах Olimex и Starterkit для чипов LPC23xx и LPC24xx ошибка в подключении PHY KS8721BL в RMII Mode. К контроллеру подключен сигнал CRS (Carrier Sense), а не RXDV(CRS_DV - Carrier Sense/Data Valid). Результат плачевен - все фреймы принимаются с якобы битой CRC. Кстати, там по хорошему надо-бы этот сигнальчик к земле подтянуть, а то со встроенной в LPC PU подтяжкой при Reset потенциально могут быть проблемы.

P.S.
Поражает пофигизм разработчиков в обработке ошибок - описанные киты давно уже в продаже, на них написано всяких разных демок-приложений вплоть до Linux, а обрабатывать ошибки sad.gif, получается не заморачивается никто особо sad.gif. Уперся в баг, потратил пару дней, просмотрел интернет вдоль и поперек - кроме одного безответного вопроса на LPC2000 форуме - тишина......


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Quasar
сообщение Sep 25 2008, 19:18
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(zltigo @ Sep 24 2008, 16:04) *
Во всех китах Olimex и Starterkit для чипов LPC23xx и LPC24xx ошибка в подключении PHY KS8721BL в RMII Mode. К контроллеру подключен сигнал CRS (Carrier Sense), а не RXDV(CRS_DV - Carrier Sense/Data Valid). Результат плачевен - все фреймы принимаются с якобы битой CRC. Кстати, там по хорошему надо-бы этот сигнальчик к земле подтянуть, а то со встроенной в LPC PU подтяжкой при Reset потенциально могут быть проблемы.

P.S.
Поражает пофигизм разработчиков в обработке ошибок - описанные киты давно уже в продаже, на них написано всяких разных демок-приложений вплоть до Linux, а обрабатывать ошибки sad.gif, получается не заморачивается никто особо sad.gif. Уперся в баг, потратил пару дней, просмотрел интернет вдоль и поперек - кроме одного безответного вопроса на LPC2000 форуме - тишина......


Да.Да.Да...
Я с этим тоже столкнулся, понял что проблема аппаратная, в чем точно так и не понял...lwIP постоянно дропал часть пакетов....
Только не все фреймы, а бОльшая часть фреймов длинной более 150-200 байт...
smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 25 2008, 19:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Quasar @ Sep 25 2008, 21:18) *
Я с этим тоже столкнулся, понял что проблема аппаратная, в чем точно так и не понял...lwIP постоянно дропал часть пакетов....
Только не все фреймы, а бОльшая часть фреймов длинной более 150-200 байт...

"Битые" абсолютно все фреймы, а причину надо смотреть вне lwIP а в том, какой ""драйвер"" MAC прикручен - обычно халтура игнорирующая все и вся. Единственное встретившиеся исключение лицензионный NXP/NicheLite. Если дадите ссылку - посмотрю.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Quasar
сообщение Sep 25 2008, 19:59
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(zltigo @ Sep 25 2008, 23:24) *
"Битые" абсолютно все фреймы, а причину надо смотреть вне lwIP а в том, какой ""драйвер"" MAC прикручен - обычно халтура игнорирующая все и вся. Единственное встретившиеся исключение лицензионный NXP/NicheLite. Если дадите ссылку - посмотрю.



Ну вот у меня эта халтура и используется smile.gif . Фрейм принимается с битым CRC и неверной длинной. На битый CRC кладётся...неверная длина передается выше...ну и отваливается на каком-нибудь TCP или при просчете CRC в ICMP...
Сейчас на своей плате поправил это дело, теперь всё OK smile.gif .
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 26 2008, 14:07
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Хорошо, что в свое время я купил демоплату у Embedded артистов smile.gif.
Пытаюсь избавиться от этих KSZ8001/8721. Ни у кого не завалялось схемы включения более нового KSZ8041 c LPC или еще каким-нибудь процессором?

Сообщение отредактировал Vitaliy_ARM - Sep 26 2008, 14:11


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 26 2008, 15:08
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Vitaliy_ARM @ Sep 26 2008, 16:07) *
Ни у кого не завалялось схемы включения более нового KSZ8041 c LPC или еще каким-нибудь процессором?

Если не SMI Так совершенно обыденое MII/RMII подключение "как всегда".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 27 2008, 11:15
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(zltigo @ Sep 26 2008, 19:08) *
Если не SMI Так совершенно обыденое MII/RMII подключение "как всегда".


Смущает отсутствие VDDRCV входа у микросхемы. На трансформатор в среднюю точку какое питание заводить? 3,3V или питание ядра?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 27 2008, 11:58
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Vitaliy_ARM @ Sep 27 2008, 13:15) *
На трансформатор в среднюю точку какое питание заводить? 3,3V или питание ядра?

VDDA_3,3, а документацию, включая документацию на Evalboard что мешает у Micrel взять?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 27 2008, 13:03
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(zltigo @ Sep 27 2008, 15:58) *
VDDA_3,3, а документацию, включая документацию на Evalboard что мешает у Micrel взять?


На EvalBord что-то не получилось. Вроде они должны были на маил прислать, но не прислали.
Или почта сбоит.

Спасибо. Этого достаточно.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 27 2008, 13:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Vitaliy_ARM @ Sep 27 2008, 15:03) *
На EvalBord что-то не получилось.

???
http://www.micrel.com/_PDF/Ethernet/ethern...signkit/8041NL/


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение Oct 1 2008, 07:26
Сообщение #11


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

Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292



Цитата(zltigo @ Sep 24 2008, 15:04) *
Во всех китах Olimex и Starterkit для чипов LPC23xx и LPC24xx ошибка в подключении PHY KS8721BL в RMII Mode. К контроллеру подключен сигнал CRS (Carrier Sense), а не RXDV(CRS_DV - Carrier Sense/Data Valid). Результат плачевен - все фреймы принимаются с якобы битой CRC. Кстати, там по хорошему надо-бы этот сигнальчик к земле подтянуть, а то со встроенной в LPC PU подтяжкой при Reset потенциально могут быть проблемы.

P.S.
Поражает пофигизм разработчиков в обработке ошибок - описанные киты давно уже в продаже, на них написано всяких разных демок-приложений вплоть до Linux, а обрабатывать ошибки sad.gif, получается не заморачивается никто особо sad.gif. Уперся в баг, потратил пару дней, просмотрел интернет вдоль и поперек - кроме одного безответного вопроса на LPC2000 форуме - тишина......


Так вот где собака порылась! А я на себя грешил... Ошибки CRC в lwip стеке постоянно присутствали,
обойти удалось так - в файле ethernetif.c в функции low_lewel_input увеличил длину считываемого фрейма на 4
len = StartReadFrame()+4;
и все заработало, т.е. дочитываю контрольную сумму. Установил это через анализ пакетов передаваемых по сети и принятых в стек
Правда, не уверен - корректно ли все это... может есть еще какие-то засады?

И еще - с платами стартеркит - работает ли Ethernet с установленной частотой процессора больше 50МГц? У меня глохнет начальная инициализация PHY на процедуре сброса. Проверял на нескольких платах, с частотами ниже 50МГц все ок. Может это и проблема из-за подтяжки вышесказанного сигнала?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 1 2008, 07:36
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(lebiga @ Oct 1 2008, 09:26) *
И еще - с платами стартеркит - работает ли Ethernet с установленной частотой процессора больше 50МГц? У меня глохнет начальная инициализация PHY на процедуре сброса. Проверял на нескольких платах, с частотами ниже 50МГц все ок.

Да на 72MHz работает. Вопросы
- какая ревизия чипа с точки зрения наличия бага с ограничением скорости работы из Flash
- а какой делитель прописывается в MCFG. Надо 28 - MIIM у Micrel максимум на 2.5MHz "типично" работает. Я "автоматически"
подбираю под CPU при инициализации.
- как там у Вас всякие задержечки-прокладочки организованы?
Цитата
Может это и проблема из-за подтяжки вышесказанного сигнала?

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение Oct 1 2008, 07:57
Сообщение #13


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

Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292



Цитата(zltigo @ Oct 1 2008, 10:36) *
Да на 72MHz работает. Вопроса два - какая ревизия чипа с точки зрения наличия бага с ограничением скорости работы из Flash
- а какой делитель прописывается в MCFG. Надо 28 - MIIM у Micrel максимум на 2.5MHz "типично" работает. Я "автоматически"
подбираю под CPU при инициализации.
- как там у Вас всякие задержечки-прокладочки организованы?

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

Делитель 28
задержки ставил, не помогает
это все в самом начале - подается команда сброса в микрел - и ответа нет никогда...
с mam тоже игрался, проц ревизии В
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 1 2008, 08:04
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(lebiga @ Oct 1 2008, 09:57) *
это все в самом начале - подается команда сброса в микрел - и ответа нет никогда...

Ну чего-то намудрено у Вас.
CODE

//---------------------------------------------------------------------------
// Initialize the PHY chip
// Performs the following steps:
// 1.Determines PHY address
// 2.Resets PHY
// 3.Sets PHY clock
// 4.Sets Line speed (auto-negotiation if selected)
//---------------------------------------------------------------------------
int init_phy(void)
{
bint phy_reg;

MCFG = MCFG_HCLK_DIV_28|MCFG_RESET_MII_MGMT;
vSmartDelay_ms( 2 );

#if( EMAC_CFG_RMII == 0 )
MCOMMAND &= ~CR_RMII;
#else
MCOMMAND |= CR_RMII;
#if defined __IOLPC2458_H
SUPP = SUPP_RESET_MII;
#else
SUPP = 0; // Assume and configure RMII link speed logic for 10Mbit
#endif
#endif

for( int i = 0; i < 7; i++ )
{ // Check dividers to yield MII frequency ~2.5 MHz
if( ( (configCPU_CLOCK_HZ/100000L)/mii_dividers[i][0] ) <= 25 )
{ // Index [i][0] = decimal div value, [i][1] = MCFG reg val
MCFG = mii_dividers[i][1]; // Remove reset, set proper MIIM divider
break;
}
}
vSmartDelay_ms( 10 ); // Short delay while PHY exits reset and new divider is set

for( phy_addr = 0; phy_addr < 32; phy_addr++ )
{ // Put PHY in reset mode
write_PHY( PHY_REG_BMCR, BMCR_RESET );
// Wait for hardware reset to end
for( int i = 0; i < 128; i++ )
{ vSmartDelay_ms( 1 );
if( !(read_PHY( PHY_REG_BMCR ) & BMCR_RESET) )
{ // Reset complete
goto phy_found;
}
}
}
printst( "PHY:None" );
return( 1 );

phy_found:
{
// Check if this is a valid PHY
ulong id_phy = (read_PHY( PHY_REG_IDR1 )<<16)|read_PHY( PHY_REG_IDR2 );
if( id_phy == KS8721BL_ID )
xprintf( "PHY%02u:KS8721BL ", phy_addr );
else
{ xprintf( "PHY%02u:%08X ", phy_addr, id_phy );
return( 2 );
}
}

..........





void write_PHY( bint phyreg, bint value )
{
MADR = (phy_addr<<8) | phyreg;
MWTD = value;
// Wait utill operation completed
for( int tout = 0; tout < MII_WR_TOUT; tout++ )
{
if( ( MIND & MIND_BUSY ) == 0 )
break;
}
}

bint read_PHY( bint phyreg )
{
MADR = (phy_addr<<8) | phyreg;
MCMD = MCMD_READ;

// Wait until operation completed
for( int tout = 0; tout < MII_RD_TOUT; tout++ )
{ if( (MIND & (MIND_BUSY|MIND_NOT_VALID) ) == 0 )
{ MCMD = 0;
return( MRDD );
}
}
return( 0 );
}


Сообщение отредактировал zltigo - Oct 1 2008, 10:52


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение Oct 1 2008, 10:48
Сообщение #15


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

Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292



Да, сам себя накрутил, где-то взял этот код... Когда стоял DM9161A - проблем небыло, поставил KS8721 -
возникла...

MCFG= MCFG_RES_MII | 0x01C0; //div 28
MCFG &= ~MCFG_RES_MII; - убрал эту строку - и заработало на 72Мгц
Go to the top of the page
 
+Quote Post
virfis
сообщение Oct 16 2008, 12:08
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



У меня olimex LPC-E2468 с KS8721BL не проходит инициализацию. Исходники взял оn IAR EWARM 5.20. Проект uip_webserver.
При чтении регистра PHYSTS (0x0010) выдает всегда 0. В чем может быть дело?
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 16 2008, 22:52
Сообщение #17


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



На практике действительно так нужен RMII?
PHY только с MII стоит в 2-4 раза дешевле.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 16 2008, 22:58
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



За наличие RMII и версии с индустриальным диапазоном, например. Впрочем, есть нормальные PHY за те же деньги, что и RTL8201.
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 16 2008, 23:02
Сообщение #19


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Я нашел эту разницу и пост удалил. Поворчал по другому поводу. ;>
Go to the top of the page
 
+Quote Post
virfis
сообщение Oct 17 2008, 08:03
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



В чем разница RMII и MII? Может у меня поэтому не инициализируется?
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Oct 17 2008, 10:32
Сообщение #21


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(virfis @ Oct 17 2008, 12:03) *
В чем разница RMII и MII? Может у меня поэтому не инициализируется?

Это два разных режима работы PHY, естественно, и инициализация должна быть соответствующей. Отличие первого в меньшем числе используемых линий для передачи данных (в 2 раза), но скорость работы по линиям выше в 2 раза. Почитайте описание микросхемы, там должны быть описаны эти режимы.

У iosifk есть станица персональная, с которой есть ссылки на статьи об этом интерфейсе.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Alexandro
сообщение Oct 17 2008, 11:49
Сообщение #22





Группа: Участник
Сообщений: 12
Регистрация: 26-05-05
Пользователь №: 5 431



Цитата(aaarrr @ Oct 17 2008, 01:58) *
Впрочем, есть нормальные PHY за те же деньги, что и RTL8201.


Не подскажите, в чем недостатки RTL8201 ? Помимо отсутствия RMII.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 2 2008, 02:48
Сообщение #23


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Alexandro @ Oct 17 2008, 13:49) *
Не подскажите, в чем недостатки RTL8201 ? Помимо отсутствия RMII.

autoneg иногда ошибается (но это imho с каждым из дешевых PHY такое), а в остальном нареканий нет.

Цитата(zltigo @ Sep 25 2008, 21:24) *
Единственное встретившиеся исключение лицензионный NXP/NicheLite.

Это поэтому он так дико тормозит?
демка nichelite которая идет в комплекте к SK-LPC2478 ужасно работает.
консоль, сжирает символы 07.gif
ping'и с джиттером в 1 сек. УжОс.

Эта демка - наглядный пример того как можно запаскудить хорошее железо дерьмовым софтом.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 2 2008, 08:45
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(defunct @ Nov 2 2008, 05:48) *
Эта демка - наглядный пример того как можно запаскудить хорошее железо дерьмовым софтом.

Я сказал то, что сказал - в ней единственный встреченный мною прилично написанный уровень "драйвера", который стоит вычитывать и от которого можно отталкиваться в написании нужного.
Все остальное я не смотрел и соответственно вообще не комментировал.


Цитата(defunct @ Nov 2 2008, 05:48) *
демка nichelite которая идет в комплекте к SK-LPC2478 ужасно работает.

Без понятия,что за демка, но уже однажды писал - конкретные сборки "софта" идущие со стартеркитами даже смотреть не надо. Там полный мрак - ну просто человек другим занимается и все его демки нужно рассматривать с точки зрения железо работает и ладно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 27 2011, 06:29
Сообщение #25


Познающий...
******

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



QUOTE (zltigo @ Sep 24 2008, 21:04) *
Во всех китах Olimex и Starterkit для чипов LPC23xx и LPC24xx ошибка в подключении PHY KS8721BL в RMII Mode. К контроллеру подключен сигнал CRS (Carrier Sense), а не RXDV(CRS_DV - Carrier Sense/Data Valid). Результат плачевен - все фреймы принимаются с якобы битой CRC. Кстати, там по хорошему надо-бы этот сигнальчик к земле подтянуть, а то со встроенной в LPC PU подтяжкой при Reset потенциально могут быть проблемы.

Господа, дико прошу прощения за поднятие наистарейшей темы, но у меня есть резон! Мучаюсь несколько дней, не могу запустить сетевые приложения из примеров Keila, тогда как идущие демки (easyweb, nichlite) вместе с платкой SK-MLPC2478 (производитель Стартеркит работают). EMAC-драйвер поправил.
Посему есть несколько вопросов:
1. Могут ли из-за этой ошибки не работать примеры от Keila? Или я неправильно отрихтовал драйвер?
2. Не совсем понятно, какие сигналы куда подкчлючить. Нужно CRS от PHY KS8721 отключить от МК и оставить в воздухе, а RXDV подключить к МК, и подтянуть к земле через резистор? Верно? Я, конечно, простой вопрос задаю, ну уж больно боюсь спалить или МК или PHY. Ремонт мне выльется заказом новой платы.

Заранее благодарен за понимание и ответы! Спасибо!

UPD: вот, что значит нервничать. Успокоился, посмотрел, оказывается новые платки уже поправлены. Можно оттуда "срисовывать" модернизацию для своей платки) Но ответ на первый вопрос остается актуальным)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 29 2011, 08:13
Сообщение #26


Познающий...
******

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



Перерезал дорожку. Припоял перемычку. Лучше на стало. Видимо, неправильно поправил драйвера.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 29 2011, 09:02
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (haker_fox @ Jun 29 2011, 10:13) *
Перерезал дорожку. Припоял перемычку.

Это правильно.
QUOTE
Лучше на стало.

Я уже раньше писал - драйвера из демок есть полная муть и, как правило все игнорируют, например те-же демки прилагаемые к Starter в принципе работали.
QUOTE
Видимо, неправильно поправил драйвера.

Очевидно sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jun 29 2011, 09:45
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



На счет драйвера я отписал тут, думаю поможет - http://electronix.ru/forum/index.php?showtopic=91497
Если не поможет, давайте разбираться. sm.gif


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 30 2011, 00:53
Сообщение #29


Познающий...
******

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



QUOTE (Lotor @ Jun 29 2011, 18:45) *
На счет драйвера я отписал тут, думаю поможет - http://electronix.ru/forum/index.php?showtopic=91497
Если не поможет, давайте разбираться. sm.gif

Ух ты! Моя тема да еще и под носом, а я не нашел. Честно искал. Гуглом. Может быть просмотрел)
Lotor, спасибо Вам большое! Сейчас я на работе. Платка дома. Часиков через 8 попробую по Вашей рекомендации поправить дело. Может быть и заведется.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jun 30 2011, 04:12
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(haker_fox @ Jun 30 2011, 04:53) *
Может быть и заведется.

Должна. sm.gif


У меня к Вам просьба, можете проверить на своей SK-MLPC2478 работу с SD картой? Там пример вместе с платой идет, надо в терминалке набрать dio0.



--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 30 2011, 05:28
Сообщение #31


Познающий...
******

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



QUOTE (Lotor @ Jun 30 2011, 13:12) *
Должна. sm.gif

Хорошо бы)
QUOTE (Lotor @ Jun 30 2011, 13:12) *
У меня к Вам просьба, можете проверить на своей SK-MLPC2478 работу с SD картой? Там пример вместе с платой идет, надо в терминалке набрать dio0.

С удовольствим бы, но у меня LPC2468 (см. фото). Я допустил досадную опечатку выше. На этой плате нет разъема под SD-карту, соответственно и демки тоже( Простите, если не оправдал надежды crying.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jun 30 2011, 06:15
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(haker_fox @ Jun 30 2011, 09:28) *
Простите, если не оправдал надежды crying.gif

Ничего страшного, просто у меня на стертеркитовской плате SD карта не работает, хотел удостовериться, что только у меня.sm.gif


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 30 2011, 06:32
Сообщение #33


Познающий...
******

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



QUOTE (Lotor @ Jun 30 2011, 15:15) *
Ничего страшного, просто у меня на стертеркитовской плате SD карта не работает, хотел удостовериться, что только у меня.sm.gif

Лучше что бы у всех, тогда устранять проще)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Jun 30 2011, 08:01
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Цитата(Lotor @ Jun 30 2011, 08:12) *
У меня к Вам просьба, можете проверить на своей SK-MLPC2478 работу с SD картой? Там пример вместе с платой идет, надо в терминалке набрать dio0.

Что за пример такой? У меня два варианта с флешкой работали. От Чана (chan_mci) и стандартный от Кейла, там только пришлось попросить терминал переехать с 2 порта на 0-й. И в обоих случаях таких команд в списке стандартных небыло плата от стартеркита SK-MLPC2478, третий выпуск
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jun 30 2011, 08:07
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(yakub_EZ @ Jun 30 2011, 12:01) *
Что за пример такой? У меня два варианта с флешкой работали. От Чана (chan_mci) и стандартный от Кейла, там только пришлось попросить терминал переехать с 2 порта на 0-й. И в обоих случаях таких команд в списке стандартных небыло плата от стартеркита SK-MLPC2478, третий выпуск


От Чана пример, команда di 0 - очепятался. Радует, что все же примеры у кого-то идут.




--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Jun 30 2011, 08:21
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Цитата(Lotor @ Jun 30 2011, 12:07) *
От Чана пример, команда di 0 - очепятался. Радует, что все же примеры у кого-то идут.

Хм.. А после di 0 что пишет? После надо добавить команду - fi 0. А уж затем уже можно попросить показать содерджимое флешки - fl
Вот, с этого hex попробуйте.
Прикрепленные файлы
Прикрепленный файл  fat_mci.zip ( 31.72 килобайт ) Кол-во скачиваний: 23
 
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jun 30 2011, 09:44
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(yakub_EZ @ Jun 30 2011, 12:21) *
Хм.. А после di 0 что пишет? После надо добавить команду - fi 0. А уж затем уже можно попросить показать содерджимое флешки - fl
Вот, с этого hex попробуйте.

Я в курсе как работает эта демка - на другом железе все ок. sm.gif А вот стартеркитовская даже di 0 не проходит.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Jun 30 2011, 09:56
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Демка не простая, а заточенная под стартеркит
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jun 30 2011, 11:04
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(yakub_EZ @ Jun 30 2011, 13:56) *
Демка не простая, а заточенная под стартеркит


Скорее уж стартеркит "затачивал" свою плату аля Olimex. sm.gif

Эта демка, "заточенная" под плату стартеркита у меня идет на олимексовской отладке + на девайсе с аналогичной схемотехникой. А вот на самой плате не хочет. Скорее всего просто мне экземпляр платы такой попался. Тем более у Вас все окей.




--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 1 2011, 15:48
Сообщение #40


Познающий...
******

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



QUOTE (zltigo @ Jun 29 2011, 18:02) *
чевидно sad.gif

Все заработало. Основная часть демок от Кейла пошла (web-сервера (Java, CGI), ping и т.п.).
Что было сделано:
1. В инициализации EMAC добавлена строка
CODE
MAC_MCFG = MCFG_HCLK_DIV_28;

после этих строк
CODE
  /* Initialize MAC control registers. */
  MAC_MAC1 = MAC1_PASS_ALL;
  MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
  MAC_MAXF = ETH_MAX_FLEN;
  MAC_CLRT = CLRT_DEF;
  MAC_IPGR = IPGR_DEF;

2. Естественно, в начале файла есть макрос
CODE
#define MCFG_HCLK_DIV_28      (7 << 2)

Саму инициализацию вообще не трогал (не за исключением добавления указанной строки), не знаю, правильно или нет. Но работает же.
3. По невнимательности для LPC2468 использовал стартовый код LPC2300.s. Заменил на LPC2400.s.
4. Адрес микросхемы PHY не менял, он был уже 0x0100 (1 << 8).
5. Выключил всю отладку сети (файл Net_Debug.c). Это угробляло всю библиотеку TCPnet в моем случае.

Ну и сменил IP на удобный для меня rolleyes.gif
Все пошло!!!))) Пинг меньше 1 мс. Сервера работают.
Сегодня запустил под осью RTX. Стандартный пример не смог запустить. Сделал свой. Правда пинг 8 - 30 мс. Но это связано с неправильным распределением приоритетов задач. Это я уже выяснил. Буду учиться и исправлять ситуацию.
Вот вроде и все.

Большое человеческое спасибо участникам за помощь!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 1 2011, 19:37
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (haker_fox @ Jul 1 2011, 17:48) *
1. В инициализации EMAC добавлена строка
CODE
MAC_MCFG = MCFG_HCLK_DIV_28;

после этих строк
CODE
  /* Initialize MAC control registers. */
  MAC_MAC1 = MAC1_PASS_ALL;
  MAC_MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
  MAC_MAXF = ETH_MAX_FLEN;
  MAC_CLRT = CLRT_DEF;
  MAC_IPGR = IPGR_DEF;

2. Естественно, в начале файла есть макрос
CODE
#define MCFG_HCLK_DIV_28      (7 << 2)

Саму инициализацию вообще не трогал (не за исключением добавления указанной строки), не знаю, правильно или нет. Но работает же.
3. По невнимательности для LPC2468 использовал стартовый код LPC2300.s. Заменил на LPC2400.s.
4. Адрес микросхемы PHY не менял, он был уже 0x0100 (1 << 8).

Да, демописатели sad.gif. У меня даже для рабочего варианта поиск PHY производится, дабы не думать каждый раз..
CODE
int init_phy(void)
{
    MCFG = MCFG_HCLK_DIV_28|MCFG_RESET_MII_MGMT;
      vSmartDelay_ms( 2 );

#if( EMAC_CFG_RMII == 0 )
    MCOMMAND &= ~CR_RMII;
#else
    MCOMMAND |= CR_RMII;
#if defined __IOLPC2458_H
    SUPP = SUPP_RESET_MII;
#else
    SUPP = 0;                 // Assume and configure RMII link speed logic for 10Mbit
#endif
#endif

    for( int i = 0; i < 7; i++ )
    {    // Check dividers to yield MII frequency ~2.5 MHz
        if( ( (configCPU_CLOCK_HZ/100000L)/mii_dividers[i][0] ) <=  25 )
        {    MCFG = mii_dividers[i][1];        // Remove reset, set proper MIIM divider
            break;
        }
    }
    vSmartDelay_ms( 10 );    // Short delay while PHY exits reset and new divider is set

      for( phy_addr = 1; phy_addr <= 31; phy_addr++ )
      {   // Put PHY in reset mode
        write_PHY( PHY_REG_BMCR, BMCR_RESET );
        // Wait for hardware reset to end
        for( int i = 0; i < 128; i++ )
        {   vSmartDelay_ms( 1 );
            if( !(read_PHY( PHY_REG_BMCR ) & BMCR_RESET) )
            {    // Reset complete
                goto phy_found;
              }
        }
    }
    printst( "PHY:Missing " );
    return( 1 );

phy_found:
    {
    // Check if this is a valid PHY
      ulong id_phy = (read_PHY( PHY_REG_IDR1 )<<16)|read_PHY( PHY_REG_IDR2 );
    if( id_phy == KS8721BL_ID  )
        xprintf( "PHY%2X:KS8721BL ", phy_addr );
    else if( id_phy == KS8041TL_ID  )
        xprintf( "PHY%2X:KS8041TL ", phy_addr );
    else
    {    xprintf( "PHY%2X:%8X -Unknown ", phy_addr, id_phy );
         return( 2 );
    }
    }

      // Sanity check...
...........


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 2 2011, 08:36
Сообщение #42


Познающий...
******

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



QUOTE (zltigo @ Jul 2 2011, 04:37) *
Да, демописатели sad.gif. У меня даже для рабочего варианта поиск PHY производится, дабы не думать каждый раз..

Видимо на кейловских платах другой PHY стоит. Вот они жестко под него примеры и заточили.
За исходник - спасибо! Поизучаю!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 2 2011, 09:59
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (haker_fox @ Jul 2 2011, 10:36) *
Видимо на кейловских платах другой PHY стоит.

PHY по базовому набору регистров и базовым функциям, как правило, вполне унифицированы. То, что пишется в демках, обычно использует минимум миниморум особенностей PHY sad.gif Да и для периферийного устройства особые навороты от PHY в общем-то и не нужны.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 2 2011, 12:41
Сообщение #44


Познающий...
******

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



QUOTE (zltigo @ Jul 2 2011, 18:59) *
PHY по базовому набору регистров и базовым функциям, как правило, вполне унифицированы. То, что пишется в демках, обычно использует минимум миниморум особенностей PHY sad.gif Да и для периферийного устройства особые навороты от PHY в общем-то и не нужны.

Понятно. Еще раз благодарю! rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
sadfeel
сообщение Jul 5 2011, 07:10
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 7-10-10
Пользователь №: 59 988



Цитата(Lotor @ Jun 30 2011, 09:15) *
Ничего страшного, просто у меня на стертеркитовской плате SD карта не работает, хотел удостовериться, что только у меня.sm.gif



у меня платка, 2478, тоже без СД карты, припаял проводочки к ней, тоже мучался, потом заработало, там прикол в том, что нужно card detect кинуть на MP147....

вот тут схема (там справа вверху)

http://starterkit.ru/html/doc/SK-MLPC2478_V3A.pdf
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 14:45
Сообщение #46


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(haker_fox @ Jul 2 2011, 12:36) *
За исходник - спасибо! Поизучаю!


Какой-то индусокод. Представьте что адрес не 1 или 2 а 31 - сколько эта херня будет циклы накручивать с задержками ? Лучше нормальные открытые проекты изучайте.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 18:25
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 17:45) *
Какой-то индусокод. Представьте что адрес не 1 или 2 а 31 - сколько эта херня будет циклы накручивать с задержками ?

Если не умеете считать, то порядка 128ms на адрес. Один раз при инициализации. Зато будет найден любой. При необходимости экономить время и использовании 31 адреса все может быть постфактум скорректировано в конкретном рабочем исходнике. Именно такой подход к делу для ДЕМО кода является нормальным в отличии от забивания конкретного адреса, причем без комментариев, что это адрес.
QUOTE
Лучше нормальные открытые проекты изучайте.

Нормальных открытых нет. Один с относительно нормальным уровнем драйвера я уже в этом топике поминал.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 18:56
Сообщение #48


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 5 2011, 22:25) *
Если не умеете считать, то порядка 128ms на адрес. Один раз при инициализации. Зато будет найден любой. При необходимости экономить время и использовании 31 адреса все может быть постфактум скорректировано в конкретном рабочем исходнике. Именно такой подход к делу для ДЕМО кода является нормальным в отличии от забивания конкретного адреса, причем без комментариев, что это адрес.


Я как раз умею считать - для 31 адреса задержка составит 3 секунды - это нормально по-вашему ? Смысл не в том что вы ищете живой адрес а в том как вы это делаете - можно было в цикле заслать сброс по всем адресам без задержек, а потом опрашивать начианая с первого и если он не ответил, то для следующих задержки уже не нужны. В итоге задержка практически не будет зависеть от адреса а для 31 сократится в 30 (!) раз.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 19:30
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 21:56) *
можно было в цикле заслать сброс по всем адресам без задержек, а потом....

В результате получим много большую задержку для начального ОЖИДАЕМОГО адреса и более замысловатый код и более сложный для правки с целью получить из этого демо рабочий вариант.
Единственно, что, пожалуй следует изменить, это явно дефинировать ожидаемый адрес. Где-то так:
CODE
#define DEFAULT_PHY_ADDR (1)
  
    for( phy_addr = DEFAULT_PHY_ADDR;; )
      {   // Put PHY in reset mode
        write_PHY( PHY_REG_BMCR, BMCR_RESET );
        // Wait for hardware reset to end
        for( int i = 0; i < 128; i++ )
        {   vSmartDelay_ms( 1 );
            if( !(read_PHY( PHY_REG_BMCR ) & BMCR_RESET) )
            {    // Reset complete
                goto phy_found;
              }
        }
        phy_addr = ( phy_addr + 1 ) & 0x1F;
        if( phy_addr == DEFAULT_PHY_ADDR )
                           {    printst( "PHY:Missing " );
                                 return( 1 );
        }
        
    }

Достаточно изменить DEFAULT_PHY_ADDR на желаемый и получаем максимально быстрый рабочий вариант, который тем не менее обеспечит поиск при запуске демки или каких-то монтажных ошибок


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:16
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 5 2011, 23:30) *
В результате получим много большую задержку для начального ОЖИДАЕМОГО адреса и более замысловатый код и более сложный для правки с целью получить из этого демо рабочий вариант.


Вы о чем вообще ? вот ваш подправленый код

Код
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

    phy_addr = 1;

    for (int i = 0; i < 128; i++) {  
        if (!(read_PHY( PHY_REG_BMCR ) & BMCR_RESET))
            // Reset complete
            goto phy_found;
        vSmartDelay_ms(1);
    }
    
    for (phy_addr = 2; phy_addr <= 31; phy_addr++) {
        if (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET))
            goto phy_found;
    }
    
    printst("PHY:Missing ");
    return (1);
      
phy_found:


Цитата
for( phy_addr = DEFAULT_PHY_ADDR;; )


Это вообще цирк - зачем тогда поиск адреса нужен sm.gif

Сообщение отредактировал sasamy - Jul 5 2011, 20:21
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:20
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:16) *
Вы о чем вообще ?

О том, что написал.
QUOTE
вот ваш подправленый код

Я понял Вашу мысль и достаточно четко на мой взгляд написал, почему меня такая правка НЕ устраивает. Подправленный код тоже привел. Ознакомьтесь для начала.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:24
Сообщение #52


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 00:20) *
О том, что написал.

Я понял Вашу мысль и достаточно четко на мой взгляд написал, почему меня такая правка НЕ устраивает. Подправленный код тоже привел. Ознакомьтесь для начала.


Я немного опоздал с ответом - в общем это очередная индусятина - собственно то что вы ставили во главу сначала (а это перебрать и найти ЛЮБОЙ адрес даже если ошибка в физике) вдруг отошло на второй план и появился костыль который гробит всю идею на корню
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:35
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:24) *
в общем это очередная индусятина

бла, бла, бла....
QUOTE
собственно то что вы ставили во главу сначала (а это перебрать и найти ЛЮБОЙ адрес даже если ошибка в физике) вдруг отошло на второй план

Было и есть на переднем плане. Во главе угла нормально без лишних рассылок ресетов и прочих ЛИШНИХ телодвижений инициализировать PHY. Если вдруг PHY не нашелся на том адресе, на котором должен быть, то тогда искать. Это НЕ штатный режим и время не имеет значения. Значение-же, для той-же демки имеет понятность и минимально-достаточное количество действий при инициализации. Дивная посылка кучи НЕНУЖНЫХ ресетов может в демке разве только сбить с толку читающего и замаскировать ту самую необходимо-достаточную процедуру инициализации PHY. Кстати, о времени, vSmartDelay_ms() это при работающем шедулере и не при вызове из Idle не задержка, а переключение на другую задачу. До кучи у меня нет зависимости от наличия в функции write_PHY() ожидания окончания транзакции. Отсутствие такого ожидания тоже встречалось в халявных демках sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:41
Сообщение #54


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 00:35) *
бла, бла, бла....


Честно говоря - мне нечего добавить. Учить Вас с таким самомнением бесполезно и поздно, тем более что-то доказывать - я даже не расчитывал что вы согласитесь что код у вас говенный sm.gif

Сообщение отредактировал sasamy - Jul 5 2011, 20:43
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:46
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:41) *
...согласитесь что код у вас говенный sm.gif

Возможно со временем Вам дано будет его понять.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:20
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sasamy @ Jul 6 2011, 00:41) *
...даже не расчитывал что вы согласитесь что код у вас говенный sm.gif

Ваше "исправление" смотрится гораздо более убого "очередной индусятины", ибо не предполагает удобную смену дефолтного адреса, коли уж на то пошло.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 21:34
Сообщение #57


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 01:20) *
Ваше "исправление" смотрится гораздо более убого "очередной индусятины", ибо не предполагает удобную смену дефолтного адреса, коли уж на то пошло.


Еще один. Для нервнодышащих, вот исходное сообщение
http://electronix.ru/forum/index.php?showt...st&p=947034
покажите мне - какой там дефолтный адрес. Если он так нужен - пожалуйста, смысл ведь не в этом.
Код
#define DEFAULT_PHY_ADDR (1)

    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

    phy_addr = DEFAULT_PHY_ADDR;

    for (int i = 0; i < 128; i++) {  
        if (!(read_PHY( PHY_REG_BMCR ) & BMCR_RESET))
            // Reset complete
            goto phy_found;
        vSmartDelay_ms(1);
    }
    
    for (phy_addr = 1; phy_addr <= 31; phy_addr++) {
        if ((phy_addr != DEFAULT_PHY_ADDR) &&  (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET)))
            goto phy_found;
    }
    
    printst("PHY:Missing ");
    return (1);
      
phy_found:
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:43
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sasamy @ Jul 6 2011, 01:34) *
Еще один. Для нервнодышащих, вот исходное сообщение
http://electronix.ru/forum/index.php?showt...st&p=947034
покажите мне - какой там дефолтный адрес. Если он так нужен - пожалуйста, смысл ведь не в этом.

Я разве сказал, что мне нравится исходный код? Спешу разуверить: отнюдь не нравится. Например, я не вижу причины без нужды дергать software reset.
Но ситуацию это не меняет - ваше исправление менее убого исходного варианта, но явно хуже аналогичного от автора. Индусятина-с.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 21:54
Сообщение #59


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 01:43) *
Я разве сказал, что мне нравится исходный код?


Не знаю - я ответил на конкретное предложение про дефолтный адрес невесть откуда взявшийся.

Цитата
я не вижу причины без нужды дергать software reset.


Ну и не дергайте

Цитата
Но ситуацию это не меняет - ваше исправление менее убого исходного варианта, но явно хуже аналогичного от автора. Индусятина-с.


Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен. А вы если делаете громкие заявления - не поленитесь привести свой код, иначе они звучат как пшик индуса sm.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:56
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sasamy @ Jul 6 2011, 01:54) *
Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен. А вы если делаете громкие заявления - не поленитесь привести свой код, иначе они звучат как пшик индуса sm.gif

А как бэ посмотреть это самое исправление внимательно не имеете желания? Пшикнуть нетерпится?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 22:05
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 6 2011, 00:34) *
....


CODE
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

1. Нет сброса по 0 адресу.
2. Тратится время на бездумную передачу 30(31) команды сброса по последовательному интерфейсу все зависимости потребуются они в последствии или нет. Соответственно эти пустые действия непонятны для изучающего вольного предположить в их наличии
какой-то смысл.
3. Если в функции write_PHY() нет ожидания окончания транзакции будет облом.
CODE
    for (phy_addr = 1; phy_addr <= 31; phy_addr++) {
        if ((phy_addr != DEFAULT_PHY_ADDR) &&  (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET)))
            goto phy_found;
    }

1. Опять нет контроля по 0 адресу.
2. (phy_addr != DEFAULT_PHY_ADDR) && лишнее украшение.

QUOTE (sasamy @ Jul 6 2011, 00:54) *
Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен.

Как оказалось, чукча не только не "писатель", но и не "читатель" sad.gif - типа чисто "критик". Диапазон адресов проверяется весь начиная DEFAULT_PHY_ADDR.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:18
Сообщение #62


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 01:59) *
Код
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

1. Нет сброса по 0 адресу.


Вообще-то это была копипаста с вашего кода, так что претензии не ко мне sm.gif

Цитата
2. Тратится время на бездумную передачу 30(31) команды сброса по последовательному интерфейсу все зависимости потребуются они в последствии или нет.


Вы их точно так же делаете, только в некоторых случаях меньше. На этом последовательном интерфейсе 25 МГц, а у вас первая же задержка 1 мс - о чем вообще может быть речь, эти команды пролетят когда она еще не закончится.

Цитата
3. Если в функции write_PHY() нет ожидания окончания транзакции будет облом.


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

Цитата
(phy_addr != DEFAULT_PHY_ADDR) && лишнее украшение.


Ну с этим согласен - прочитать лишний раз регистр - раз плюнуть.

Сообщение отредактировал sasamy - Jul 5 2011, 22:20
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 22:30
Сообщение #63


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sasamy @ Jul 6 2011, 02:18) *
На этом последовательном интерфейсе 25 МГц, а у вас первая же задержка 1 мс - о чем вообще может быть речь, эти команды пролетят когда она еще не закончится.

2.5МГц, а не 25, так что 30 последовательных передач займут как раз чуть меньше 1мс sm.gif
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:34
Сообщение #64


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 02:30) *
2.5МГц, а не 25, так что 30 последовательных передач займут как раз чуть меньше 1мс sm.gif


Да - ошибка, но она на смысл не влияет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 22:39
Сообщение #65


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 6 2011, 01:18) *
Вообще-то это была копипаста с вашего кода, так что претензии не ко мне sm.gif

Кто-то взялся править, причем после публикации моего подчищенного, но не сумел.
QUOTE
Вы их точно так же делаете, только в некоторых случаях меньше.

При штатном течении инициализации ровно один необходимо-достаточный сброс вместо 32.
QUOTE
На этом последовательном интерфейсе 25 МГц

Вы не знаете и типичных скоростей MDIO интерфейсов в PHY sad.gif. Ошибка на порядок.
QUOTE
я хотел всего лишь показать смысл моего замечания - тратится слишком много времени на ненужные ожидания

только в случае НЕШТАТНОЙ ситуации с PHY. Вместо этого Вы добавили те самые ненужные действия требующие времени и для случая штатной инициализации. Затраты времени меня особо не смущают, но порожден еще и тот самый говнокод ( делающий что-то зачем-то ) sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 22:46
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jul 6 2011, 02:39) *
что-то зачем-то

Вот заодно и спрошу: зачем сброс? Вопрос без всякой подковырки, просто интересно.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 22:58
Сообщение #67


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 02:39) *
Вы не знаете и типичных скоростей MDIO интерфейсов в PHY sad.gif. Ошибка на порядок.


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

Цитата
только в случае НЕШТАТНОЙ ситуации с PHY. Вместо этого Вы добавили те самые ненужные действия требующие времени и для случая штатной инициализации. Затраты времени меня особо не смущают,


Естественно - какие затраты времени, если у вас _всегда_ до чтения регистра задержка 1 мс а у меня ее нет, в ее качестве посылки сброса по всем адресам.

Цитата
но порожден еще и тот самый говнокод ( делающий что-то зачем-то ) sad.gif.


ликвидирующий задержку в 3,5 сек в случае внештатной ситуации и не вносящий никаких задержек и усложнений и без того кривого кода. Вообще достаточно было читать PHYID без всяких левых сбросов и задержек.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 23:22
Сообщение #68


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (aaarrr @ Jul 6 2011, 01:46) *
Вот заодно и спрошу: зачем сброс? Вопрос без всякой подковырки, просто интересно.

Для порядка, дабы функция инициализации всегда делала все возможное включая инициализацию PHY и после софтового сброса контроллера, если нет аппаратного сброса. Но прежде всего это ведь тест на наличие любого PHY - бит должен самосброситься по окончанию инициализации PHY. Другое дело, что время ожидания очистки в 128ms скорее всего великовато, но с другой стороны оно обычно никак не нормируется производителем PHY sad.gif. Далее еще, после чтения идентификатора, но перед инициализацией, производятся чтения default значений из регистров PHY. Это тоже диагностика PHY. Порядка 10 лет работы в качестве разработчика диагностических комплексов на VEF-е оставили хорошую привычку, в том числе при POST, делать всю диагностику по максимуму.
QUOTE (sasamy @ Jul 6 2011, 01:58) *
...достаточно открыть любой даташит.

Открыть, почитать, подумать...., допустить мысль, что кто-то тоже обладает разумом. Только очевидно это не всем дано - лучше сразу писать первое, что придет в голову sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 6 2011, 20:04
Сообщение #69


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Удалил лишнее. Прошу придерживаться рамок темы, хотя бы приблизительно.
Модератор.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 7 2011, 06:34
Сообщение #70


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Не про RMII KS8721BL, зато про Olimex/Startetkit LPC23/4. sm.gif

Кто-нибудь переопределял приоритеты на шине AHB1?

При записи на sd-карточку начинает срываться изображение на TFT. Работа с sd через DMA - кейловский драйвер (MCI_LPC24xx.c).
И DMA и LCD подключены к AHB1. В регистре AHBCFG1 настроил приоритеты так - LCD, CPU, DMA, AHB1, USB. После чего в процедуре записи на SD-карту вылетаю в Data-Abort. Если приоритет DMA выше LCD - то все хорошо, но изображение срывается.

Проблему решил уменьшением частоты тактирования LCD, но если кто вдруг в курсе настройки AHB1 буду признателен совету. sm.gif


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2011, 10:22
Сообщение #71


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Lotor @ Jul 7 2011, 10:34) *
Проблему решил уменьшением частоты тактирования LCD, но если кто вдруг в курсе настройки AHB1 буду признателен совету. sm.gif

В этом случае следовало бы разобраться, что именно вызывает Data Abort при работе с SD.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 8 2011, 07:07
Сообщение #72


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(aaarrr @ Jul 7 2011, 14:22) *
В этом случае следовало бы разобраться, что именно вызывает Data Abort при работе с SD.


В Data Abort вылетает в функции fwrite - кейловская библиотека Flash File System. Исходников нет, дизассемблирование показывает, что проблемная инструкция STR R0, [R4, #0x0C], в R4 нули. Получается пытается что-то сохранить по адресу в памяти программ... В общем или таки кейловская библиотека чудит, или я не знаю тонкостей настройки приоритетов AHB.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
FinaC
сообщение Aug 10 2011, 06:07
Сообщение #73





Группа: Новичок
Сообщений: 1
Регистрация: 30-09-10
Пользователь №: 59 841



Цитата(Lotor @ Jul 7 2011, 12:34) *
Не про RMII KS8721BL, зато про Olimex/Startetkit LPC23/4. sm.gif

Кто-нибудь переопределял приоритеты на шине AHB1?

При записи на sd-карточку начинает срываться изображение на TFT. Работа с sd через DMA - кейловский драйвер (MCI_LPC24xx.c).
И DMA и LCD подключены к AHB1. В регистре AHBCFG1 настроил приоритеты так - LCD, CPU, DMA, AHB1, USB. После чего в процедуре записи на SD-карту вылетаю в Data-Abort. Если приоритет DMA выше LCD - то все хорошо, но изображение срывается.

Проблему решил уменьшением частоты тактирования LCD, но если кто вдруг в курсе настройки AHB1 буду признателен совету. sm.gif


Тоже много времени потратил на то, чтобы разобраться с приоритетами DMA и LCD. В итоге где-то на иностранном форуме раздобыл следующую настройку приоритетов:

AHBCFG1 = 0x10000144;

До этого тоже изображение дёргалось при использовании DMA. Сейчас всё идеально )
SD не использую, так что не смогу подсказать, как тут быть. Но думаю, что это поможет тем, кто также не использует SD.
Go to the top of the page
 
+Quote Post

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

 


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


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