色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

SMP多核啟動向內核傳遞參數信息

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

spin_table_cpu_release_addr的傳遞

由于在armv8架構下, uboot只能通過devicetree向內核傳遞參數信息 ,因此當其開啟了CONFIG_ARMV8_SPIN_TABLE配置選項后,就需要在適當的時候將該值寫入devicetree中。

我們知道uboot一般通過bootm命令啟動操作系統(aarch64支持的booti命令,其底層實現與bootm相同),因此在bootm中會執行一系列啟動前的準備工作,其中就包括將spin-table地寫入devicetree的工作。以下其執行流程圖:

圖片
spin_table_update_dt的代碼實現如下:

int spin_table_update_dt(void *fdt)
{
	…
	unsigned long rsv_addr = (unsigned long)&spin_table_reserve_begin;   
	unsigned long rsv_size = &spin_table_reserve_end -
						&spin_table_reserve_begin;                 (1)

	cpus_offset = fdt_path_offset(fdt, "/cpus");                                       (2if (cpus_offset < 0)
		return -ENODEV;

	for (offset = fdt_first_subnode(fdt, cpus_offset);                    
	     offset >= 0;
	     offset = fdt_next_subnode(fdt, offset)) {
		prop = fdt_getprop(fdt, offset, "device_type", NULL);
		if (!prop || strcmp(prop, "cpu"))
			continue;
		prop = fdt_getprop(fdt, offset, "enable-method", NULL);                    (3if (!prop || strcmp(prop, "spin-table"))
			return 0;
	}

	for (offset = fdt_first_subnode(fdt, cpus_offset);
	     offset >= 0;
	     offset = fdt_next_subnode(fdt, offset)) {
		prop = fdt_getprop(fdt, offset, "device_type", NULL);
		if (!prop || strcmp(prop, "cpu"))
			continue;

		ret = fdt_setprop_u64(fdt, offset, "cpu-release-addr",
				(unsigned long)&spin_table_cpu_release_addr);              (4if (ret)
			return -ENOSPC;
	}

	ret = fdt_add_mem_rsv(fdt, rsv_addr, rsv_size);                                    (5)
	…
}

(1)獲取其起始地址和長度

(2)從devicetree中獲取cpus節點

(3)遍歷該節點的所有cpu子節點,并校驗其enable-method是否為spin-table。若不是所有cpu的都該類型,則不設置

(4)若所有cpu的enable-method都為spin-table,則將該參數設置到cpu-release-addr屬性中

(5)由于這段地址有特殊用途,內核的內存管理系統不能將其分配給其它模塊。因此,需要將其添加到保留內存中

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

    關注

    3

    文章

    1377

    瀏覽量

    40326
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10882

    瀏覽量

    212221
  • 多核
    +關注

    關注

    0

    文章

    43

    瀏覽量

    12368
  • SMP
    SMP
    +關注

    關注

    0

    文章

    75

    瀏覽量

    19691
收藏 人收藏

    評論

    相關推薦

    AliOS Things SMP系統及其在esp32上實現示例

    對應CPU的SMP功能:2.1 核啟動加載目前的啟動順序是,系統默認開始啟動0核,在0核的主任務入口內啟動其他核的加載,使其都進入任務調度,
    發表于 05-15 12:45

    典型的支持多核處理器的RTOS功能解析

    運行中更換或重新啟動幾乎所有的模塊,甚至是設備驅動程序。QNX對多核處理器的支持基于其微內核結構,通信被集成到QNX消息傳遞原語,本地的IPC和遠端節點間的IPC一樣。在單CPU上運行
    發表于 06-29 08:30

    ARM64 SMP多核啟動相關資料推薦(上)

    ddr某個地址,為內核傳遞參數之后,然后bootloader就完成了它的使命,跳轉到內核,就進入了操作系統內核的世界。4)linux
    發表于 06-06 17:05

    ARM64 SMP多核啟動相關資料推薦(下)

    psci。下面我們來揭開他神秘的面紗,其實理解了spin-table的啟動方式,psci并不難(說白了也是需要主處理器給從處理器一個啟動地址,然后從處理器從這個地址執行指令,實際上比這要復雜的多)。下面給出psci方式多核
    發表于 06-06 17:11

    Linux在SMP系統上的移植研究

    基于自主開發以雙核嵌入式CPU EM8301為處理核心的嵌入式應用的目的,針對雙核CPU芯片的系統結構和Linux內核的特性,通過研究嵌入式Linux操作系統在SMP系統上的移植,探討SMP架構
    發表于 11-14 16:09 ?11次下載
    Linux在<b class='flag-5'>SMP</b>系統上的移植研究

    Linux內核源碼分析--內核啟動命令行的傳遞過程

    內核啟動參數其實不僅僅包含在了cmdline中,cmdline不過是bootloader傳遞內核
    發表于 05-05 15:28 ?1702次閱讀

    用戶與內核空間數據交換的方式之一:內核啟動參數

    Linux 提供了一種通過 bootloader 向其傳輸啟動參數的功能,內核開發者可以通過這種方式來向內核傳輸數據,從而控制內核
    發表于 05-14 15:42 ?510次閱讀

    BootLoader與Linux內核參數傳遞

    。5. 參數傳遞的驗證和測試參數傳遞的結果可以通過內核啟動的打印
    發表于 04-02 14:31 ?375次閱讀

    BootLoader與Linux內核參數傳遞詳細資料說明

    在嵌入式系統中, Bootloader是用來初始化硬件,加載內核傳遞參數。因為嵌入式系統的硬件環境各不相同,所以嵌入式系統的 Bootloader也各不相同,其中比較通用的是U-Boot,它支持
    發表于 03-16 10:39 ?13次下載
    BootLoader與Linux<b class='flag-5'>內核</b>的<b class='flag-5'>參數</b><b class='flag-5'>傳遞</b>詳細資料說明

    如何解讀內核的oops

    96000045表示錯誤碼。后面[]內的數值是與頁面有關的oops信息被顯示的次數。之后顯示內核的重要特性SMP和PREEMPT被顯示的配置情況。這條信息所在的
    的頭像 發表于 10-21 12:39 ?1448次閱讀

    Linux內核模塊參數傳遞與sysfs文件系統

    Linux應用開發中,為使應用程序更加靈活地執行用戶的預期功能,我們有時候會通過命令行傳遞一些參數到main函數中,使得代碼邏輯可以依據參數執行不同的任務。同樣,Linux內核也提供了
    發表于 06-07 16:23 ?2164次閱讀

    ARM64 SMP多核啟動(下)—PSCI

    上面說了pin-table的多核啟動方式,看似很繁瑣,實際上并不復雜,無外乎主處理器喚醒從處理器到指定地址上去執行指令
    發表于 06-09 14:31 ?765次閱讀
    ARM64 <b class='flag-5'>SMP</b><b class='flag-5'>多核</b><b class='flag-5'>啟動</b>(下)—PSCI

    SMP是什么?多核芯片(SMP)的啟動方法

    SMP 英文為Symmetric Multi-Processing ,是對稱多處理結構的簡稱,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構,一個服務器系統可以同時運行多個處理器,并共享內存和其他的主機資源。
    的頭像 發表于 07-26 09:26 ?1.9w次閱讀
    <b class='flag-5'>SMP</b>是什么?<b class='flag-5'>多核</b>芯片(<b class='flag-5'>SMP</b>)的<b class='flag-5'>啟動</b>方法

    SMP是什么 啟動方式介紹

    ,一個服務器系統可以同時運行多個處理器,并共享內存和其他的主機資源。 CMP 英文為Chip multiprocessors,指的是單芯片多處理器,也指多核心。其思想是將大規模并行處理器中的SMP集成到同一芯片內,各個處理器并行執行不同的進程。 (1)CPU數:獨立的中央
    的頭像 發表于 12-05 15:23 ?1865次閱讀

    SMP多核啟動cpu操作函數

    其中spin-table啟動方式的回調如下: const struct cpu_operations smp_spin_table_ops = {.name= "spin-table
    的頭像 發表于 12-05 16:04 ?812次閱讀
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b><b class='flag-5'>啟動</b>cpu操作函數
    主站蜘蛛池模板: 狠狠操伊人| 67194免费入口| 亚洲伊人网站| 99re久久热在这里精品| 韩国无遮羞禁动漫在线观看96| 亚洲中文无码亚洲人在线观看-| 国产精品久久久久影院免费| 欧美国产影院| 91se在线看片国产免费观看| 久久福利影院| 亚洲日本香蕉视频观看视频| 国产在线中文字幕| 丫鬟粗大狠狠贯穿h| 国产高清视频在线观看97| 日韩综合网| 抽插性奴中出乳精内射| 鸥美一级黄色片| 超级碰碰青草久热国产| 日本高清在线一区二区三区| 波多野结衣的AV一区二区三区| 亚洲XXX午休国产熟女屁| 国产精品亚洲精品爽爽| 小小水蜜桃免费影院| 国产精品成人自拍| 在线视频a| 老司机午夜影院试看区| 综合色就爱涩涩涩综合婷婷| 久久九九青青国产精品| 91进入蜜桃臀在线播放| 我就去色色| 国产精品一区二区三区四区五区| 伊人国产在线视频| 麻1豆传媒2021精品| ae58老司机福利| 日本丝袜护士| 六六影院午夜伦理| 韩国伦理电影在线神马网| 白人大战34厘米黑人BD| 少妇邻居内射在线| 国产人妻XXXX精品HD电影| 亚洲色图激情小说|