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

 
 
> w3150 и внешняя память., HELP
Sarez
сообщение Mar 28 2007, 10:32
Сообщение #1


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

Группа: Новичок
Сообщений: 75
Регистрация: 17-08-06
Из: Минск
Пользователь №: 19 630



Приветствую всех! Народ , помогите пожалуйста - может кто имел дело с аппаратным стеком w3150. Проект горит - дальше некуда, а я даже пингануть не могу.... Работает связка NM7010B ( модуль на основе W3150) и LPC2214. Модуль висит на CS2, BCFG2 настроил на минимальное быстродействие, работаю в IAR 4.40. Инициализацию регистров BCFG и PINSEL провожу в mac файле. Возникает ряд вопросов:
1) При соединении устройства с компьютером напрямую используется стандартный патч-корд, или же крос-овер?
2) Насколько я понимаю, работа со стеком проходит как работа с обычной внешней памятью. Для этого мне достаточно инициализировать корректными значениями регистр BCFG ? Или же необходимо выполнить еще какие-то действия, чтобы контроллер увидел стек?
3) Может кто работал с родным wiznetовским драйвером ( у меня версия 1.2 ). Подскажите пожалуйста в файле iinchip_conf.h в участке кода, где определяютя базовый адрес модуля и базовые адреса памяти приема и передачи ставить ставить нулевой адрес и соответственно COMMON_BASE + 0x4000 для TXBUF и соответственно COMMON_BASE + 0x6000 для RXBUF или же там стоит указывать в качестве базового адреса адрес 82000000 - начальный адрес для 2 блока внешней памяти, на адресах которого висит стек ? Т.е :

/**
* __DEF_IINCHIP_MAP_xxx__ : define memory map for iinchip
*/
#define __DEF_IINCHIP_MAP_BASE__ 0x8000 \\ какой адрес необходимо указать?
#if (__DEF_IINCHIP_BUS__ == __DEF_IINCHIP_DIRECT_MODE__)
#define COMMON_BASE __DEF_IINCHIP_MAP_BASE__
#else
#define COMMON_BASE 0x0000
#endif
#define __DEF_IINCHIP_MAP_TXBUF__ (COMMON_BASE + 0x4000) /* Internal Tx buffer address of the iinchip */
#define __DEF_IINCHIP_MAP_RXBUF__ (COMMON_BASE + 0x6000) /* Internal Rx buffer address of the iinchip */


Может быть у кого есть простейший вариант прошивки для арма? Хотя - бы чтобы можно было пингануть, убедится, что модуль жив? Или может у кого есть опыт - указать, что я неправильно делаю...Очень прошу помочь.....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sarez
сообщение Mar 28 2007, 11:18
Сообщение #2


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

Группа: Новичок
Сообщений: 75
Регистрация: 17-08-06
Из: Минск
Пользователь №: 19 630



to KRS:
Спасибо большое!!!! Сейчас буду пробовать.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 28 2007, 12:25
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Sarez @ Mar 28 2007, 10:18) *
Спасибо большое!!!! Сейчас буду пробовать.
Обратите внимание (сам на это налетел): У ARM многобайтовые переменные хранятся в формате Little Endian(младший байт по меньшему адресу) а у визнета - Big Endian. Т.е. даже если вы его повесите как внешнюю память, то писать все равно придется побайтно или перед записью перетасовывать байты. Это относится и к 4-байтным указателям и к регистрам IP-адресов и к регистрам портов. Вот моя инициализация для LPC2214 (визнет висит на CS3):
Код
    BCFG3 = (0<<LPC_IDCY) | (0x7<<LPC_WST1) | (0<<LPC_RBLE) | (0x7<<LPC_WST2) | (0<<LPC_WP) | (0<<LPC_BM) | (0<<LPC_MW); // задержки можно уменьшать, не было времени проверить.
   {
        uint32_t Tmp = PINSEL2 & (0xF00C160F);
        PINSEL2 = Tmp |
            (1UL<<2)|            //P1[26..31] = JTAG
            (0UL<<3)|            //P1[16..25] = GPIO
            (1UL<<4)|            // P2.[0..15] = D[0..15], P1.0 = CS0, P1.1 = OE, P3.31 = BLS0, P3.30 = BLS1,
                                // P2[16..29] = GPIO, P2[30, 31] = GPIO/AN, P3[28, 29] = GPIO/AN
            (0UL<<6)|(0UL<<7)|    // P3.29 = GPIO, P3.28 = GPIO
            (1UL<<8)|            // P3.27 = WE
            (1UL<<11)|            // P3.26 = CS1
            (0UL<<13)|            // P3.23 = GPIO
        //    (1UL<<14)|            // P3.25 = CS2
            (1UL<<16)|            // P3.24 = CS3
            (0UL<<20)|(0UL<<21)|(0UL<<22)|    // P2[28..31] = GPIO
            (1UL<<23)|(1UL<<24)|    //P3.0 = A0, P3.1 = A1
            (6UL<<25);            //P3[2..19] = A[2..19]
    }


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:51
Рейтинг@Mail.ru


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