转自:知乎 王华林 http://www.zhihu.com/question/25086462
外设有4种方式,可以访问自己需要的资源(包括存储器)。
1,调用系统通用DMA。DMA的好处是可以降低CPU占用,整组数据(比如1000个)访问完成后,才需要CPU干预完成后续动作。
2,设计专用的硬件访问通道。比如LCDC可以直接访问存储器,无需系统通用DMA;比如JPG编码器可以直接访问摄像头数据和存储器,无需系统通用DMA。好处是延迟极低,且无需CPU后续干预。
3,CPU中断。每当外设需要,发起一个硬件中断,CPU在中断服务程序里处理数据交互。这种方式需要高度注意外设的响应时间是否在允许范围之内。
4,CPU轮询。每当系统需要时,CPU调用外设,并不断查询外设状态。一旦外设满足条件,就由CPU执行数据交互动作,然后继续查询,直到工作完成。这种方式软件很简单,但是CPU占用非常高。