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