본문 바로가기

ARM9/S3C6410

[S3C6410] Hellow World 개발환경 및 LED테스트 프로그램

[S3C6410] Hellow World 개발환경 및 LED테스트 프로그램
새로운 MCU 다루는데 있어서 LED제어만큼 간단하고 확실한 방법도 없다.

하드웨어 셋업
일단 테스트할 펌웨어를 램에 다운로드 하기위해 USB를 연결하고, 디버깅 시리얼 포트를 위해 USBUART를  U1에 연결한다.
부트 로드를 이용해야 하므로 부트 점퍼도 연결한다.



USB를 연결하면 장치관리자에서 확인할 수 있다.



부트로드가 정상 동작하면 시리얼 포트에서 메세지를 확인할 수 있다.
USB다운로더를 이용하여 bin파일을 램영역 0x50200000 에 다운로드 할수 있다.
새로운 프로그램을 작성하면 리셋을 눌러 부트모드로 가서 다시 다운로드 하면 된다. "Program"버튼은 플래시에 다운로드 한다.



S3C6410 부트모드 커넥터
점퍼가 연결되면 부트모드가 실행된다. 점퍼가 해지되면 Flash에 Program된 코드가 실행된다.



S3C6410 LED제어
테스트 보드에는 3개의 LED가 있고 GPIOI0~2에 연결되어 있다.




LED제어 랩핑함수
기본적으로는 gpio.h 함수를 이용하겠지만 기존 프로그램코드 호환을 위해 랩핑함수를 만들어 코드호환 되도록 했다.
#define PORTI      (*(volatile unsigned*)0x7F008104)

#define Led1Init()     GPIO_SetFunctionEach(PORTI, 0, 1)

#define LED1_BIT        BIT0
#define LED1_PORT    PORTI 

#define Led1On()          Cbi(PORTI, LED1_BIT)     
#define Led1Off()          Sbi(PORTI, LED1_BIT)
#define Led1Toggle()    Tbi(PORTI, LED1_BIT)



S3C6410 LED제어 예제 코드

int main(void)
{
 SystemInit();

 DebugPrint("S3C6410 Hellow Word - LED Test...");
 
 //LED초기화
 Led1Init();
 Led1Off();
 
 Led2Init();
 Led2Off();

 Led3Init();
 Led3Off(); 
 
 while(1)
 {
  Led1Toggle();
  Delay(3000);
  
  Led2Toggle();
  Delay(3000);

  Led3Toggle();
  Delay(3000);
 }
}



반응형