도와주세요!!
글 수 15,339
2007.02.12 20:48:06 (*.45.121.174)
6689
제가 작성하는것이 맞는것인지 답변좀 부탁 드림니다.
4port UART의 인터럽트 신호를 GP6,GP7,GP8,GP9 에 각각 연결하였습니다)
아래와 같이 4개의 인터럽트를 등록 합니다(인터럽트를 등록하고, 하나의 인터럽트 함수를 사용합니다.
이런것 가능한가요?)
set_GPIO_IRQ_edge ( IO_SAMPLE_COM0_IRQ, GPIO_FALLING_EDGE );
set_GPIO_IRQ_edge ( IO_SAMPLE_COM1_IRQ, GPIO_FALLING_EDGE );
set_GPIO_IRQ_edge ( IO_SAMPLE_COM2_IRQ, GPIO_FALLING_EDGE );
set_GPIO_IRQ_edge ( IO_SAMPLE_COM3_IRQ, GPIO_FALLING_EDGE );
// IRQ를 등록한다. =============================================
if( request_irq( IO_COM0_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM0_IRQ );
return -EBUSY;
}
if( request_irq( IO_COM1_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM1_IRQ );
return -EBUSY;
}
if( request_irq( IO_COM2_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM2_IRQ );
return -EBUSY;
}
if( request_irq( IO_COM3_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM3_IRQ );
return -EBUSY;
}
다음 으로 인터럽트 처리 함수에서,, irq를 이용해 4개의 UART 인터럽트를 처리하려고 합니다. 이것이 가능한지요,,,,,
여기에서 irq 가 request_irq( IO_COM0_IRQ, io_interrupt0, 0, COM_NAME, NULL )
void io_interrupt0(int irq, void *dev_id, struct pt_regs *regs)
{
int irq_num;
irq_num = irq;
..................
}
4port UART의 인터럽트 신호를 GP6,GP7,GP8,GP9 에 각각 연결하였습니다)
아래와 같이 4개의 인터럽트를 등록 합니다(인터럽트를 등록하고, 하나의 인터럽트 함수를 사용합니다.
이런것 가능한가요?)
set_GPIO_IRQ_edge ( IO_SAMPLE_COM0_IRQ, GPIO_FALLING_EDGE );
set_GPIO_IRQ_edge ( IO_SAMPLE_COM1_IRQ, GPIO_FALLING_EDGE );
set_GPIO_IRQ_edge ( IO_SAMPLE_COM2_IRQ, GPIO_FALLING_EDGE );
set_GPIO_IRQ_edge ( IO_SAMPLE_COM3_IRQ, GPIO_FALLING_EDGE );
// IRQ를 등록한다. =============================================
if( request_irq( IO_COM0_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM0_IRQ );
return -EBUSY;
}
if( request_irq( IO_COM1_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM1_IRQ );
return -EBUSY;
}
if( request_irq( IO_COM2_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM2_IRQ );
return -EBUSY;
}
if( request_irq( IO_COM3_IRQ, io_interrupt0, 0, COM_NAME, NULL ) )
{
printk( " unable to get IRQ %dn", IO_SAMPLE_COM3_IRQ );
return -EBUSY;
}
다음 으로 인터럽트 처리 함수에서,, irq를 이용해 4개의 UART 인터럽트를 처리하려고 합니다. 이것이 가능한지요,,,,,
여기에서 irq 가 request_irq( IO_COM0_IRQ, io_interrupt0, 0, COM_NAME, NULL )
void io_interrupt0(int irq, void *dev_id, struct pt_regs *regs)
{
int irq_num;
irq_num = irq;
..................
}