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

 
 
> 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
Ответов (1 - 13)
boom
сообщение Feb 26 2009, 06:39
Сообщение #2


Участник
*

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



взять пример для 533(у него 16 разрядная шина) и модифицировать его под 561.
Go to the top of the page
 
+Quote Post
vik0
сообщение Feb 26 2009, 12:37
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



Ничего модифицировать не надо.
Достаточно правильно настроить EBIU (указать на необходимость работы с нужным банком асинхронной памяти в 16-ти битном режиме - биты 4-7 регистра EBIU_AMGCTL)
Go to the top of the page
 
+Quote Post
boom
сообщение Feb 26 2009, 13:18
Сообщение #4


Участник
*

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



Ну коль пошла такая пьянка, режь последний огурец. Открываем проект готового драйвера, который лежит в примерах для 561 и видим, что вверху стоит определение
Код
#if !defined(__ADSPBF561__)
#define USE_16_BIT
#endif

Так вот выносим дефайн за пределы условия, что бы он был определён всегда, настраиваем фио(прерывание, сброс и т.п.) для работы с лан91ц111, компелим проект и подставляем в свой проект новую длб.
Go to the top of the page
 
+Quote Post
Мухаммор
сообщение Feb 27 2009, 06:36
Сообщение #5


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

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



Цитата
настраиваем фио(прерывание, сброс и т.п.) для работы с лан91ц111


А вот можно поподробнее?
Кроме 16-разрядной шины и ABE3->Lan_addr_0 там все как в ките.
Go to the top of the page
 
+Quote Post
boom
сообщение Feb 27 2009, 07:03
Сообщение #6


Участник
*

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



Тогда должен работать без проблем. Лишь необходимо определить
Код
#define USE_16_BIT

Далее библиотеку из каталога Release или Debug lan91c111bf561.dlb заменить существующую в каталоге \Analog Devices\VisualDSP x.x\Blackfin\lib
Go to the top of the page
 
+Quote Post
Мухаммор
сообщение Feb 27 2009, 07:07
Сообщение #7


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

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



Ну, это понятно.

Спасибо. Сейчас попробую.
Go to the top of the page
 
+Quote Post
boom
сообщение Feb 27 2009, 07:08
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 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
Мухаммор
сообщение Feb 27 2009, 09:48
Сообщение #9


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

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



А выводы контроллера lan91c111 BE[3:1] - как подключать?
У меня так:

lan91c111 BF561
--------------------------
BE0 ------------> ABE0
BE1 ------------> ABE1

а выводы:

BE2 ---> VCC
BE3 ---> VCC

Правильно????

Сообщение отредактировал Мухаммор - Feb 27 2009, 09:50
Go to the top of the page
 
+Quote Post
boom
сообщение Feb 27 2009, 13:19
Сообщение #10


Участник
*

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



похоже на правду. нолучше посмотрите схему EzKit USB-LAN extender
Go to the top of the page
 
+Quote Post
Мухаммор
сообщение Feb 27 2009, 13:31
Сообщение #11


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

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



Vik, Boom - cпасибо огромное за подсказки...
Go to the top of the page
 
+Quote Post
boom
сообщение Feb 27 2009, 14:35
Сообщение #12


Участник
*

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



Не за что smile.gif. Отпишитесь о результатах.
Go to the top of the page
 
+Quote Post
vik0
сообщение Feb 27 2009, 18:56
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



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

Цитата(Мухаммор @ Feb 27 2009, 15:31) *
Vik, Boom - cпасибо огромное за подсказки...

Всегда пожалуйста smile.gif
Go to the top of the page
 
+Quote Post
Мухаммор
сообщение Mar 3 2009, 15:38
Сообщение #14


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

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



Все отлично! Пашет как надо. 08.gif
Go to the top of the page
 
+Quote Post

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

 


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


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