ARM linux SMP

转自:http://blog.chinaunix.net/uid-26817832-id-3450609.html


1、先记录一个栈
__cpu_up
     
     boot_secondary

          secondary_startup
 
              __v7_setup

                  __enable_mmu

                         __secondary_switched

                                secondary_start_kernel

2、栈的说明
1)、主核负责执行:
__cpu_up(在此函数中组secondary_data结构)
     boot_secondary
(在此函数中唤醒从核并调用wait_for_completion_timeout(&cpu_running,msecs_to_jiffies(1000));等待)
2)、如何唤醒从核?
以zynq板子来说,如下:

因此,如上所述,只需要在boot_secondary函数中将secondary_startup地址写入0xFFFFFFF0,并sev即可。

3)、从核执行如下函数:
          secondary_startup
 
              __v7_setup

                  __enable_mmu

                         __secondary_switched

                                secondary_start_kernel

并在 secondary_start_kernel 函数中,调用complete(&cpu_running);来通知主核,我ok了(进入idle状态),你继续执行吧。

4)、__cpu_up谁来调用

smp_init,rcu_torture_onoff(Execute random CPU-hotplug operations at the interval specified by the onoff_interval),还用省电相关的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值