金牌会员
 
- 积分
- 1042
- 金钱
- 1042
- 注册时间
- 2022-4-20
- 在线时间
- 373 小时
|
发表于 2022-9-19 13:55:38
|
显示全部楼层
我以一种形象的方式来理解DMA+空闲中断和只用接收中断的区别:
假设CPU和DMA都是一名工人,CPU平时的工作是每一秒钟写一个数字“1”(类比执行代码),他的身旁有一个传送带(类比串口),传送带不知道什么时候会来一张纸,上面写着一些信息,每当一张纸被送来的时候,必须有人将传送带上的纸拿下来放进文件夹内。
那么当不使用DMA(仅使用接收中断)的时候,这个活就只有CPU亲自来做,传送带没来纸的时候(串口没数据),CPU将正常地执行自己的工作,而如果传送带上一直有纸来,那么装纸这个动作将大大影响他的本职工作,也许两秒钟才能写一个“1”。
但使用DMA的时候,CPU就可以说:“DMA,我这在忙,如果传送带上面有纸来了,你就把他放到这个文件夹里面(指定外设地址和存储器地址),要是有一阵子没来纸(空闲状态)你就告诉我(空闲中断),我来拿文件夹(空闲中断处理数据)。”然后CPU就可以自己干自己的事,等到DMA喊他的时候再去处理文件夹,如果这一天传送带上一直来纸,也不影响他写“1”的速度。
|
|