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

 
 
> MCF5485: проблема с FEC DMA
NightRadio
сообщение Jan 29 2009, 10:56
Сообщение #1





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



Всем привет!

1)
Имеется контроллер ColdFire MCF5485.
Пишу простецкое standalone приложение, которое должно в цикле отправлять пакет (42 байта) по FEC0 и FEC1. К письму прикрепил исходники. Отправка пакетов идет в fec_test.c -> fec_test():
Код
int pkt_num = 0;
while( 1 )
{
    dprint( "... fec0 pkt%d\n", pkt_num );
    fec_sendpacket( &g_fec_driver[ 0 ] );
    dprint( "... fec1 pkt%d\n", pkt_num );
    fec_sendpacket( &g_fec_driver[ 1 ] );
    pkt_num++;
}

После отправки третьего (а иногда и первого) пакета прога сваливается в прерывание 55 (вектор 119) - это CAN1 ERROR. Во-первых, CAN в этот момент выключен. А во-вторых, это прерывание вообще замаскировано и не может быть вызвано! Смахивает на то, что какие-то траблы с отправкой данных по DMA (т.к. при отключенном DMA ошибок нет), но что именно может вызвать замаскированное прерывание, понять не могу.
Кроме того, если я убираю макросы m68k_disable_interrupts() и m68k_enable_interrupts() из функции fec_sendpacket() (код приведен ниже), то все вроде бы как начинает работать. Но где тут логика?
Код
...
// Tell the DMA to continue the transmission
dprint( "TXdma %d\n", sc->dma_tx_channel );
MCD_continDma( sc->dma_tx_channel );

// Increment tx pointer
sc->dma_tx_ptr = ( sc->dma_tx_ptr + 1 ) & FEC_TX_INDEX_MASK;

int level;
m68k_disable_interrupts( level );
volatile int a, b = 0;
for( a = 0; a < 512; a++ ) b++;
m68k_enable_interrupts( level );
for( a = 0; a < 32; a++ ) b++;
...


2)
Другая проблема. Тоже с ethernet'ом. В цикле отправляю кучу пакетов на другой модуль или на писюк. В один прекрасный момент пакет теряется. При этом DMA сообщает об успешной отправке и сам FEC сообщает о том, что пакет ушел. В микросхеме физики (KS8721BLI) никаких ошибок не устанавливается. Но на другой стороне тишина - ничего не получаем.

Может, кто-то сталкивался с подобным, или есть умные мыли на этот счет.
Заранее спасибо!

Прикрепленный файл  mcf5485_fec_test.rar ( 60.5 килобайт ) Кол-во скачиваний: 151


Сообщение отредактировал NightRadio - Jan 29 2009, 10:57
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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