您的位置:首页 > 其它

SATA中断处理(crst/xrst/rfis/phyup...)

2018-02-09 10:05 176 查看
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(),在里面根据中断类型去执行中断处理函数。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: