SATA中断处理(crst/xrst/rfis/phyup...)
2018-02-09 10:05
190 查看
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...)
- 中断分层处理-工作队列
- 保护模式下8259A芯片编程及中断处理探究(下)【4】
- Linux内核分析课程5_system_call中断处理过程
- 分析system_call中断处理过程