이지부트에 인터럽트 핸들러를 추가해보고 있거든요.

즉, start.S를 빌려서 제가 만든 어플리케이션으로 뛰도록 만들었습니다.

그리고 나서 인터럽트를 받을수 있도록 고치는중인데요...

이지부트의 컴파일과 링크단위가 디렉토리이고, 제가 만든 인터럽트 핸들러
는 제 어플리케이션 디렉토리에 있는고로, start.S에서 직접 어드레스로 뛰도
럭 만들었어요.

_start: b Reset

b =0xC0F00400
b =0xC0F00414
b =0xC0F00428
b =0xC0F0043C
b =0xC0F00450
b =0xC0F00454
b =0xC0F00468

그리고,, 인터럽트 인에블 시키고, 레벨 셋팅하는 루틴 추가하고..

// unmask all interrupt
ldr r0, =SA1110_REG_BASE_INTERRUPT
mov r1, #0xff
str r1, [r0,
#SA1110_REG_OFFSET_ICMR]

// interrupt control level setup -
currently set up as IRQ
ldr r0, =SA1110_REG_BASE_INTERRUPT
mov r1, #0x00
str r1, [r0,
#SA1110_REG_OFFSET_ICLR]


// jump to init function
// init function is just after
exception vectors
ldr r0, =EZ_M01_APP_ENTRY (제 어플
리케이션 엔트리)
mov pc, r0


그리고,
entry.S 를

...초략
// 0xC0F0044F + 0x4 = 0xC0F00454
IRQ_handler_asm:
ldmia sp!, {r8}
stmfd sp!, {r0-r12,lr}
bl IRQ_handler_app
ldmfd sp!, {r0-r12, lr}
subs pc,r14,#4

//0xC0F00453 + 0x14 = 0xC0F00468
FIQ_handler_asm:
ldmia sp!, {r8}
stmfd sp!, {r0-r12,lr}
bl FIQ_handler_app
ldmfd sp!, {r0-r12, lr}
subs pc,r14,#4

// 0xC0F0047C
bl init // 제 어플리케이션.
b _ram_entry


제 어플리케이션에서
// baud rate divisior(BRD) = 1 when baud rate is 115200
*(UTCR1) = 0x0;
*(UTCR2) = 0x1;

// all clear UTCR3
*(UTCR3) = 0x0;

// parity disable
*(UTCR0) &= ~PARITY_ENABLE;

// data bit 8 bit
*(UTCR0) |= EIGHT_BIT_DATA;

// stop bit 1 bit
*(UTCR0) &= ~TWO_STOP_BIT;

*(UTCR3) &= ~UTCR3_LBM;

// enable interrupt
*(UTCR3) |= TX_ENABLE;
*(UTCR3) |= RX_ENBALE;

// temporary for interrupt test
*(UTCR3) |= UTCR3_RIE;

이렇게 UART인터럽트 인에블 시키고,

제가 열심히 자판을 두드리면, 인터럽트가 걸려서, 제가 만든 인터럽트 핸들
러로 오도록