SATA中断处理(crst/xrst/rfis/phyup...)
2018-02-09 10:05
253 查看
1.SSD上电后code注册中断过程:
main()--->sys_init()--->sata_init()--->sata_isr_init()--->sata_isr_lgc_exec()
2.在sata_isr_lgc_exec()接口中:task_add_pre(&sata_isr_task, sata_isr_lgc_exec, cTASK_IDLE).
上面这步是注册任务到sata_isr_task链表节点上。
sata_isr_lgc_exec()接口中主要是判断哪个中断发生了,然后执行中断处理函数。
中断包括:bSATA_INTSTS_COMRESET
bSATA_INTSTS_RFIS
bSATA_INTSTS_SWRESET
bSATA_INTSTS_RFIS_CRCERR
bSATA_INTSTS_COMWAKE
bSATA_INTSTS_PHYUP
bSATA_INTSTS_PHYDN
。。。。。。等等
3.主函数中有个循环主要处理task链表的事件:
while (cnt < 8)
{
task_now = task_now->pnxt;
if (task_now->flag)
{
task_now->func();
break;
}
cnt++;
}
在这个循环中如果 sata_isr_task链表节点flag为真则开始执行sata_isr_lgc_exec(),在里面根据中断类型去执行中断处理函数。
main()--->sys_init()--->sata_init()--->sata_isr_init()--->sata_isr_lgc_exec()
2.在sata_isr_lgc_exec()接口中:task_add_pre(&sata_isr_task, sata_isr_lgc_exec, cTASK_IDLE).
上面这步是注册任务到sata_isr_task链表节点上。
sata_isr_lgc_exec()接口中主要是判断哪个中断发生了,然后执行中断处理函数。
中断包括:bSATA_INTSTS_COMRESET
bSATA_INTSTS_RFIS
bSATA_INTSTS_SWRESET
bSATA_INTSTS_RFIS_CRCERR
bSATA_INTSTS_COMWAKE
bSATA_INTSTS_PHYUP
bSATA_INTSTS_PHYDN
。。。。。。等等
3.主函数中有个循环主要处理task链表的事件:
while (cnt < 8)
{
task_now = task_now->pnxt;
if (task_now->flag)
{
task_now->func();
break;
}
cnt++;
}
在这个循环中如果 sata_isr_task链表节点flag为真则开始执行sata_isr_lgc_exec(),在里面根据中断类型去执行中断处理函数。
相关文章推荐
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- SATA中断处理(crst/xrst/rfis/phyup...)
- ucOS-II基于ARM920T的中断处理过程
- samsung 4412 中断处理
- S3C2410 && WinCE6.0的中断处理分析
- linux内核设计与实现(lkd)学习——如何理解中断处理程序可以使用自旋锁
- linux中断处理浅析