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

 
 
> BF561: ethernet на 16-разрядной шине
Мухаммор
сообщение Feb 25 2009, 16:00
Сообщение #1


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

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



Имеется плата процессора BF561 и сетевая плата с контроллером lan91c111, подключенная посредством 16-разрядной шине данных, а не по 32, как в КИТе.

По умолчанию библиотека lan91c111.dlb предоставляет функции для работы с ethernet-контроллером lan91c111 по 32-разрядной шине данных. Какие изменения нужно произвести в исходном коде библиотеки lan91c111.c (/blackfin/lib/src/drivers/ethernet/lan91c111/lan91c111.c), чтобы можно было работать по 16-битной шине? Кто сталкивался с подобной проблемой?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
boom
сообщение Feb 27 2009, 07:08
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 14-09-06
Пользователь №: 20 368



И соответственно настроить AMS3 банк на работу по 16 битной шине.
Код
/*********************************************************************
*
*    Function:        pddOpen
*
*    Description:    Opens the Network Driver and does initialization.
*
*********************************************************************/

static u32 adi_pdd_Open(                // Open a device
    ADI_DEV_MANAGER_HANDLE    ManagerHandle,    // device manager handle
    u32                     DeviceNumber,    // device number
    ADI_DEV_DEVICE_HANDLE     DeviceHandle,    // device handle
    ADI_DEV_PDD_HANDLE         *pPDDHandle,    // pointer to PDD handle location
    ADI_DEV_DIRECTION         Direction,        // data direction
    void            *pCriticalRegionArg,        // critical region imask storage location
    ADI_DMA_MANAGER_HANDLE    DMAHandle,        // handle to the DMA manager
    ADI_DCB_HANDLE            DCBHandle,        // callback handle
    ADI_DCB_CALLBACK_FN        DMCallback        // device manager callback function
)
{
    u32             Result;        // return value
    void             *CriticalResult;
    ADI_ETHER_LAN91C111_DATA *dev= &EtherDev;    


    // check for errors if required
#ifdef ADI_ETHER_ERROR_CHECKING_ENABLED
    if (DeviceNumber > 0) {        // check the device number
        return (ADI_DEV_RESULT_BAD_DEVICE_NUMBER);
    }
#endif

    // insure the device the client wants is available
    Result = ADI_DEV_RESULT_DEVICE_IN_USE;
    //CriticalResult = adi_int_EnterCriticalRegion(pCriticalRegionArg);

    // Open the device
    if(!dev->Open)
    {
        // initialize the device settings
        memset(dev,0,sizeof(ADI_ETHER_LAN91C111_DATA));

        dev->CriticalData = pCriticalRegionArg;
        dev->DeviceHandle = DeviceHandle;
        dev->DCBHandle = DCBHandle;
        dev->DMCallback = DMCallback;
        dev->Direction = Direction;
        dev->Started = false;
        dev->bEnableGracefulShutdown = false;

#if ( defined(__ADSPBF533__) || defined(__ADSPBF537__))
        // default ivg levels
        dev->RXIVG  = ik_ivg8;
        dev->TXIVG  = ik_ivg8;
        dev->ERRIVG = ik_ivg8;
#endif /* __ADSPBF533__ */

#ifdef __ADSPBF561__
        // default ivg levels
        dev->RXIVG  = ik_ivg11;
        dev->TXIVG  = ik_ivg11;
        dev->ERRIVG = ik_ivg11;
        // set bit 7 to zero - 32bit access to async-bank3
        *pEBIU_AMGCTL &= 0xFF7F;
#endif /* __ADSPBF561__ */

#if defined(__ADSPBF538__)
        // default ivg levels for PF interrupt B
        dev->RXIVG  = ik_ivg12;
        dev->TXIVG  = ik_ivg12;
        dev->ERRIVG = ik_ivg12;
#endif /* __ADSPBF538__ */

        // This is required as after opening the device we will query
        // the EEPROM to get the MAC (Async Bank-3)
        //

          //  *pEBIU_AMGCTL   |= 0xF;  Закрываем и вместо этого ставим
*pEBIU_AMGCTL = 0x8E;


        dev->Open = true;
        Result = ADI_DEV_RESULT_SUCCESS;
    }

    // exit critical region
    //
    //adi_int_ExitCriticalRegion(CriticalResult);

    if (Result != ADI_DEV_RESULT_SUCCESS) return (Result);

    *pPDDHandle = (ADI_DEV_PDD_HANDLE *)&EtherDev;
    return(ADI_DEV_RESULT_SUCCESS);
}


Сообщение отредактировал boom - Feb 27 2009, 07:11
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Мухаммор   BF561: ethernet на 16-разрядной шине   Feb 25 2009, 16:00
- - boom   взять пример для 533(у него 16 разрядная шина) и м...   Feb 26 2009, 06:39
- - vik0   Ничего модифицировать не надо. Достаточно правиль...   Feb 26 2009, 12:37
- - boom   Ну коль пошла такая пьянка, режь последний огурец....   Feb 26 2009, 13:18
- - Мухаммор   Цитатанастраиваем фио(прерывание, сброс и т.п.) дл...   Feb 27 2009, 06:36
- - boom   Тогда должен работать без проблем. Лишь необходимо...   Feb 27 2009, 07:03
- - Мухаммор   Ну, это понятно. Спасибо. Сейчас попробую.   Feb 27 2009, 07:07
- - Мухаммор   А выводы контроллера lan91c111 BE[3:1] - как подкл...   Feb 27 2009, 09:48
- - boom   похоже на правду. нолучше посмотрите схему EzKit U...   Feb 27 2009, 13:19
- - Мухаммор   Vik, Boom - cпасибо огромное за подсказки...   Feb 27 2009, 13:31
- - boom   Не за что . Отпишитесь о результатах.   Feb 27 2009, 14:35
- - vik0   По-хорошему, код инициализации внешней шины лучше ...   Feb 27 2009, 18:56
- - Мухаммор   Все отлично! Пашет как надо.   Mar 3 2009, 15:38


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

 


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


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