“裸奔”程序不行,因为得支持图形重构,所以须加操作系统。
中断可用可不用,是什么意思?
MCP2510接收到数据后,将数据放到它的接收缓冲器中(它有2个接收缓冲器) 然后就会向ARM产生中断,通知ARM通过SPI接口来读取这一帧数据。 这样,我感觉,必须是每一帧产生一个中断。
驱动程序中中断处理程序,如下:
static void s3c2410_isr_mcp2510(int irq, void *dev_id, struct pt_regs *reg) { unsigned char byte;
DPRINTK("enter interrupt!
");
byte=MCP2510_Read(CANINTF); if(byte & RX0INT){ MCP2510_Read_Can(3,&(mcp2510dev.MCP2510_Candata[mcp2510dev.nCanRevpos])); MCP2510_WriteBits(CANINTF, ~RX0INT, RX0INT); // Clear interrupt NextCanDataPos(mcp2510dev.nCanRevpos); DPRINTK("mcp2510dev.nCanRevpos= %d
", mcp2510dev.nCanRevpos); DPRINTK("mcp2510dev.nCanReadpos= %d
", mcp2510dev.nCanReadpos);
}
if(byte & RX1INT){ MCP2510_Read_Can(4,&(mcp2510dev.MCP2510_Candata[mcp2510dev.nCanRevpos])); MCP2510_WriteBits(CANINTF, ~RX1INT, RX1INT); // Clear interrupt NextCanDataPos(mcp2510dev.nCanRevpos); }
if(byte & (RX0INT|RX1INT)){ wake_up_interruptible(&(mcp2510dev.wq)); } } |