; enable-method = "spin-table" ; cpu-release-addr = 0 x1 0 x0000fff8 >; }; spin-table方式的多核啟動方式,顧名思義在于自旋,主處理器和從處理器上電都會啟動,主處理器執(zhí)行uboot暢通無阻,從處理器在spin_table_secondary_jump處wfe睡眠,主處理器通過修改設(shè)備樹的cpu節(jié)點的cpu-release-addr屬性為spin_table_cpu_release_addr,這是從處理器的釋" />

chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-05 16:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

補充一下一個使用自旋表作為啟動方式的平臺設(shè)備樹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睡眠,主處理器通過修改設(shè)備樹的cpu節(jié)點的cpu-release-addr屬性為spin_table_cpu_release_addr,這是從處理器的釋放地址所在的地方。

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

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

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

問題

  • 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相同的流程,這部分代碼默認是會被編譯到內(nèi)核中的


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

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

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

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

    關(guān)注

    68

    文章

    20255

    瀏覽量

    252314
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11279

    瀏覽量

    225009
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    20828
  • 設(shè)備樹
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    3573
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    飛凌嵌入式ElfBoard ELF 1板卡-初識設(shè)備設(shè)備組成和結(jié)構(gòu)

    適配不同的板卡。設(shè)備組成和結(jié)構(gòu)及dts、dtb、dtsi設(shè)備Device Tree由一系列被命名的節(jié)點(node)和屬性(propert
    發(fā)表于 01-07 09:16

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-初識設(shè)備設(shè)備組成和結(jié)構(gòu)

    適配不同的板卡。設(shè)備組成和結(jié)構(gòu)及dts、dtb、dtsi設(shè)備Device Tree由一系列被命名的節(jié)點(node)和屬性(propert
    發(fā)表于 01-08 08:32

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

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

    Linux 設(shè)備詳解

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

    Linux 設(shè)備詳解

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

    Linux 設(shè)備詳解

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

    qualcomm平臺的Little Kernel啟動流程

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

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

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

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

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

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

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

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

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

    arm linux設(shè)備都包括哪些基本信息呢

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

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

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

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

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

    深入理解設(shè)備chosen節(jié)點:固件與內(nèi)核的“配置橋梁”

    在嵌入式 Linux 開發(fā)中,設(shè)備(Device Tree)是連接硬件與內(nèi)核的關(guān)鍵紐帶。但有一個節(jié)點很特殊 —— 它不描述任何硬件模塊,卻直接決定內(nèi)核能否正常啟動,這就是chosen
    的頭像 發(fā)表于 02-09 16:36 ?138次閱讀
    深入理解<b class='flag-5'>設(shè)備</b><b class='flag-5'>樹</b>chosen<b class='flag-5'>節(jié)點</b>:固件與內(nèi)核的“配置橋梁”