본문 바로가기

dev, tech/embedded54

<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> Arbiter arbiter : 우선순위를 걸러내기위한 것 arbiter 그룹이 높은 것은 항상 우선순위가 높다고 볼 수 있다. 우선순위가 0,5 인 것은 fixed! 나머지 1,2,3,4 는 변경가능- ARB_SEL 비트를 이용- ARB_MODE 를 통해서 우선순위 rotation 여부를 설정 . 마지막으로 처리된 인터럽트가 REQ0, REQ5 이면, 우선순위를 바꾸지 않음 . 마지막으로 처리된 인터럽트가 나머지(1,2,3,4,)이면, 우선순위를 바꿈 가장 우선적으로 처리해야할 IRQ를 우선순위에 상관없이 FIQ로 만들어서 처리할 수도 있다.예) ADC... 2006. 7. 13.
<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> Interrupt Controller Interrupt Controller [ ARM 920T ] - [Interrupt Controller] -> 1...2....3... : 60개 ..... 는 필터링 역할해줌(비트 masking) INTPND [31:0]==============- 코어가 처리(또는 처리하는 소스)해 주기를 기다리는 소스가 된다. : 한번에 한 비트씩 셋팅 INTMSK [31:0]================SRCPND의 값을 걸러줌 SRCPND [31:0]===============- 각 비트마다 특정 장치가 할당, 인터럽트 발생시 특정 비트가 '1'이 됨 ex) 30번 비트: RTC- 60개의 intr.을 처리하기 위해서는 비트 수가 부족 ex) 9번비트 : WDT, AC97이 비트 공유 -> 하나의 intr.라도 .. 2006. 7. 13.
<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> 실습3. Watchdog Timer 제어 실습 3. Watchdog Timer 제어목적: S3C2410X 칩 내의 WDT를 제어하여 일정시간 간격의 delay()함수를 만든다. 방법: 1. 먼저 완성된 실행 파일을 실행 시켜본다. 2. source 폴더안에 있는 wdt.c 파일내에서 WDT 컨트롤 레지스터의 값을 세팅하여 0.5초동안의 delay() 함수를 완성한다. 실험확인: WDT가 정확히 셋팅이 되어 dealy()함수가 완성되면 Main()함수에서 delay() 함수를 호출하여 0.5초 간격으로 LED를 점멸시킨다. ** dealy() 함수를 완성하면, Main 함수에서 인자로 넘겨받은 시간만큼의 delay가 생기도록 함수를 수정해 본다. 2006. 7. 13.
<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> 실습 실습 4. UART 제어목적: S3C2410 칩 내의 UART를 제어하여 호스트 PC를 통해 메시지를 출력하도록 한다. 방법: 1. 먼저 완성된 실행 파일을 실행 시켜본다. (실행 전에 터미널 프로그램을 띄운다.) 2. source 폴더안에 있는 uart.c 파일내에 Uart_Init() 함수의 제어 레지스터를 문제와 같이 셋팅한다. 실험확인: UART가 정확히 셋팅이 되면 터미널 프로그램을 통해 Uart_Print() 함수의 메시지를 확인할 수 있다. void Uart_Init(void) { int i = 1000; rUFCON1 = 0x0;// FIFO mode : 0x1 rUMCON1 = 0x0; rULCON1 = 0x3; rUCON1 = 0x245; rUBRDIV1 = (int)(PCLK/(115.. 2006. 7. 13.