[TI]/LM3S89622010. 5. 23. 19:54

[LM3S8962 EVM] 웹서버 테스트

[LM3S8962 EVM] 웹서버 테스트



LM3S8962는 Cortex-M3코어에 Ehternet MAC + Phy가 포함되어 있는 MCU로 상당히 간단하게 임베디드 이더넷을 구현할 수 있다.
무료 TCP/IP protocol stack 인 lwIP를 이용해서 임베디드 웹서버 테스트를 진행 했다.
간단한 스텍임에도 속도 빠르고 여러가 다양한 프로토콜을 지원하고 있다.

먼저 luminary micro에서 포팅해서 third party로 제공하는  lwip-1.3.0폴더를 복사하고 패스를 잡아 준다.

$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\src\include\
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\src\include\ipv4\
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\apps\httpserver_raw
$PROJ_DIR$\..\01_drv\third_party\lwip-1.3.0\ports\stellaris\include




웹페이지를 제작하고 롬파일 시스템을 제작하면 된다. 롬파일 시스템은 여러 툴이 있지만 makefsfile를 이용하면 쉽게 제작 할 수 있다.



LM3S8962 WebServer 테스트 동영상




예제 소스코드
LM3S8962 이더넷 관련 초기화

    // LM3S8962 이더넷 Controller 초기화 및 리셋
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
    SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);

    // Ethernet LED 초기화
    //  LED0        Bit 3   Output
    //  LED1        Bit 2   Output

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_DIR_MODE_HW);
    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3,  GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);


    // Enable processor interrupts.
    IntMasterEnable();


MAC어드레스는 임의로 할당했다. lwIPInit() 함수로 설정 가능하다. IP는 IP공유기를 이용하므로 DHCP에서 자동으로 할당받도록 했다. 예전의 DHCP프로토콜은 공유기에 따라 고려해야 할 사항이 많았었는데... 요즘에는 상다히 간단히 처리 가능하다.

    pMACArray[0] = 1;
    pMACArray[1] = 2;
    pMACArray[2] = 3;
    pMACArray[3] = 4;
    pMACArray[4] = 5;
    pMACArray[5] = 6;
 
   
    // MAC초기화 및 DHCP 사용 설정
    lwIPInit(pucMACArray, 0, 0, 0, IPADDR_USE_DHCP); 


LM3S8962 웹서버 초기화

    // Initialize a sample httpd server.
    httpd_init();

    // Pass our tag information to the HTTP server.
    http_set_ssi_handler(SSIHandler, g_pcConfigSSITags,  NUM_CONFIG_SSI_TAGS);

    // Pass our CGI handlers to the HTTP server.
    http_set_cgi_handlers(g_psConfigCGIURIs, NUM_CONFIG_CGI_URIS);

    // Initialize IO controls
    io_init();


main 소스코드

/*
 - LM3S8962 Webserver Test
*/

#include "system.h"
#include "serial.h"
#include "ether_io.h"

int main()
{
 SystemInit(); 

 Led1Init();
 Led1Off();
 
 Led2Init();
 Led2Off(); 

 //Serial Init
 DebugInit(BAUD_115200);
 DebugPrint("LM3S8962 Ethernet Test Program.\r\n");

 EtherNetInit();
 
 DebugPrint("Ethernet I/O Init\r\n");
 
 while(1)
 {
  
  ProcessWebServer();
 }
}

Posted by nexp

댓글을 달아 주세요

  1. ykryden

    항상 멋진 물건을 만들어 내시는 주인장님 대단하십니다^^

    저는 lm3s8962로 http프로토콜을 구현해서 웹서버 파싱을 해보고 싶은데

    혹시 한번 테스트해주실 수는 없으신지요...

    제가 내공이 워낙 딸린 관계로 맨땅에 헤딩하려니 죽겠습니다..ㅠㅠ

    2010.05.28 23:52 [ ADDR : EDIT/ DEL : REPLY ]
  2. STM32F103 + Ethernet(10/100) 개발보드를 구매하고 싶습니다. (sdkim365@gmail.com)

    2010.09.19 13:09 [ ADDR : EDIT/ DEL : REPLY ]
  3. 비밀댓글입니다

    2010.09.21 11:23 [ ADDR : EDIT/ DEL : REPLY ]
  4. 각이

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.06.19 23:39 [ ADDR : EDIT/ DEL : REPLY ]
  5. 승진

    관리자의 승인을 기다리고 있는 댓글입니다

    2012.05.22 09:40 [ ADDR : EDIT/ DEL : REPLY ]