Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблемы с получением доступа к EEPROM у чипа i82546 (эзернет)

9.8K
05 июня 2007 года
Фёдор Мегатроно
8 / / 27.05.2005
Мучаю этот нещасный интеловский изернет с его епромом выносным.

Столкнулся с непоняткой: по какой-то причине чип (контроллер интеловский) не даёт разрешение на работу с его епромом. Хотя я всё делаю по инструкции.

Вот в даташите написано:

To directly access the eeprom, software should follow these steps:
1. Write a 1b to the EEPROM request bit (EECD.REQ)
2. Read the EEPROM grant bit (EECD.GNT) until it becomes 1b. It remains 0b as long as the hardware is accessing the EEPROM.
3. можете читать и писать теперь

Вот мой код:

(
в регистре EECD:
6 бит это REQ,
7 бит это GNT,
5-4 биты это FWE (доступ на запись)
)

(
функции InDword и OutDword соответственно в порты пишут и читают.
)


/* ----------------------------------------------------------------- */
void GntEEPROMAcces( DWORD *EECDAddr )
{
DWORD Reg;

/* reset REQ, GNT and FWE */
FreeEEPROMAccess( EECDAddr );
//(тут просто нолики в эти биты записываются для надёжности)

/* 1b to REQ */
Reg = InDword( *EECDAddr );
Reg = Reg | 0x40;
OutDword( Reg, *EECDAddr );

/* waiting 1b from GNT */
while ( 1 ) {
Reg = InDword( *EECDAddr );
if ( Reg & 0x80 ) break;
}

/* 10b to FWE */
Reg = InDword( *EECDAddr );
Reg = Reg & 0xFFFFFFCF;
Reg = Reg & 0x20;
OutDword( Reg, *EECDAddr );

return;
} /* --------------------------------------------------------------- */
Вот и весь урюк в том, что вот вот этой еденицы в GNT я могу ждать хоть до завтрашнего утра.. не ставит он её и всё тут.
252
06 июня 2007 года
koderAlex
1.4K / / 07.09.2005
1) предварительное обнуление некчему делать .
2) почему "InDword и OutDword" ? насколько я помню еепром имеют ,обычно, байтовую адресацию .
3) еепром низкоскоростное устройство - желательно делать задержки .
4) про поле FWE в приведённом тобой описании ничего нету .
9.8K
06 июня 2007 года
Фёдор Мегатроно
8 / / 27.05.2005
ёмаё
чип 82546 это ЭЗЕРНЕТ КОНТРОЛЛЕР. Через регистр которого есть доступ к микрухе еепром.

регистры контроллера 32-битные и доступ к ним 32-битный


Про работу с самой микрухой я не говорю. с ней всё ясно.

Сейчас речь о том, то сам контроллер (Master в случае SPI) не хочет давать права на работу с микрухой (его SPI Slave)
252
06 июня 2007 года
koderAlex
1.4K / / 07.09.2005
кидай доку - почитаем .
9.8K
07 июня 2007 года
Фёдор Мегатроно
8 / / 27.05.2005
http://developer.intel.com/design/network/manuals/8254x_GBe_SDM.htm

вот это если я ничё не напутал.

смотри страницу 248


но я боюсь, что тут кроется какая-то спецефическая загагулина.. которую надо сделать перед обращением к этим регистрам (REQ и GNT) .. только негде об этом узнать =\
252
07 июня 2007 года
koderAlex
1.4K / / 07.09.2005
страница 96 : "The EEPROM interface trace routing is not critical because the interface runs at a very slow speed."
там же раздел "5.3.1 Software Access" .
я так понял есть два метода :
1) только чтение через регистр EERD .
2) чтение/запись через EEC . но в нём надо програмно подавать тактовые сигналы .
6.2K
08 июня 2007 года
Федя Мегатронов
4 / / 08.02.2004
Даа .. так понимаешь в чём фишка:

доступ к интерфейсу SPI реализованному через регистр EECD возможен только после того как чип на мой REQ ответит единичкой в GNT ...

до тех пор пока в GNT 0 - я не могу ничё писать в DI, DO, SK и CS . в этом то и весь урюк.


А функций EERD мне мало т.к. необходимо ещё и писать в микруху.
252
08 июня 2007 года
koderAlex
1.4K / / 07.09.2005
попробуй предварительно ресет сделай .
а обнуление всётаки убери .
и после чтения /записи тож ресеть .
а ChipSelect это не выбор чипа , а направление передачи данных . :)
9.8K
08 июня 2007 года
Фёдор Мегатроно
8 / / 27.05.2005
какой ты именно ресет имеешь в виду?


CS это выбор чипа ). по спецификации SPI к одному Master чипу может быть подведено несколько Слэйвов. И соответственно у мастера будет несколько линий CS (подведённых к каждой микрухе).
по этому по какому CS ты еденичку пустишь - с тем чипом общатся и будешь.
252
08 июня 2007 года
koderAlex
1.4K / / 07.09.2005
Вот этот , для начала :"or software commanded EEPROM reset
(CTRL_EXT.EE_RST)." . стр 93.
"Chip select input to the EEPROM
The EECS output signal is mapped to the chip select of the
EEPROM device. Software enables the EEPROM by writing a 1b
to this bit." стр 228 . примечание к CS . учитывая последнее предложение , этот бит всётаки переключает режим запись/чтение .
252
08 июня 2007 года
koderAlex
1.4K / / 07.09.2005
Вот ещё нашёл , секция 13.3 : "The EEPROM configuration bit ”Force CSR Read Split” (Initialization Control Word 2, word 0Fh) ity to configure the device to split all internal register accesses, rather than vior for the registers listed." . указание на эту сноску есть в аппендиксе А .
9.8K
09 июня 2007 года
Фёдор Мегатроно
8 / / 27.05.2005
сейчас смотрю код BSD драйвера этого контроллера и пока не вижу кардинальных отличий в работе с епромом. разве что много лишних действий которые меня не интересуют.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог