소개글
전자공학실험 임베디드 리눅스 시간에 아래와 같은 과제를 해결하고 리포트를 작성한 것입니다.
CPU는 Cortex‐A8(S5PV210) 입니다. 한백전자 empos III sv210 보드입니다.
동작동영상 주소입니다. http://www.cyworld.com/yungod86/3318709
약간의 에러가 있는 소스입니다. 인터럽트를 이용해 1초이상 스위치를 눌렀을 때 하는 동작 때문에 있습니다.
동영상 보시면 스위치를 누르는 방법에 따라 에러가 있습니다. 제대로만 누르면 에러 없이 동작합니다.
C언어로 Cortex‐A8 Processor의 Interrupt와 Timer를 C언어를 통하여 제언한다. 이를 이용하여 아래와 같은 조건을 만족시킨다.
- All GPIO_LEDs ON and OFF continuously.(polling system)
- When "SW18(External interrupt button)" is pressed, then Counting up from `0`.
- Display first left FPGA_7 Segment.
- When the number become `F`, reset it `0` then count it up again.
Ex) 0 -> 1 -> 2 -> ….. -> E -> F -> 0 -> 1 -> …
- Keep "SW18" pressed more than 1 sec, the number is counting down per 1 second by using Timer0 interrupt.
컴파일 실행환경
HBE‐EMPOSIII‐SV210
본문내용
5. Experimental Results
#include "stdio.h"
#include "INCLUDE_FILES.H"
#include "EMPOSIII_SV210_FPGA.H"
#include "S5PV210_REG_GPIO.H"
void gpioSwInit(void);
void gpioLedInit(void);
void gpioIntInit(void);
void vicIntInit(void);
void Timer0IntInit(void);
void delay(volatile unsigned int cnt);
__irq void ISR_gpioEint11(void);
__irq void ISR_timer0Int(void);
unsigned int switch_status = 0;
volatile unsigned int cnt;
int i, j;
int count = 0;
unsigned char segVal[16] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE4, 0xFE, 0xE6, 0xFA, 0x3E, 0x9C, 0x7A, 0x9E, 0x8E};
unsigned char segPos[6] = {BIT0, BIT1, BIT2, BIT3, BIT4, BIT5};
unsigned int dlyCnt = 0x1FFFFF;
void delay(unsigned int cnt){
while(cnt--);
}
void gpioLedInit(void){
GPBCON &= ~0xFFFF0000; //reset register
GPBCON |= 0x11110000; //[7:4] => OUTPUT => LED
GPBPUD = 0x00; //PULL UP/DOWN => DISABLE
GPBDRV_...............................
압축파일 내 파일목록
7주차실험.hwp
a사본 - 7주차.zip
참고 자료
안효복, "ARM으로 배우는 임베디드 시스템“, 한빛미디어(주), 2006.
윤덕용, “어셈블리와 C언어로 익히는 8051 마스터”, Ohm사, 2000.
윤덕용, “ARM7TDMI AT91SAM7S256으로 시작하기”, Ohm사, 2000.
여인춘, “C 무작정 따라하기”, 길벗, 2007.
ARM 홈페이지, http://www.arm.com/
위키백과, http://ko.wikipedia.org/