博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARM linux SMP
阅读量:4072 次
发布时间:2019-05-25

本文共 741 字,大约阅读时间需要 2 分钟。

转自: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),还用省电相关的。

转载地址:http://lrqji.baihongyu.com/

你可能感兴趣的文章
将file文件内容转成字符串
查看>>
循环队列---数据结构和算法
查看>>
优先级队列-数据结构和算法
查看>>
链接点--数据结构和算法
查看>>
servlet中请求转发(forword)与重定向(sendredirect)的区别
查看>>
Spring4的IoC和DI的区别
查看>>
springcloud 的eureka服务注册demo
查看>>
eureka-client.properties文件配置
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
platform_device与platform_driver
查看>>
platform_driver平台驱动注册和注销过程(下)
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>
c# 如何调用win8自带的屏幕键盘(非osk.exe)
查看>>
build/envsetup.sh 简介
查看>>
C++后继有人——D语言
查看>>
Android framework中修改或者添加资源无变化或编译不通过问题详解
查看>>
linux怎么切换到root里面?
查看>>
linux串口操作及设置详解
查看>>
安装alien,DEB与RPM互换
查看>>
linux系统下怎么安装.deb文件?
查看>>