码迷,mamicode.com
首页 > 其他好文 > 详细

SylixOS动态关核架构流程

时间:2018-11-30 18:21:45      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:image   uip   off   evel   应用   停止   inter   相等   动态   

  • SylixOS动态关核接口
    SylixOS 支持动态关核操作,通过如下应用函数;
    VOID Lw_PowerM_CpuSet(ULONG ulNCpus, UINT uiPowerLevel);
    函数Lw_PowerM_CpuSet原型分析:
    参数 ulNCpus是运行态的CPU 核个数;
    参数 uiPowerLevel是CPU能耗级别。
  • 基本流程
    系统函数调用流程如图 2.1:
    (1) Lw_PowerM_CpuSet( ),设置关核个数,判断设置运行态的核数与启动的核数是否相等,如果小于,则关闭一些核,判断将要关闭的核是否在运行API_CpuIsUp(),如果是则调用API_CpuDown()。
    (2) API_CpuDown(),通过LW_CPU_ADD_IPI_PEND2()设置将要关闭的核的CPU_iIPIPend为LW_IPI_DOWN_MSK,关闭与此 CPU 有关的亲和度_ThreadOffAffinity(),使用核间中断通知 CPU 停止_SmpSendIpi()。
    (3) SmpSendIpi(),调用核间中断函数xxxMpInt()响应核间中断,通知关闭核,xxxIntEntry中断入口函数,调用API_InterExit()中断出口函数;
    (4) API_InterExit()调用__kernelSchedInt();kernelSchedInt 调用_ScheduleInt()尝试调度;
    (5) 在_ScheduleInt()判断是pend 位是否是LW_IPI_DOWN_MSK,如果是进入_SchedCpuDown()函数;
    (6) _SchedCpuDown()先停止 CPU _CpuInactive(), 禁能数据和指令CACHE API_CacheDisable,在关闭 MMU API_VmmMmuDisable(),再清除 CPU pend关闭标志位 最后调用 bspCpuDown 关闭核。
    技术分享图片
    图 2.1 关核操作大致流程
  • SylixOS动态关核架构流程

    标签:image   uip   off   evel   应用   停止   inter   相等   动态   

    原文地址:http://blog.51cto.com/13927802/2324366

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!