HTTP SD Card File Server on WIZwiki-W7500 platform

WIZwiki-W7500 platform과 ARMembed Web-Compiler를 이용하여, Web-Browser 상에서 SD File 목록을 볼 수 있도록 하는 프로그램을 작성해 보자.

Import Program on ARMmbed developer site

mbed 사이트에는 다양한 Example이 존재한다. 직접 모든 code를 작성할 수 있지만, Open source를 활용하면 손쉽고 빠르게 원하는 프로그램을 구현할 수 있다.

Search a program

mbed 검색에서 우리가 원하는 응용프로그램을 Key Word는 HTTP와 SD로 검색해 보자.
다행히 원하는 프로그램을 다음과 같이 볼 수 있다. 자 Import 하자.

주의  : 프로그램 작성 시 검색이 되었지만, 현재 검색이 되지 않는 관계로 아래 URL을 참조하자.
       https://developer.mbed.org/teams/FRDM-K64F-Code-Share/code/HTTP_SD_Server_K64F/

 

Import program

해당 Program을 성공적으로 Import 했을 경우 다음과 같이 Web-Compiler의 Program Workspace 창에 나타난다.

 

Select a platform

ARMmbed Web-Compiler의 우측 상단의 [mbed LPC1768] icon을 클릭하고, [Add Platform]을 눌러 Platfrom 목록에서 WIZwik-W7500 Platform를 찾아 선택하자.

WIZwiki-W7500 Platform을 선택할 경우 Web-Browser의 우측 창에 다음과 같이 나타난다.
[Add to your mbed Compiler] 버튼이 없을 경우 아래 Example programs 중 하나를 Import하면 WIZwiki-W7500 Platform을 당신의 mbed-Compiler에 추가할 수 있다.

 

How to port mbed-LPC1768 into WIZwiki-W7500

mbed-rtos 는 현재 사용하지 않는 라이브러리이므로 삭제(우 클릭 후 delect 선택)한다. 또한 lwip 기반의 EthernetInterface Library를 WIZnetInterface Library로 변경(삭제 후 추가)한다.

WIZnetInterface Library는 https://developer.mbed.org/teams/WIZnet/에서 Import 할 수 있다. (현재 검색이 잘 안되니, URL 참조).
WIZnetInterface Library를 Example HTTP_SD_Server_K64F 프로그램으로 import 한다.

 

Compile HTTP_SD_Server_K64F example for WIZwiki-W7500

지금까지 잘 따라 왔다면, 다음과 같이 Platform과 Library를 성공적으로 변경했을 것이다. 자 이제 과감하게 컴파일을 해보자.

[Compile] 버튼을 누르자. 다음과 같은 Error가 발생한다.

Can not open source input file "device.h" : No such file or directory "#include "device.h""

이 Error는 mbed Library가 Update 되지 않기 때문에 발생한다. 이를 해결하기 위해서는 [Program Workspace] 창의 “mbed” Library를 더블클릭하고, [Library Details] 창의 “Update” 버튼을 눌러 mbed Library를 Update한다.

다시 컴파일하자. 그럼 SDFileSystem 에서 4개, eth.init()에서 1개 총 5개의 Error가 발생한다.

4 Error : SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
1 Error : eth.init();

 

main.c

//SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F
SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500
  • Ethernet Initialization
    eth.init() 대신 DHCP를 사용할 경우 eth.init(MAC) 를 사용하고, Static IP를 사용할 경우 eth.init((uint8_t*)MAC,IP,MASK,GATEWAY)를 사용한다. 여기서는 static IP를 사용한다.
#define MAC     "\x--\x--\x--\x--\x--\x--"   // Should be Replaced -- with your MAC
#define IP      "192.168.77.100"             // Should belong with your lan.
#define MASK    "255.255.255.0"
#define GATEWAY "192.168.77.1"
//eth.init((uint8_t*)MAC);    // Use DHCP for WIZnetInterface
eth.init((uint8_t*)MAC,IP,MASK,GATEWAY);  //IP,mask,Gateway

 

Upload the binary image on WIZwiki-W7500

WIZwiki-W7500은 CMSIS-DAP를 지원하여, W7500의 Code flash가 USB storage로 인식된다. Web-compiler에서 compile을 성공적으로 마쳤을 경우, Binaray Image를 Download할 수 있게 된다. 이때, Local Directory로 저장한 후 해당 Binary image를 WIZwiki-W7500의 USB storage(MBED)로 copy 하거나, image를 바로 MBED로 저장하면 된다.

 

Demos

해당 Project는 아래 URL이나 WIZwiki-W7500 Example programs에서 Import할 수 있도록 만들어 두었다.
동작 상태를 확인하기 위해 Ticker를 활용하여 LED1 LED2를 On/oFF toggle하는 코드도 추가되었다.

 

Initialization

 

Connect to WIZwiki-W7500 through Web-Browser

  • Terminal

  • Web-Browser

 

Click [img] directory

 

Click [WIZnet_log_IoT.png] file

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

WIZWiki-W7500 Platform on ARMmbed

mBed Platform WIZwiki_W7500에 대해 간략히 살펴보고, mbed web-compiler를 활용g하는 방법을 알아보자.

mbed Platform WIZwiki-W7500

WIZnet사에서 개발한 W7500 - Cortex M0 + TCP/IP Core + 128KB flash + 16KB Ram - mcu를 기반으로 하는 Open source hardware platform으로, ARMmbed enabled Platform 이다.
자세한 내용은 wizwiki를 참조하세요.

 

  • Block Diagram
    WIZWiki-W7500 보드는 크게 3개의 Main IC - W7500, Ethernet PHY, MCU for debugging - 로 구성된다.
    ARMmbed enabled 지원을 위한 CMSIS-DAP을 내장하고 있어, mbed Web-Compiler로 통해 만들어진 binary image를 USB storage로 인식된 W7500의 Code flash로 단순히 copy하는 것만으로 Firmware를 Upload할 수 있다.

 

  • Part Layout

  • Extension Pin - Arduino Compatible
    WIZwiki-W7500의 확장 핀들은 Aruduino Board와 호환가능하도록 설계되어 있으며, 각종 Arduino Shield 들과 Stacking 할 수 있어 다양한 응용을 개발 할 수 있다.

ARMmbed

ARMmbed는 CortexM 계열의 ARM 개발자들을 위한 Open Community 사이트다. Web 개발 환경을 무료로 제공할 뿐 아니라, 개발자끼리 서로 code를 공유할 수 있다. ARM은 Silicon Partner와 Platform Partner와 같은 Eco-system을 제공하고, 개발자들은 자유롭게 이를 활용하여 손쉽게 빠르고 원하는 제품을 개발할 수 있도록 도와 준다.
ARMmbed에 접속을 하고 Sign-up 후 Web-Compiler를 무료로 사용할 수 있다.
다음 그림 우측 상단 Red Box 참조.

Web-Compiler

다음은 mbed Web-Compiler를 실행한 화면이다. 자신이 원하는 Example이나 응용을 찾아서 import Program 혹은 Import Library를 하면 자신의 Web-Compiler에 import한 Program이나 Library가 로딩된다.

 

How to import a program or library to your web-compiler

mbed developer site에서 원하는 program이나 library의 Keyword로 검색을 하고, 해당 프로그램을 click하자.

 

  • import
    해당 프로그램을 클릭할 경우 우측 상단에 [Import this program] 이나 [Import this Library]를 클릭하여 자신의 Web Compiler로 Loading 한다.

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

ioLibrary 100% 활용하기 (1)


ioLibray ?

ioLibrary는 WIZnet의 W5XXX(W5100,W5200,W5300,W5500) 기반의 통합 BSD socket Library를 제공한다.
칩별로 차이가 있는 Hardware dependent code들을 Driver로 분리하여 각각 구현되었고, 이를 이용하여 BSD Socket API를 구현함으로써, Webserver, FTP와 같은 Application Protocol을 구현함에 있어 Hardware적 제약 조건으로부터 자유로워질 수 있으며, Application의 최소한의 수정으로 쉽게 원하는 WIZnet Chip들로 Porting이 가능하다.

ioLibrary 특징

  • DRIVER 분리
    • Basic IO function
      1. WIZCHIP_READ and WIZCHIP_WRITE
      2. 모든 Register & Memory Access를 WIZCHIP_READ & WIZCHIP_WRITE로 통일
      3. Hardware dependent I/F code는 Callback Function으로 분리
      4. Driver 수정없이 callback function 등록만으로 바로 사용
    • Extra Function
      1. Optional : Omissble for code optimization
      2. User-freindly name : 같은 기능 다른 이름의 Register 들을 통일
  • SOCKET API
    • Berkeley Socket API와 유사
    • 네트워크 응용 개발 경험자들은 쉽게 ioLibrary 활용 가능
    • 모든 함수의 상황별 Error Code 지원
    • Blocked or Non-Blocked function 지원
    • Datagram Data 처리의 유연성 : 한 Packet을 원하는 크기로 나누어 수신 가능
  • APPLICATIION PROTOCOL
    • 더욱 풍부해지는 Standard application protocol
    • WIZnet Chip별로 각각 제공되는 Application protocol을 Chip에 관계없이 재사용 가능
  • User Application
    • Easy to migration
    • Easy to upgrade
    • Easy to Maintainment
  • The smallest resouces usage for TCP/IP stack
  • The highest performance at the same board

ioLibrary Version 3.0 Directory 구조

  • [ioLibrary]
    • [Ethernet]
      • wizchip_conf.h & wizchip_conf.c
      • socket.h & socket.c
      • [W5100]
        • w5100.h & w5100.c
      • [W5200]
        • W5200.h & W5200.c
      • [W5300]
        • w5300.h & w5300.c
      • [W5500]
        • w5500.h & w5500.c
    • [Internet]
      • [DHCP]
        • DHCP.h & DHCP.c
      • [DNS]
        • dns.h & dns.c
      • [FTPClient]
        • ftpc.h & ftpc.c
        • stdio_private.h
      • [FTPServer]
        • ftpd.h & ftpd.c
        • stdio_private.h
      • [httpServer]
        • httpParser.h & httpParser.c
        • httpServer.h & httpServer.c
        • httpUtil.h & httpUtil.c
      • [SNMP]
        • snmp.h & snmap.c
        • snmap_custom.h & smtp_custom.c
      • [SNTP]
        • sntp.h & sntp.c
      • [TFTP]
        • tftp.h & tftp.c
      • [Others Will be Added]

Download

[Download on GitHub]

How to Porting into your application

  • TODO
  • How to Register your call-back functions

Refer to My post - W5500 ioLibrary_BSD를 MCU 8051에 포팅하기(1)~(8)

목차

  1. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(1)
  2. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(2)
  3. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(3)
  4. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(4)
  5. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(5)
  6. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(6)
  7. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(7)
  8. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(8)

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Using the Arduino Ethernet shield with AMICUS18 (Part 1~4)

by HenrikOlsson

저자는 http://www.picbasic.uk 의 Forum에 적극적으로 활동하고 있으며, picbasic의 Forum에서 PIC 기반의 AMICUS18 Open source hardware board에 Arduino Ethernet Shield를 사용하는 방법을 공유하였다. pisbasic에서 그의 Forum 내용을 총 4회 걸쳐 기사화 하였다.


AMICUS18 board

PIC 기반의 Arduino Comapatible board로 Crownhill’s Proton BASIC 언어의 개발환경을 제공한다.


Part 1

Part 1에서는 Arduino Ethernet Board를 AMICU18 Board에 연결하기 위해 SPI 신호 핀을 연결하는 방법을 설명한다.

  • AMICUS18 board는 ICSP HEADER가 없으므로, SD 카드와 Ehternet을 사용하기 위해 Ethernet Shield를 수정하고 연결하는 방법을 설명한다.

[Learn More…]


Part 2

Part 2에서는 PIC MCU의 UART 및 SPI Interface 제어를 위한 코드와 W5100 Memory Map 정의 파일을 설명한다.

  • Code

    ' By default the AMICUS18 board uses the PIC18F25K20, make sure to
    ' set up MCSP or whatever IDE is being used to compile for the
    ' correct device.
    
    DEFINE OSC 64
    DEFINE LOADER_USED 1            ' We're using a bootloader.
    DEFINE HSER_RCSTA 90h           ' Enable serial port & continuous receive
    DEFINE HSER_TXSTA 24h           ' Enable transmit, BRGH = 1
    DEFINE HSER_CLROERR 1           ' Clear overflow automatically
    DEFINE HSER_SPBRG 138           ' 115200 Baud @ 64MHz, -0,08%
    
    SPBRGH = 0
    BAUDCON.3 = 1                   ' Enable 16 bit baudrate generator
    
    TRISC = %10010111
    ' RC7: USART RX
    ' RC6: USART TX
    ' RC5: ETHERNET SPI Data out (SDO/MOSI)
    ' RC4: ETHERNET SPI Data in (SDI/MISO)
    ' RC3: ETHERNET SPI clock (SCK) set to INPUT according to datasheet....
    ' RC2: N/U - currently
    ' RC2: N/U - currently
    ' RC1: N/U - currently
    
    TRISB = %11011011
    ' RB7: N/U - currently
    ' RB6: N/U - currently
    ' RB5: ETHERNET Chip select line to W5100
    ' RB4: N/U - currently
    ' RB3: N/U - currently
    ' RB2: ETHERNET Chip select line to SD-Card
    ' RB1: N/U and can not be used with the Ethernet shield
    ' RB0: ETHERNET Interrupt pin from W5100
    

[Learn More…]


Part 3

Part3에서는 WIZnet W5100 Interface Routine code를 작성하고, 이를 이용하여 Network Information을 설정 후 Ping test를 통해 W5100 Internet 통신을 확인한다.

  • Ping Test

[Learn More…]


Part 4

Part4에서는 WIZnet W5100 Internet 송수신을 위한 Routine을 작성하고 이를 이용하여, Web Client의 Request Message를 UART 출력을 통해 보여준다.

  • HTTP Request

[Learn More…]


[Goto Original Forum]

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

ARM Cortex M3 Dev Board

by Nathan Zimmerman


Alt Text

Nathan Zimmermanl has been aiding in developing an Embedded 2 class of North Dakota State University(NDSU) . For the class he attempted to develop a flexible and cheap dev board that could host numerous advance applications such as Ethernet and USB.
He selected the WIZnet W5200 for cheaper & easiser Ethernet solution.


Dev Board Features:

  • LPC1768 ARM Cortex M3 MCU
  • W5200 SPI based Ethernet Controller
  • 160×128 Color LCD Display
  • FTDI FT232 VCP USB
  • 2nd USB port hooked directly to the LPC1768 for more advance USB applications
  • 6 LEDs, 4 push buttons, 1 potentiometer
  • NRF24L01 SPI Wireless Module
  • Can be powered via USB or wall-wart plugin
  • Micro is modular and thus can be easily replaced
  • Raw part costs for these boards at quantity x10 is roughly 70 usd.

The board is compatible with the following IDE’s / JTAG Programers:
LPC Xpresso Board & Code Red IDE (+ FreeRTOS)
Ulink2 Programer & Keil IDE


Learn More…
He made DIY Walking Desk using WIZnet Wifi solution WizFi210.


저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Uber Home Automation

 

말그대로 Home-Automation 응용의 결정판을 보여주는 아주 좋은 Eric Tasi 님의 Project가 있어 소개합니다.

Auduino, Aurdion Ethernet Shield, Raspberry Pi를 이용하여 우리가 상상할 수 있는 대부분의 Home-automation 기능을 구현한 Project입니다.

 

Eric Tsai님의 시작 동기가 재미 있네요.

몇년전 개를 처음으로 키우기 시작했고, 개를 보기 위해 Webcam을 설치하였으나, 하루종일 Webcam을 볼수 없었기에, 개가 어떤 상황에 처해있는지 화재발생으로 위험하지 않는지 등을 고민하기 시작하면서 하나씩 완성해나간 Project 입니다. 

Eric Tsai님이 자신이  "개를 키우고 있으며, 전자기기를 만든 것을 좋아하며, Youtube의 동영상 제작 및 좋은 사진을 만들기 등을 천천히 배우며 익혀간다" 소개하고 있습니다. 개를 사랑하는 맘이 전해지네요.

 

전등 제어는 기본이고, 가스누출 및 화재 감지, 세탁실 누수 감지, Door Bell 및 메일박스 알림, 온 습도 모니터링, 주차장 제어, 애완견 소리 감지 뿐만 아니라 Smart-meter까지 구현되어있으며, 각 상황등을 Email 알림뿐만 아니라 Audio notification까지 제공하는 그야말로 Home-Automation의 결정판입니다.

중요한 것은 이 모든 것이 Open-source Hardware 기반으로 만들어졌다는 것이며, 사용된 모든 제원들이 다 Open되어 있다. 또한 OpenHAB 과 같은 Cloud service까지 연동된다는 것이다.

당장 제품화 시켜도 손색이 없을 정도의 Qaulity를 가지고 있다.

 

 

간략히 살펴보면,

Sensor 제어 및 Control을 하는 Node Device는 Arduino Board를 이용하였고,

각 Node 의 Sensor data gathering 및 Remote control을 Auduino Ethernet Shield를 이용하였으며,

Cloud Service를 위해 Raspberry Pi를 이용하였다.

 

 

Eric Tsai님은 자신이 구현한 모든 과정을 16단계로 소개하고 있으며, Taste (미각)을 제외한 센싱가능한 모든 Device를 활용하고 있습니다.

 

Hearing : Dog bark , Washer-dryer sensing

Sighting : Light sensor, Area intrusion monitor

Smell     :  Gas/Fire/Smoke Sensor

Touch    : 온습도 Sensor, 누수 감지

Taste    :  Sensor가 없어 구현하지 못함. 있으면 구현하겠다고 함.

Security : Door, Window, Drawer , Mail-box

Garage Monitor

 

Homeautomation에 관심있으신 분들은 많은 아이디어와 도움을 받을 수 있을 것입니다.

 

관련 링크

http://www.instructables.com/id/Uber-Home-Automation/?ALLSTEPS

https://github.com/homeautomationyay/OpenHab-RFM69

http://www.hackster.io/erictsai/uber-home-automation?ref=userrespected&ref_id=1326&offset=0

 

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

 

고양이가 드나드는 출입문에 센서를 장착하여

고양이기 들어오면 twit을 해주고

깜직한 토끼가 반겨주는 것이 재미 있네요.

 

http://hackaday.com/2012/03/09/pushingbox-alerts-you-of-your-cats-roaming-habits/

 

 

 

저작자 표시
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

Notifying Doorbell with PushingBox

 

 

Notifying Doorbell with PushingBox

 

요즘 IOT와 Cloud Service가 접목된 다양한 응용을 볼 수 있습니다.

여기서 소개하고자 하는 것 또한 IOT Cloud 제품입니다. 본 제품은 방문자가 도어벨을 눌렀을 경우 사진과 함께 이메일로 알려주는 편리한 기능을 제공합니다.

IOT는 도어벨, 아두이노, 이더넷실드로 구성되어 있으며, Cloud Sevice는 PushingBox라는 무료서비스를 이용합니다. IOT와 Cloud의 접목를 잘 보여주는 예입니다.

PushingBox는 IOT의 request를 Push, Tweet, e-mail 등 다양한 알림서비스를 제공한다.

http://www.pushingbox.com/ 에 들어가면 자세히 설명되어 있으니 참고하라.

 

 

Makezine에 11가지 단계의 설명, 데모영상 뿐만 아니라 소스코드까지 자세히 포스트되어져 있으니 관심있는 분들은 참고하세요.

 

 

Nowadays, We can see a variety of applications that combine IOT with Cloud service.

We also introduce one of IOT-Cloud sevices that the door-bell notifies to you by  e-mail when visitor press your door-bell. These service provides a convenient when you are not in you home.

 

IOT consists of 11-steps tutorial, demo-movie, and source codes.

A Cloud sevice is provided by the PushingBox.

PushingBox is free software  that can send notifications based on API calls.
From one request, you can send several notifications like a Push, a Tweet, an Email... All this in real time.

For more detail, refer to http://www.pushingbox.com/.

.

 

This posted on the Makezine with 11-step tutorial, Demo-movie and source codes. If you interest in these product, visit on makine website.

 

http://makezine.com/projects/notifying-doorbell-with-pushingbox/

 

 

 

저작자 표시
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

<목차>

1. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(1)

2. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(2)

3. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(3)

4. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(4)

5. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(5)

6. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(6)

7. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(7)

8. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(8)

 

3. Test Board 만들기

 

먼저 SiLab사의 C8051F380-TB board와 WIZnet사의 WIZ550io 모듈을 준비하고, Breadboard나 만능키트, 점퍼선등을 준비해 둔다.

 

C8051F380-DK board는 다행히 모든 IO PIN들이 PIN Header (J2, J3,J4,J5,J6) 5개로 모두 나와있으며 또한 96PIN PCN connector(J13)에도 나와 있다. 다행이 PCN connector를 보유하고 있어 Breadboard와 연결하여 사용할 예정이다. 이 Connector가 없을 시는 J3~J6 PIN Header와 Jumper선을 사용하여 연결해도 무방하다.

 

http://www.silabs.com/Support%20Documents/TechnicalDocs/C8051F38x-DK.pdf 

 

 

 

C8051F380의 IO 핀들은 기본적으로 GPIO 핀으로 사용되며, CrossBar 를 통해 SPI나 UART 기타 Peri등의 IO 핀으로 Switching 될 수 있다. Crossbar 설정에 따라 PIN의 위치가 변경되므로 Test 보드를 만들기 전에 SPI IO 핀들이 어떤 포트로 연결되는지 숙지하여야 한다. 다행히 Simplicity Studio의 Configuration Wizard2라는 Tool을 지원한다.

 

Configuration Wizard2를 실행하여 C8051F380을 선택한다.

 

 

[OK] 버튼을 누르면 Menu에 Peripherals가 추가 되고 하위메뉴 Port I/O를 선택하면 다음처럼 Port I/O 핀을 설정할 수 있다.

 

 

Pin Skip Check Box를 이용해 SPI IO 핀들을 원하는 포트 핀으로 이동할 수 있는 장점이 있다.

여기서는 Serial Debugging Message 출력을 위해 UART0 을 P0_4(TXD), P0_5(RXD)로 선택하고, SPI IO는 Port Skip 없이 기본설정으로 P0_0(SCLK), P0_1(MISO), P0_2(MOSI), P0_3(NSS)로 설정한다.

Configuration Wizard2 가장 큰 매력은 설정된 핀에 따른 Register 설정 코드를 자동으로 생성해준다는 것이다. 이것은 UART & SPI 드라이버를 구현할 때 많은 도움이 된다. 이부분은 계속 언급될 것이므로 이정도만 알고 패스~~~!!!

 

 

WIZ550io는 WIZnet사의 W5500 칩을 기반을 하는 Network Module이다. WIZ550io는 SPI 인터페이스만을 지원하고, Open source hardaware platform인 Arduino, GR-Kurumi, LaunchPad에 장착될 수 있는 Shield I/F board도 함께 지원한다. 또한 Arduino Sketch Library 로 포팅되어 있어 손쉽게 개발할 수 있다.(http://wizwiki.net/wiki/doku.php?id=ioshield)

 

WIZ550io의 상세 스펙은 http://wizwiki.net/wiki/doku.php?id=products:wiz550io:allpages 를 참조한다.

 

 

 

자 그럼 이제부터 본격적인 Test Board를 만들어 보자.

보드 제작에 앞서 간단한 회로도를 만들어 보자. 물론 회로도 없이 간단히 만들수도 있지만, 시간이 지나면 어떻게 만들었는지 기억이 나지 않는 경우가 대부분이기 때문에 나중을 위해서라도 간단하게나마 회로도를 작성하는 습관을 가져야 한다.

 

 

 

WIZ550io의 RSTn과 INTn 핀들은 각각 C8051F380의 P1_0과 P0_6 핀들로 연결한다. 이때 WIZ550io RDY 핀은 사용하지않는다.

 

<주의> RDY핀은 WIZ550io 자체 MCU가 W5500의 Network configuration을 완료했을때  High로 된다. RDY PIN은 보다 안정적인 WIZ550io 제어를 위한 Option PIN이다. 개발코저하는 Target B/D의 GPIO 핀이 부족할 경우 GPIO 핀에 연결하지않고 대신 200ms 정도 Delay를 준 후 WIZ550io를 Access해도 무방하다.

 

핀 연결을 다시 한번 정리하면.... 

 

 Signal Name

C8051F380 PIN 위치

 WIZ550io PIN 위

SPI : SCLK

P0_0 (J13:C12, J2:1) 

J1:5

 SPI : MISO

P0_1 (J13:B12, J2:2)

J1:4 

SPI : MOSI

P0_2  (J13:A12, J2:3)

J1:3

 SPI : SCS

P0_3 (J13:C11, J2:4)

J1:6 

 Interrupt

P0_6 (J13:C10, J2:7)

J2:5 

 RESET

P1_0(J13:C21, J3:1)

J2:3 

 3.3 VDD

J13:A1  

J1:7, J1:8, J2:1 

 GND

J13:B1

 

 

자 이제 회로도가 완성되었으니, 점퍼선을 이용하여 실수 없이 납땜하여 잘 연결해 보도록 하자.

보드를 만들고 전원을 인가하기 전에 반드시 단선이 없는지 회로도대로 연결되었는지, VDD와 GND는 쇼트되지 않았는지 확인하자.

 

 

 

드디어 테스트 보드 완성.  짜잔 !!! (물론 이보드 제작는 Dokkodai님이 도와주셨슴돠!!!)

긴장된 맘으로 WIZ550io를 연결한 후 Power를 인가한다.  별 문제없으면 통과...휴==3

 

 

 

자 이제 MCU 8051에 ioLibrary_BSD 를 포팅할 모든 준비가 끝났다.

다음 연재에 계속 ~~~

 

 

< PREV                                                                                                          NEXT >

저작자 표시
신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

<목차>

1. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(1)

2. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(2)

3. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(3)

4. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(4)

5. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(5)

6. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(6)

7. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(7)

8. W5500 ioLibrary_BSD를 MCU 8051로 포팅하기(8)

 

음~~~ 8051 포팅이라!!! (당황하지 말고 팍 쭉~~~)

무엇부터 해야 하나 생각을 정리해 둘 필요가 있다. 차근차근 하나씩 정리해보자.

 

- 수많은 8051 MCU 중에 무엇을 선택하나 ?

- 8051 개발 환경은 무엇으로 하나?

- Test Board 만들기

- ioLibrary 다운로드

- Porting 시작

 

1. 수많은 8051 MCU 중에 무엇을 선택하나 ?

 

8051 MCU는 이미 많이 보편화되어 개발자라면 누구나 익숙한 MCU이다. 각 Vendor마다 조금씩의 특징이 있다. 고속 처리가 가능한 것도 있으며, 다양한 peri를 가지고 있는 것도 있다. 아주 오래 전 Atmel과 Dallas의 8051를 써본 경험이 있긴 하지만, 현재 보유하고 있는 보드는 Silab사의 C8051F380이다. 나도 이녀석은 처음으로 사용해본다. (살짝 긴장되긴 하네^^)

C8051F380의 특징적 제원을 간략히 살펴보면,

 

High Speed 8051 μC Core
- Pipelined instruction architecture; executes 70% of instructions in 1 or 2 system clocks
- Up to 48 MIPS operation
- Expanded interrupt handler

Memory
- 4352 or 2304 Bytes RAM
- 64, 32, or 16 kB Flash; In-system programmable in 512-byte sectors

Digital Peripherals
- 40/25 Port I/O; All 5 V tolerant with high sink current
- Hardware enhanced SPI™, two I2C/SMBus™, and two enhanced UART serial ports
- Six general purpose 16-bit counter/timers
- 16-bit programmable counter array (PCA) with five capture/compare modules
- External Memory Interface (EMIF)

 

최대 48MIPS 까지 지원한다고 하니 최대 Clock은 48MHz까지 사용할 수 있는 것으로 보인다. 또한 SRAM 역시 4K 이상 지원되며, Code Flash 역시 64KB까지 지원된다. (여기서는 Data 4K, Code 64K 를 사용한다 - Network 응용을 개발하기 위해 넉넉한 크기를 준비). 무엇보다도 중요한 것은 W5500 Access를 위한 SPI Interface를 지원한다는 것. 그 밖의 각종 Peri들이 많이 있으나, USB, 온도센서 및 ADC가 있다는 정도로 알자.

<C8051F380 DK Board>

 

 

 

2. 8051 개발 환경은 무엇으로 하나?

 

8051 개발환경은 Keil, IAR, sdcc 등 다양하게 존재한다. 하지만, C8051F380은 SiLab사의 MCU인 만큼 SiLab에서 제공하는 Simplicity Studio를 이용하여 개발한다.

먼저 SiLab Homepage에서 Simplicity Stuido 2.0을 다운로드한다.

http://www.silabs.com/products/mcu/Pages/simplicity-studio.aspx

자신의 OS에 맞는 Simplicity Studio를 다운로드 한 후 설치한다.

설치 및 사용법에 대해서는 자세한 설명은 생략한다. (Silab이나 인터넷 관련 동영상 및 자료가 많이 있으니 참고하시길...)

 

 

Simplicity IDE는 Silab 자체 제작 Complier를 사용하지 않고, Keil-C compiler를 사용한다. Silab사의 Install Guide에 따라 Keil-C complier를 설치하고 Silab에 지원하는 License Key를 등록한다. 이로써, 정식 Licence가 등록된 Keil-C complier를 사용할 수 있다.

 

Simplicity Studio의 가장 큰 장점은 개발 환경 뿐만 아니라, 각종 Datasheet, Application 문서, Example Code 및 개발에 필요한 각종 Resouce 등을 통합 관리하여 항상 최신 정보를 개발자로 하여금 놓치지 않도록 해준다는 것이다.

 

<주의>

Keil이나 다른 개발환경을 사용할 경우 C8051F380과같은 Silab Chip들에 대한 Device 정보를 제공하지 않을 수도 있다. 물론 제공하지 않는다고 해서 개발할 수 없는 것은 아니다. 하지만 미리 잘 만들어진 Header, C file 및 각종 Libarary가 있는데 사서 고생할 필요없지 않는가?

Simplicity Sudio를 사용하지 않더라도 우선 설치해주자.

그럼 "C:\SiliconLabs\SimplicityStudio\v2\developer\sdks\si8051\v2\Device" 경로로 Silab에 미리 잘 만들어둔 각종 Header/C 및 Library를 손쉽게 사용할 수 있다.

 

Simplicity Studio에서 Simplicity IDE Double click하여실행하여 간단한 새로운 Project를 만들어 보자.

 

Menu>Project>New>Silcon Labs MCU Project... 를 이용하여 앞으로 만들 Project의 제원을 설정해준다.

 

앞으로 Porting 하게 될 보드는 "C8051F380 Development Kit" 이므로 이것을 선택.

 

Project 명과 Working directory를 설정한 후 Finish.

 

C8051F380 용 startup code와 Main 파일이 project에 자동으로 추가되었으며, Toolbar의 망치 아이콘을 눌러 Compile한다.

Error없이 Compile이 잘된다. Compile된 Binary Image를 Silab에서 제공하는 USB Debug Adapter로 Board로 Download해보자.

우선 아래 그림과 같이 USB Debug를 연결한다. (이때 USB 장치가 자동으로 인식되고 Driver가 자동으로 깔린다)

 

USB Debug를 성공적으로 인식했다면 IDE 에서 풍뎅이 모양 아이콘을 눌러 생성된 이미지를 보드로 다운로드. 보드 다운로드를 성공하면 Break point를 설정하여 원하는 코드를 Debugging할 수 있다. IC 모양 아이콘은 Debugging 없이 보드로 다운로드만 한다.

 

이것으로 ioLibrary를 포팅할 개발 환경은 준비가 되었다. 다음 시간 WIZ550io와 C8051F380-TB 보드와 연결을 해보자.

 

                                                                                                                                            NEXT >

 

신고
Creative Commons License
블로그 이미지

밤소 MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

티스토리 툴바