w5300맵핑관련질문입니다.

dsp(28346)와 w5300을 사용하여 이더넷 통신을 하려고 합니다.

DSP관련 예제가 없어서 AVR용 예제를 참고하고 있습니다.

w5300을 사용하려면 레지스터를 맵핑시켜줘야 하는 것으로 알고 있는데

AVR용 예제에서 어느부분이 맵핑을 해주는 부분인지 모르겠습니다.

  1. 어떻게 맵핑을 해주나요?

  2. MR만 맵핑하면 되는 건가요?

DSP가 지원하는 Address 공간에서 사용하지 않는 한 공간을 W5300 용으로 설정하시면 됩니다.
예로, DSP가 24bit address를 사용한다고 가정하고, 아래와 같은 Address Map을 가진다면, W5300은 0xC00000 ~ 0xFF0000의 특정 블럭으로 할당 할 수 있습니다.
Code memory : 0x000000 ~ 0x7F0000
Data memory : 0x800000 ~ 0xBF0000
Unused : 0xC0000 ~ 0xFFFFFFF

W5300은 Direct bus mode 와 Indirect bus mode 두가지를 지원합니다.
Address 공간이 상기 예처럼 크지 않을 경우 즉 Memory 할당공간이 넉넉치 않을 경우 indirect bus mode를 사용하시고,
MR, IDM_AR, IDM_DR 레지스터만 할당합니다. 이 때 필요한 Memory는 공간은 3bytes만 필요하므로 System의 Memory 공간을 많이 절약할 수 있습니다.

답변 감사드립니다.

위 질문에 이어서 문의 드릴것이 하나 더 있습니다.

  1. 맵핑하는 방법을 잘 모르겠습니다.

DSP내 공간 0x100000~0x1fffff에 맵핑을 하려고 합니다.

iinchip_conf.h 파일에 [ #define DEF_IINCHIP_MAP_BASE 0x08000000 ] 이부분을

                             [ #define __DEF_IINCHIP_MAP_BASE__ 0x00100000  ] 로 수정만 해주면 되는건가요?

아니라면 어떻게 맵핑을 해야하나요?

  1. ping 테스트를 하는방법이

cmd 창에서
ping xxx.xxx.xxx.xxx(프로그램에서 설정한 IP)
로 하는게 맞나요?

네 말씀하신대로
Map 정의는 #define DEF_IINCHIP_MAP_BASE 0x00100000 ] 로 하시면 됩니다.

Ping Test는 dos command 에서 W5300에 설정된 IP로 ping xxx.xxx.xxx.xxx 하시면 됩니다.
이때 주의 할 점은 PC쪽도 같은 Subnet을 사용하는 IP로 설정하셔야 합니다.
예로, W5300이 192.168.0.100이고 subnet 255.255.255.0 이라고 하면, PC쪽도 192.168.0.XXX subnet 255.255.255.0으로 설정하셔야 합니다. PC쪽 설정은 [url]http://wizwiki.net/wiki/doku.php?id=osh:cookie:ip_conf_b[/url]를 참조하세요.

도와 주신 덕분에 ping test 까지 확인하였습니다.

그런데 ax1을 이용하여 데이터 출력을 확인하려 하는데 아무런 반응이 없습니다.

그래서 코드를 확인해 본 바

loopback_tcpc함수 안에

switch 판별 구문에서 getSn_SSR(s)의 값이 계속 256으로 나오는 것을 확인하였습니다.

귀사에서 제공하는 예제 프로그램의 설정을 그대로 이용하고 있는데,

설정을 다시해줘야 하나요?

현재 dsp를 사용하여 테스트하고 있습니다.

그리고 예제프로그램의 변수들이 거의 uint8로 선언되어 있는데

DSP(32bit프로세서)를 사용할 때는 이부분들을 수정해야 하나요? 상관이 없나요?

Sn_SSR 값은 0xFF을 가질 수 없습니다.
Register Read/Write에 문제가 있어 보입니다.

혹시 16bit Data bus를 사용하신다면, Endian 문제가발생할 수 있으니 이부분 확인부탁드립니다.
W5300은 특별히 설정을 하지 않는 이상 Big-Endian(낮은 메모리주소에 가장 큰 값이 저장)을 지원합니다.
또, 16bit Data bus를 사용할 경우 Byte Addressing이 되는지도 확인 부탁드립니다.

그리고 변수 Type은 Compiler가 지원하는 Type으로 변경하셔도 무방합니다. uint8 은 unsigned 8bit data를 지정합니다.