SylixOS动态启核架构流程

  1. SylixOS动态启核接口

SylixOS 支持动态关启核操作,通过如下应用函数;

VOID  Lw_PowerM_CpuSet(ULONG  ulNCpus, UINT  uiPowerLevel);

函数Lw_PowerM_CpuSet原型分析:

参数 ulNCpus是运行态的CPU 核个数;

参数 uiPowerLevel是CPU能耗级别。

  1. 基本流程

系统函数调用流程如图 2.1:

  1. 先使用Lw_PowerM_CpuSet( ),设置关核个数,判断设置运行态的核数与启动的核数是否相等,如果小于,则关闭对应个数的核,等核关闭后,可以再使用该接口开启刚关闭的核,实现动态关启核。
  2. Lw_PowerM_CpuSet( )调用API_CpuUp()函数设置要启动的cpu核。
  3. API_CpuUp(),判断当前cpu 是否启动,如果没启动,关中断,调用bspCpuUp(),完成启动后开中断;
  4. Arm V7 T3 架构bspCpuUp(),由bsp最小系统实现该功能,调用API_KernelSmpCallAllOther()设置SMP其它核调用的指定函数,一般用于清数据段cache和等待其它核启动信息,然后寄存器启动该核,设置该核启动地址;
  5. 启动时进入 startup.s 文件中的reset复位,跳转到secondaryCpuResetEntry()函数,进入启动其它核流程,关D-Cache、I-Cache和MMU,再跳转到halSecondaryCpuMain();
  6. halSecondaryCpuMain()调用API_KernelSecondaryStart()函数从核启动入口,调用钩子函数 halSecondaryCpuInit()初始化从核VFP、MMU、Cache、GIC。
  7. 该动态启核过程有些bug需要修复,在关核前需要将该核上的任务迁移到其它核上运行,如果该核上的任务没有迁移,再次启核会导致系统奔溃;

2.1 启核操作大致流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值