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

 
 
> 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
Ответов
KRS
сообщение Mar 28 2007, 11:07
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Я использовал wiznet подключенный к LPC2103 шина иммитировалсь софтом в индирект моде
Чтобы wiznet заработал и стал отвечать на пинги нужно только записать в него MAC и IP адреса
напрямую с компом конечно только кросс кабелем

Вот кусок инициализации
с wiznet ом очень удобно работать в indirect mode
здесь wzRead читает регистр данных wzWrite запсиывает, wzSetAddr устанавливает адрес
у меня еще к тому же было 2 wiznetа подсоеденино поэтому еще параметр chip есть просто биты чип селекта


Код
#ifndef __W3150_H__
#define __W3150_H__

#define WZ_MODE            0x00

#define WZ_GATEWAY         0x01
#define WZ_SUBNET          0x05
#define WZ_MAC             0x09
#define WZ_IP              0x0F

#define WZ_RXMEM_CFG       0x1A
#define WZ_TXMEM_CFG       0x1B

//Mode reg **************************
#define WZS_MODE           0x00
#define WZM_CLOSED         0
#define WZM_TCP            1
#define WZM_UDP            2
#define WZM_IPRAW          3
#define WZM_MACRAW         4
#define WZM_PPPoE          5

//Command reg ***********************
#define WZS_CMD            0x01
#define WZC_OPEN           0x01
#define WZC_LISTEN         0x02
#define WZC_CONNECT        0x04
#define WZC_DISCON         0x08
#define WZC_CLOSE          0x10
#define WZC_SEND           0x20
#define WZC_SENDMAC        0x21
#define WZC_SENDKEEP       0x22
#define WZC_RECV           0x40

//***********************************
#define WZS_INT            0x02
#define WZS_STA            0x03
#define WZS_SPORT          0x04
#define WZS_MAC            0x06
#define WZS_IP             0x0C
#define WZS_DPORT          0x10
#define WZS_TTL            0x16

#define WZS_TXFS           0x20
#define WZS_TXRD           0x22
#define WZS_TXWR           0x24

#define WZS_RXS            0x26
#define WZS_RXRD           0x28


typedef struct {
  uint8_t DefGateway[4];
  uint8_t IpMask[4];
  uint8_t Mac[6];
  uint8_t Ip[4];
  uint8_t MemCfg[2];
} wzFullStaticIpConfig;

#pragma inline=forced
uint8_t wzRead(void)
{
  uint_fast8_t r;
  RDOn();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  r=AD0_PORT;
  RDOff();
  return r;
}

#pragma inline=forced
void wzWrite(uint8_t d)
{
  AD0_PORT=d;
  __no_operation();
  WROn();
  __no_operation();
  __no_operation();
  __no_operation();
  WROff();
}

#pragma inline=forced
void wzSetAddr(unsigned addr,unsigned chip, bool read)
{
  A0_PORT=chip | (1<<A0_PIN);
  FIO0DIR2=0xFF;
  wzWrite(addr);
  A0_PORT=chip | (1<<A1_PIN);
  wzWrite(addr>>8);
  A0_PORT=chip | (1<<A1_PIN) | (1<<A0_PIN);
  if (read) FIO0DIR2=0x00;
}

#pragma inline=forced
static void wzFullStaticInit(const wzFullStaticIpConfig *Cfg, unsigned chip)
{
  uint8_t  *tmp;
  uint8_t Len;

  A0_PORT=chip;
  FIO0DIR2=0xFF;
  wzWrite(0x80);
  wzWrite(0x07);
  wzSetAddr(WZ_GATEWAY,chip,false);
  tmp=(uint8_t *)Cfg;
  Len=18;
  do {
    wzWrite(*tmp++);
  }while(--Len);
  wzSetAddr(WZ_RXMEM_CFG,chip,false);
  wzWrite(*tmp++);
  wzWrite(*tmp++);
}

/#endif /*__W3150_H__*/
Go to the top of the page
 
+Quote Post



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

 


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


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