; enable-method = "spin-table" ; cpu-release-addr = 0 x1 0 x0000fff8 >; }; spin-table方式的多核啟動方式,顧名思義在于自旋,主處理器和從處理器上電都會啟動,主處理器執(zhí)行uboot暢通無阻,從處理器在spin_table_secondary_jump處wfe睡眠,主處理器通過修改設備樹的cpu節(jié)點的cpu-release-addr屬性為spin_table_cpu_release_addr,這是從處理器的釋" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用自旋表啟動的平臺設備樹cpu節(jié)點介紹

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-05 16:19 ? 次閱讀

補充一下一個使用自旋表作為啟動方式的平臺設備樹cpu節(jié)點:

arch/arm64/boot/dts/xxx.dtsi:

   cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,armv8";
                        reg = < 0x0 0x000 >;
                        enable-method = "spin-table";
                        cpu-release-addr = < 0x1 0x0000fff8 >;
                };

spin-table方式的多核啟動方式,顧名思義在于自旋,主處理器和從處理器上電都會啟動,主處理器執(zhí)行uboot暢通無阻,從處理器在spin_table_secondary_jump處wfe睡眠,主處理器通過修改設備樹的cpu節(jié)點的cpu-release-addr屬性為spin_table_cpu_release_addr,這是從處理器的釋放地址所在的地方。

主處理器進入內核后,會通過smp_prepare_cpus函數(shù)調用spin-table 對應的cpu操作集的cpu_prepare方法從而在smp_spin_table_cpu_prepare函數(shù)中設置從處理器的釋放地址為secondary_holding_pen這個內核函數(shù),然后通過sev指令喚醒從處理器,從處理器繼續(xù)從secondary_holding_pen開始執(zhí)行(從處理器來到了內核的世界),發(fā)現(xiàn)secondary_holding_pen_release不是自己的處理編號,然后通過wfe繼續(xù)睡眠。

當主處理器完成了大多數(shù)的內核組件的初始化之后,調用smp_init來來開始真正的啟動從處理器,最終調用spin-table 對應的cpu操作集的cpu_boot方法從而在smp_spin_table_cpu_boot將需要啟動的處理器的編號寫入secondary_holding_pen_release中,然后再次sev指令喚醒從處理器,從處理器得以繼續(xù)執(zhí)行(設置自己異常向量表,初始化mmu等)。

最終在idle線程中執(zhí)行wfi睡眠。其他從處理器也是同樣的方式啟動起來,同樣最后進入各種idle進程執(zhí)行wfi睡眠,主處理器繼續(xù)往下進行內核初始化,直到啟動init進程,后面多個處理器都被啟動起來,都可以調度進程,多進程還會被均衡到多核。

問題

  • 1、 而啟動流程中哪個cpu作為primary cpu可以任意指定?primary cpu如何任意指定的?

啟動的匯編代碼中會通過cpu的affinity值獲取當前cpu的id,然后將自身cpu id與指定cpu id進行比較,以確定當前cpu是否是primary cpu

  • 2、cpu hotplug對于spintable是必須的嗎?

spintable啟動方式不支持cpu hotplug,只是在secondary 啟動時復用了hotplug相同的流程,這部分代碼默認是會被編譯到內核中的


但是spin-table方式非常簡單,但其只能被用于secondary cpu啟動,功能比較單一。

隨著aarch64架構電源管理需求的增加(如cpu熱插拔、cpu idle等),arm設計了一套標準的電源管理接口協(xié)議psci。

該協(xié)議可以支持所有cpu相關的電源管理接口,而且由于電源相關操作是系統(tǒng)的關鍵功能,為了防止其被攻擊,該協(xié)議將底層相關的實現(xiàn)都放到了secure空間,從而可提高系統(tǒng)的安全性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    18924

    瀏覽量

    227212
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10698

    瀏覽量

    209343
  • SMP
    SMP
    +關注

    關注

    0

    文章

    70

    瀏覽量

    19555
  • 設備樹
    +關注

    關注

    0

    文章

    37

    瀏覽量

    3095
收藏 人收藏

    評論

    相關推薦

    安卓(android)6.0高通平臺下設備專題視頻講解【全國獨家+設備視頻教程+絕頂視頻】

    安卓(android)6.0高通平臺下設備專題視頻講解【全國獨家+設備視頻教程+絕頂視頻】hi,大家好,我是aiku,又和大家見面了,我最近錄制了全國只有一家視頻講解安卓(andr
    發(fā)表于 10-06 22:55

    Linux 設備詳解

    的外設硬件接到哪里或是那個平臺,其驅動代碼邏輯并不需要改動,而僅僅需要改變下設備信息,主要的就是I/O地址和中斷號。說了這么半天,跟引入設備有什么關系呢?華清教學使用的開發(fā)板(A8/
    發(fā)表于 10-19 15:53

    Linux 設備詳解

    的外設硬件接到哪里或是那個平臺,其驅動代碼邏輯并不需要改動,而僅僅需要改變下設備信息,主要的就是I/O地址和中斷號。說了這么半天,跟引入設備有什么關系呢?華清教學使用的開發(fā)板(A8/
    發(fā)表于 11-02 13:46

    Linux 設備詳解

    的外設硬件接到哪里或是那個平臺,其驅動代碼邏輯并不需要改動,而僅僅需要改變下設備信息,主要的就是I/O地址和中斷號。說了這么半天,跟引入設備有什么關系呢?華清教學使用的開發(fā)板(A8/
    發(fā)表于 11-29 17:58

    設備(Device Tree)

    設備介紹設備是一個描述設備硬件資源的文件,該文件是由節(jié)
    發(fā)表于 03-14 14:36

    qualcomm平臺的Little Kernel啟動流程

    的header中檢索到)。載入設備到TAGS_ADDR(從boot image的header中檢索到),然后更新設備;3)把命令行(cmd line)作為
    發(fā)表于 09-25 15:42

    迅為iMX6UL開發(fā)板驅動-設備節(jié)點名稱和子節(jié)點獲取設備數(shù)據(jù)

    文檔介紹迅為IMX6UL開發(fā)板設備通過節(jié)點名稱獲取設備數(shù)據(jù),以及獲取子
    發(fā)表于 06-11 11:35

    怎樣去配置設備的leds節(jié)點

    配置設備leds節(jié)點,sys文件系統(tǒng)中沒有出現(xiàn)相應設備文件,引腳沒有查出有重復定義的?怎樣去配置設備
    發(fā)表于 01-07 06:15

    設備中GIC中斷控制器節(jié)點

    文章目錄一、回顧二、設備中GIC中斷控制器節(jié)點三、外設中斷控制器節(jié)點三、其他設備使用中斷節(jié)點1
    發(fā)表于 01-10 07:37

    如何在設備文件里面添加心跳燈節(jié)點

    如何在設備文件里面添加心跳燈節(jié)點呢?有哪些步驟?
    發(fā)表于 03-04 06:44

    ARM Linux設備的組成和結構

    包含子節(jié)點。所謂屬性,其實就是成對出現(xiàn)的名稱和值。在設備中,可描述的信息包括(原先這些信息大多被硬編碼在內核中):·CPU 的數(shù)量和類別。· 內存基地址和大小?!?總線和橋?!?外設
    發(fā)表于 05-11 16:28

    arm linux設備都包括哪些基本信息呢

    設備是由一系列被命名的節(jié)點(Node)和屬性(Property)組成。節(jié)點本身可包含子節(jié)點。設備
    發(fā)表于 05-24 16:04

    【米爾-TIAM62開發(fā)板-接替335x-試用評測】+(三)手把手創(chuàng)建Uboot設備與內核設備實戰(zhàn)

    .dts文件編譯為.dtb文件,然后將.dtb文件用于系統(tǒng)啟動過程中的設備信息獲取。 深入學習特定硬件平臺設備:針對你正在使用的硬件
    發(fā)表于 11-28 09:54

    你不知道的Linux設備--memory&chosen節(jié)點

    節(jié)點那一節(jié)我們說過,最簡單的設備也必須包含cpus節(jié)點和memory節(jié)點。memory節(jié)點
    發(fā)表于 05-05 11:14 ?3495次閱讀

    Petalinux工程中設備介紹

    設備是 Petalinux kernel 的關鍵組件,接下來以 2020.1 版本為例,為大家介紹一下在Xilinx Petalinux 工程中的設備
    的頭像 發(fā)表于 02-20 16:32 ?6692次閱讀
    Petalinux工程中<b class='flag-5'>設備</b><b class='flag-5'>樹</b>的<b class='flag-5'>介紹</b>