:::: MENU ::::
Browsing posts in: Network


MAC 주소 관련

예전에 쓴 포스팅 MAC address 할당받기의 글에서 MAC address를 할당 받기위해서는 $1,600이 든다고 적었는데, 최근에 보니 $2,500로 올랐다. 그리고 추가적인 정보는 MAC주소 신청시 부여받는 숫자에 따라서, 3가지가 있다는 것.

관련 추가적인 정보


Arduino Ethernet 라이브러리 업데이트

WZnet 칩 W5100, W5200과 W5500을 지원하는 통합 아두이노 라이브러리인 Arduino Ethernet 라이브러리를 업데이트 했다. 기존 코드에서 달라진 점은 다음과 같다.

  • Arduino IDE 1.5.x 지원 : Arduino Due를 지원하기 위함.
  • Due용  SPI 드라이버 추가
  • W5200및 W5500의 경우 SPI드라이버 속도를 높였다. 무려 42Mhz까지 지원
  • w5100::read_data함수의 파라미터의 형 변경
  • flush() 함수 추가

Arduino IDE 1.5.xx를 지원하기 위해서는

  • 32비트 SAM용 SPI 드라이버가 추가 되야한다.
  • IDE 1.5.x의 폴더 구조가 바뀌어서 헤더파일 include가 변경된다.아래 그림 참고…  예를 들면 #include “w5100.h”가 #include “utility/ w5100.h” 이런 식으로…

Arduino_Folder

  • AVR코드와의 구별은 #if defined (ARDUINO_ARCH_AVR)로 한다.

W5500 SPI

W5500_SPI

데이터 시트에는 이론상 80Mhz까지 가능하다고 나오지만 실제로는 33Mhz 정도가 최대 SPI clock으로 명기해 놓고 있다. 그리고 Atmel SAM에서  SPI clock은 다음과 같이 결정된다. 즉 메인 클럭을 분주해서 사용을 하는데, 아두이노에서는 84Mhz를 메인으로 사용하므로 14Mhz, 28Mhz, 42Mhz, 84Mhz가 설정이 가능하다.

SAM_SPI

 

아두이노 코드에서는 다음과 같이 클럭을 분주해서 42Mhz가 가능하다. 1로 분주하면 84Mhz 인데, 칩에서는 80Mhz까지만 지원하므로 84Mhz는 지원이 안된다. 42에서 84는 갭이 크다…

참고로 아두이노에서 W5100의 SPI는 4Mhz로 설정이 되어 있으니, 거의 10배 이상이 빨라짐~~


TCP, UDP 포트 넘버

TCP, UDP의 포트 넘버 0~1023번까지는 Well-Known Port로 불리우며 IANA에서 TCP 및 UDP 포트넘버의 일부이다. 일반적으로 포트 번호는 다음과 같이 세 가지로 나눌 수 있다.

  • 0번 ~ 1023번: 잘 알려진 포트 (well-known port)
  • 1024번 ~ 49151번: 등록된 포트 (registered port)
  • 49152번 ~ 65535번: 동적 포트 (dynamic port)

더 자세한 정보:  http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#cite_note-IANA-1

따라서 응용프로그램에서 다른 포트와 충돌을 일으키지않고 사용을 하려면 49152 ~ 65535사이의 포트를 사용을 한다. 만약 Registered Port에 등록을 하려면 아래 주소에서 신청을 하면 되는데, IANA에서 심사후 등록여부를 결정한다고 한다. http://www.iana.org/cgi-bin/usr-port-number.pl


사설 IP 대역

이런 것도 찾아볼 때가 있으니, 정리~

  • A 클래스 : 10.0.0.0 ~ 10.255.255.255
  • B 클래스 : 172.16.0.0 ~ 172.31.255.255
  • C 클래스 : 192.168.0.0 ~ 192.168.255.255


Ethernet Auto negotiation – Duplex mismatch

이더넷 네트워크에서 auto negotiation은 PHY에서 담당하는 기능으로 전송선로상에서 상대방(peer)의 속도 및 half/ full duplex여부를 자동으로 결정하는 plug and play  같은 기능이다. 이 기능은 1997년에 Fast Ethernet IEEE802.3u 표준으로 들어갔고, 1999년에 Gigabit Ethenet 802.3ab 표준이 되었다.

Fast Ethernet 일 경우 1)양쪽이 auto일 경우 2) auto – 10/100 고정일 경우 3) 10/100고정 – 10/100 고정일 경우가 발생한다. 양쪽이 auto negotiation일 경우는 속도가 높고 duplex쪽으로 잡힌다. 즉 다음과 같은 우선 순위에 의해 속도 및 duplex가 결정이 된다.

  1. 1000BASE-T full duplex
  2. 1000BASE-T half duplex
  3. 100BASE-T2 full duplex
  4. 100BASE-TX full duplex
  5. 100BASE-T2 half duplex
  6. 100BASE-T4
  7. 100BASE-TX half duplex
  8. 10BASE-T full duplex
  9. 10BASE-T half duplex

하지만 한쪽만 auto이고 다른 한 쪽이 10/100으로 고정을 할 경우 속도는 10/100잘 설정이 되는데 duplex에 문제가 발생할 수 있다. 여러 경우의 수 중에서 duplex에 문제가 생기는 경우는 한쪽이 Full Duplex인 경우이다.

즉 한쪽이 auto-negotiation으로 설정이 되어 있고, 다른 쪽이 full duplex일 경우 full duplex로 잡힐것 같지만 그렇지 않다. 이 경우는 하위 호환성을 해 무조건 half-duplex로 잡힌다는 사실…

관련 자료

http://e2epi.internet2.edu/case-studies/SC02/DuplexMismatch.html

http://en.wikipedia.org/wiki/Autonegotiation

http://en.wikipedia.org/wiki/Duplex_mismatch

[wpdm_file id=9] 


W5500 드라이버 포팅: Parallax Propeller칩

Parrallax는 미국의 펩리스 반도체 회사이다. 이 회사의 칩은 Propeller인데 이 칩은 특이하게도 내부에 8개의 프로세어 코아가 있어서 병렬처리가 가능하다. 이 8개의 코아를 COG라고 부르는데, 아래 블럭다이아그램 처럼 내부에 각각 프로세서, RAM, 레지스터, 카운터 등이 있고 이 COG가 외부에 나와 있는 I/O를 공유한다. 그리고 각각의 COG를 제어하는 HUB가 있어서 각각의 COG각 언제 I/O를 access할지를 결정한다.

parallax_propeller

Propeller칩을 프로그래밍하게 위해서는 어셈블러, SPIN이라는 언어로 프로그래밍이 가능하며, 최근에는 C 컴파일러가 지원이어서 C로도 프로그래밍이 가능하지만 코드사이즈나 성능이슈로 대부분의 코드는 어셈블러나 SPIN으로 만들어져 있다.

데이터 시트 및 메뉴얼은 다음 링크에서 다운로드…

[wpdm_file id=7]  [wpdm_file id=8]

W5500칩의 드라이버를 포팅하기 위해 사용한 보드는 Propeller Activity Board인데, 이 보드에 있는 브레드보드에 WIZ550io를 꼽고 와이어링을 통해 Propeller칩과 연결을 했다. 연결되는 방식은 SPI 신호, 리셋 신호 및 전원 신호만 결하면 되므로 간단하다.

Propeller_WIZ550io

포팅한 코드는 Mike G라는 사람이 W5200으로 만든 코드를 포팅을 했는데, 이 코드는 SPI 인터페이스가 어셈블러로 되어있어서 이것을 일단 SPIN 랭귀지로 수정했다. W5500에서는 SPI 포맷 및 메모리 맵이 바뀌어서 W5500을 read, write하는 함수들 역시 수정을 했다.  수정된 코드가 제대로 동작하는지 확인을 하기위해 TCPMultiSocketServer 프로그램(간단한 웹서버 프로그램) 코드와 같이 컴파일을 해서 돌리니 잘 동작한다.

관련된 모든 코드는 github에 오픈: https://github.com/jbkim/Parallax_W5500


Transformer없이 이더넷 구현하기

일반적으로 이더넷 응용에서는 PHY의 출력단에 트랜스포머가 필요하다. 하지만 길이가 짧은 경우나 특별한 응용의 경우 트랜스포머를 사용하지 않고 구현이 가능하다. 이 때는 TX+-, RX+- 신호에 DC 커플링 캐패시터 33nF를 연결을 한다.

[wpdm_file id=6]

사실 이 내용보다는 IEEE802.3에서 요구하는 PHY signal의 형태가 다른 문서에서는 볼 수 없어서 귀중한 자료…

Phy_Signal


Pages:1234