欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

啟動多核處理器、bootloader大小端模式自適應(yīng)的方法及裝置制造方法

文檔序號:6621013閱讀:467來源:國知局
啟動多核處理器、bootloader大小端模式自適應(yīng)的方法及裝置制造方法
【專利摘要】本發(fā)明實施例提供了啟動多核處理器、bootloader大小端模式自適應(yīng)的方法及裝置,涉及集成電路領(lǐng)域,用以一定程度上解決不同型號的處理器無法使用相同的操作系統(tǒng)的問題,提高操作系統(tǒng)的兼容性。該方法應(yīng)用于包括多核處理器和內(nèi)存的計算節(jié)點,該方法包括:主核將從核引導(dǎo)程序存儲至內(nèi)存的首地址之后的連續(xù)的存儲空間中;其中內(nèi)存的首地址被映射到總線的0地址;主核復(fù)位至少一個從核中的從核,以使從核的程序計數(shù)器PC指針指向總線的0地址,從核通過總線訪問總線的0地址映射的內(nèi)存的首地址,讀取內(nèi)存中內(nèi)存的首地址后存儲的從核引導(dǎo)程序并執(zhí)行從核引導(dǎo)程序;從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
【專利說明】啟動多核處理器、boot loader大小端模式自適應(yīng)的方法及 裝置

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及集成電路領(lǐng)域,尤其涉及啟動多核處理器、bootloader大小端模式自 適應(yīng)的方法及裝置。

【背景技術(shù)】
[0002] 操作系統(tǒng)與硬件交互緊密,各產(chǎn)品使用的芯片、單板硬件差異很大。在嵌入式領(lǐng) 域,傳統(tǒng)上的處理器的硬件型號、bootloader (譯為啟動加載器,bootloader是嵌入式系統(tǒng) 在加電后執(zhí)行的第一段代碼,在它完成處理器和相關(guān)硬件的初始化之后,再將操作系統(tǒng)鏡 像裝載到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動操作系統(tǒng)運行)版本和操作系統(tǒng)版 本需要一一對應(yīng),即每一型號的處理器(單核處理器或者多核處理器)都需要使用與其配 套的操作系統(tǒng)。操作系統(tǒng)二進(jìn)制歸一后,可以同一版本的操作系統(tǒng)支撐不同型號的處理器、 不同版本的bootloader。
[0003] 目前,處理器的多核化已成為主流,多核處理器由一個主核和至少一個從核組成。 多核處理器的啟動過程大致分為以下五個步驟:
[0004] 第一步,主核啟動,將非易失存儲器中的bootloader拷貝到內(nèi)存中運行。
[0005] 第二步,主核從bootloader跳轉(zhuǎn)到操作系統(tǒng),執(zhí)行操作系統(tǒng)中的指令,完成主核 及操作系統(tǒng)所需硬件的初始化,并將從核引導(dǎo)程序在內(nèi)存中的存放地址寫入總線的固定地 址A中;固定地址A用于存放從核引導(dǎo)程序的第一條指令在內(nèi)存中的地址。
[0006] 第三步,主核向從核發(fā)送核間中斷消息,喚醒從核,并等待從核初始化完畢。
[0007] 第四步,從核通過總線的固定地址A,獲取從核引導(dǎo)程序在內(nèi)存中的存放地址,進(jìn) 而從內(nèi)存中讀取從核引導(dǎo)程序,并執(zhí)行從核引導(dǎo)程序。
[0008] 第五步,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化,并通知主核本從核初始化完 成。
[0009] 在實現(xiàn)上述多核處理器啟動的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問 題:相同架構(gòu)下的不同型號的多核處理器以及不同架構(gòu)下的不同型號的多核處理器的總線 空間布局不同,使得內(nèi)存在總線空間上的尋址范圍不同,導(dǎo)致總線訪問內(nèi)存中存儲的從核 初始化代碼的地址和相應(yīng)的固定地址A不同。同時,由于固定地址A被硬編碼寫入操作系 統(tǒng)中,最終使得不同型號的處理器需要使用不同版本的操作系統(tǒng),操作系統(tǒng)無法完成二進(jìn) 制歸一。


【發(fā)明內(nèi)容】

[0010] 本發(fā)明的實施例提供啟動多核處理器、bootloader大小端模式自適應(yīng)的方法及裝 置,以一定程度上解決不同型號的處理器無法使用相同版本的操作系統(tǒng)的問題,提高操作 系統(tǒng)的兼容性。
[0011] 本發(fā)明的實施例采用如下技術(shù)方案:
[0012] 第一方面,本發(fā)明實施例提供了一種啟動多核處理器的方法,應(yīng)用于包括多核處 理器和內(nèi)存的計算節(jié)點,其中所述多核處理器通過總線訪問所述內(nèi)存,所述多核處理器包 含主核及至少一個從核,所述主核執(zhí)行啟動加載器bootloader,所述方法包括:所述主核 將從核引導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空間中;其中,所述內(nèi)存的首 地址被映射到所述總線的〇地址;所述主核復(fù)位所述至少一個從核中的從核,以使所述從 核的程序計數(shù)器PC指針指向所述總線的0地址,所述從核通過所述總線訪問所述總線的0 地址映射的所述內(nèi)存的首地址,讀取所述內(nèi)存中所述內(nèi)存的首地址后存儲的所述從核引導(dǎo) 程序并執(zhí)行所述從核引導(dǎo)程序;所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0013] 結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,在所述主核將從核引導(dǎo) 程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空間中之前,還包括:所述主核在所述從 核引導(dǎo)程序中添加休眠指令;所述休眠指令用于使所述從核處于休眠狀態(tài);所述主核復(fù)位 所述至少一個從核中的從核,以使所述從核的程序計數(shù)器PC指針指向所述總線的0地址, 所述從核通過所述總線訪問所述總線的〇地址映射的所述內(nèi)存的首地址,讀取所述內(nèi)存中 所述內(nèi)存的首地址后存儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo)程序,包括:所述主核 第一次復(fù)位所述從核,所述從核的PC指針指向所述總線的0地址,所述從核通過所述總線 訪問所述總線的0地址映射的所述內(nèi)存的首地址,讀取并執(zhí)行所述從核引導(dǎo)程序中的所述 休眠指令;所述主核第二次復(fù)位所述從核,所述從核的PC指針指向所述總線的0地址,所述 從核通過所述總線訪問所述總線的0地址映射的所述內(nèi)存的首地址,讀取并執(zhí)行所述從核 引導(dǎo)程序中除休眠指令之外的程序;其中,所述從核的復(fù)位次數(shù)為兩次。
[0014] 結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可 能的實現(xiàn)方式中,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化,包括:在所述 bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同的情 況下,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0015] 結(jié)合第一方面或第一方面的第一或第二種可能的實現(xiàn)方式,在第一方面的第三 種可能的實現(xiàn)方式中,在所述主核執(zhí)行啟動加載器bootloader之后,所述主核將從核引 導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空間中之前,還包括:所述主核獲取 bootloader中設(shè)置的所述主核的大小端模式;所述主核獲取操作系統(tǒng)所需的大小端模 式;在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端 模式不同的情況下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小 端模式與所述操作系統(tǒng)所需的大小端模式相同;在所述bootloader中設(shè)置的所述主核 的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情況下,還包括:所述主核將所 述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述 bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端 模式相同;或者,所述主核將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述主核所 需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳 遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的 參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù)。
[0016] 結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式 中,在所述從核執(zhí)行所述從核引導(dǎo)程序之后,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還 包括:所述從核獲取bootloader中設(shè)置的所述從核的大小端模式;所述從核獲取操作系 統(tǒng)所需的大小端模式;在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,所述從核更改所述從核的大小端模式,使得更改后的 所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;在所述bootloader中設(shè) 置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式不同,且所述主核將所述 bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況下,還包 括:所述從核將所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端 模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的 大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0017] 結(jié)合第一方面或第一方面的第一或第二種可能的實現(xiàn)方式,在第一方面的第五 種可能的實現(xiàn)方式中,在所述主核執(zhí)行啟動加載器bootloader之后,所述主核將從核引 導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空間中之前,還包括:所述主核獲取所 述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù),其中,所述bootloader傳遞給所述操作 系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字;在所述第一魔術(shù)字發(fā)生變化的情況下,所述主 核更改所述主核的大小端模式,并將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn) 行大小端模式轉(zhuǎn)換,使得更改后的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader 傳遞給所述操作系統(tǒng)的所有參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操 作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參 數(shù);或者,所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù),其 中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第二魔術(shù) 字;在所述第二魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所述 bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后 的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述主核所需 的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0018] 結(jié)合第一方面的第五種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式 中,所述從核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù),其中,所 述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔術(shù)字;在 所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,所述從核更改所述從核的大小端模式, 使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;在所述從核 確定所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的 所述主核所需的參數(shù)的情況下,還包括:所述從核將所述bootloader傳遞給所述操作系統(tǒng) 的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述 操作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0019] 結(jié)合第一方面或第一方面的第一至第六任一種可能的實現(xiàn)方式,在第一方面的第 七種可能的實現(xiàn)方式中,在所述主核復(fù)位所述至少一個從核中的從核之前,還包括:所述主 核獲取所述從核的狀態(tài);當(dāng)所述主核確定所述從核處于激活狀態(tài)時,所述主核設(shè)置所述從 核的復(fù)位次數(shù)為兩次;當(dāng)所述主核確定所述從核處于休眠狀態(tài)或未啟動狀態(tài)時,所述主核 設(shè)置所述從核的復(fù)位次數(shù)為一次。
[0020] 第二方面,本發(fā)明實施例提供了一種啟動多核處理器的方法,應(yīng)用于包括多核處 理器、內(nèi)存和非易失存儲器的計算節(jié)點,其中所述多核處理器通過總線訪問所述內(nèi)存以及 所述非易失存儲器,所述多核處理器包含主核及至少一個從核,所述方法包括:所述主核從 從核配置指令,或者從所述非易失存儲器獲取從核的配置地址;其中,所述從核配置指令設(shè) 置于啟動加載器bootloader中;所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存中所述配置地 址之后的連續(xù)的存儲空間中;所述主核向所述從核發(fā)送核間中斷消息,使得所述從核通過 所述總線訪問所述配置地址,讀取所述內(nèi)存中所述配置地址后存儲的所述從核引導(dǎo)程序并 執(zhí)行所述從核引導(dǎo)程序;所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0021] 結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述從核跳轉(zhuǎn)到操作系 統(tǒng)的代碼段,完成從核初始化,包括:在所述bootloader中設(shè)置的所述從核的大小端模式 與所述操作系統(tǒng)所需的大小端模式相同的情況下,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完 成從核初始化。
[0022] 結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能 的實現(xiàn)方式中,在所述主核從從核配置指令,或者從所述非易失存儲器獲取從核的配置地 址之后,所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存中所述配置地址之后的連續(xù)的存儲空 間中之前,還包括:所述主核獲取bootloader中設(shè)置的所述主核的大小端模式;所述主 核獲取操作系統(tǒng)所需的大小端模式;在所述bootloader中設(shè)置的所述主核的大小端模 式與所述操作系統(tǒng)所需的大小端模式不同的情況下,所述主核更改所述主核的大小端模 式,使得更改后的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;在所述 bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情 況下,還包括:所述主核將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模 式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的大小端模式與 所述操作系統(tǒng)所需的大小端模式相同;或者,所述主核將所述bootloader傳遞給所述操作 系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給 所述操作系統(tǒng)的所述主核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相 同;其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給 操作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參 數(shù)。
[0023] 結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式 中,在所述從核執(zhí)行所述從核引導(dǎo)程序之后,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還 包括:所述從核獲取bootloader中設(shè)置的所述從核的大小端模式;所述從核獲取操作系 統(tǒng)所需的大小端模式;在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,所述從核更改所述從核的大小端模式,使得更改后的 所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;在所述bootloader中設(shè) 置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式不同,且所述主核將所述 bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況下,還 包括:所述從核將所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小 端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù) 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0024] 結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第四種可能的 實現(xiàn)方式中,在所述主核從從核配置指令,或者從所述非易失存儲器獲取從核的配置地址 之后,所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存中所述配置地址之后的連續(xù)的存儲空間中 之前,還包括:所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù),其中,所述 bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字;在所述第一魔術(shù) 字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所述bootloader傳遞給 所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述主核的大小端模式以及 轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的大小端模式與所述操作系統(tǒng) 所需的大小端模式相同;其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所 述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng) 的所述從核所需的參數(shù);或者,所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述 主核所需的參數(shù),其中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首 部添加有第二魔術(shù)字;在所述第二魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大 小端模式,并將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端 模式轉(zhuǎn)換,使得更改后的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操 作系統(tǒng)的所述主核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0025] 結(jié)合第二方面的第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式 中,在所述從核執(zhí)行所述從核引導(dǎo)程序之后,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還包 括:所述從核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù),其中,所 述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔術(shù)字;在 所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,所述從核更改所述從核的大小端模式, 使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;在所述從核 確定所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的 所述主核所需的參數(shù)的情況下,還包括:所述從核將所述bootloader傳遞給所述操作系統(tǒng) 的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述 操作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0026] 結(jié)合第二方面或第二方面的第一至第五任一種可能的實現(xiàn)方式,在第二方面的第 六種可能的實現(xiàn)方式中,在所述主核從非易失存儲器獲取所述從核的配置地址之前,還包 括:所述主核從所述從核配置指令獲取所述從核的配置地址;所述主核將所述從核的配置 地址存儲至所述非易失存儲器。
[0027] 第三方面,本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的方法,應(yīng) 用于處理器,所述方法包括:獲取啟動加載器bootloader中設(shè)置的當(dāng)前核的大小端模 式;獲取操作系統(tǒng)所需的大小端模式;若所述bootloader中設(shè)置的所述當(dāng)前核的大小端 模式與所述操作系統(tǒng)所需的大小端模式不同,則更改所述當(dāng)前核的大小端模式,并將所述 bootloader傳遞給所述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述當(dāng)前核的 大小端模式以及轉(zhuǎn)換后的所述參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0028] 第四方面,本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的方法,應(yīng)用 于處理器,所述方法包括:獲取啟動加載器bootloader傳遞給操作系統(tǒng)的參數(shù),其中,所述 參數(shù)的首部添加有魔術(shù)字;若所述魔術(shù)字發(fā)生變化,則更改當(dāng)前核的大小端模式,并將所述 bootloader傳遞給所述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述當(dāng)前核的 大小端模式以及轉(zhuǎn)換后的所述參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0029] 第五方面,本發(fā)明實施例提供了一種計算節(jié)點,包括多核處理器和內(nèi)存,其中所述 多核處理器通過總線訪問所述內(nèi)存,所述多核處理器包含主核及至少一個從核,所述主核 用于執(zhí)行啟動加載器bootloader,包括:所述主核,用于將從核引導(dǎo)程序存儲至所述內(nèi)存 的首地址之后的連續(xù)的存儲空間中;其中,所述內(nèi)存的首地址被映射到所述總線的〇地址; 所述主核,還用于復(fù)位至少一個從核中的從核,以使所述從核的程序計數(shù)器PC指針指向所 述總線的〇地址;所述從核,用于通過所述總線訪問所述總線的〇地址映射的所述內(nèi)存的首 地址,讀取所述內(nèi)存中所述內(nèi)存的首地址后存儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo) 程序;所述從核,還用于跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0030] 結(jié)合第五方面,在第五方面的第一種可能的實現(xiàn)方式中,所述主核,還用于在所述 從核引導(dǎo)程序中添加休眠指令;所述休眠指令用于使所述從核處于休眠狀態(tài);所述主核, 具體用于第一次復(fù)位所述從核,所述從核的PC指針指向所述總線的0地址;所述從核,具體 用于通過所述總線訪問所述總線的0地址映射的所述內(nèi)存的首地址,讀取并執(zhí)行所述從核 引導(dǎo)程序中的所述休眠指令;所述主核,具體用于第二次復(fù)位所述從核,所述從核的PC指 針指向所述總線的0地址;所述從核,具體用于通過所述總線訪問所述總線的0地址映射的 所述內(nèi)存的首地址,讀取并執(zhí)行所述從核引導(dǎo)程序中除休眠指令之外的程序;其中,所述從 核的復(fù)位次數(shù)為兩次。
[0031] 結(jié)合第五方面或第五方面的第一種可能的實現(xiàn)方式,在第五方面的第二種可能的 實現(xiàn)方式中,所述從核,具體用于在所述bootloader中設(shè)置的所述從核的大小端模式與所 述操作系統(tǒng)所需的大小端模式相同的情況下,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0032] 結(jié)合第五方面或第五方面的第一或第二種可能的實現(xiàn)方式,在第五方面的第三種 可能的實現(xiàn)方式中,所述主核,還用于獲取bootloader中設(shè)置的所述主核的大小端模式; 所述主核,還用于獲取操作系統(tǒng)所需的大小端模式;所述主核,還用于在所述bootloader 中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所 述主核的大小端模式,使得更改后的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端 模式相同;所述主核,還用于在所述bootloader中設(shè)置的所述主核的大小端模式與所述操 作系統(tǒng)所需的大小端模式不同的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所有 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述所有參數(shù)的大小端模式與所述操作系統(tǒng)所需 的大小端模式相同;或者,將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述主核所 需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳 遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的 參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù)。
[0033] 結(jié)合第五方面的第三種可能的實現(xiàn)方式,在第五方面的第四種可能的實現(xiàn)方式 中,所述從核,還用于獲取bootloader中設(shè)置的所述從核的大小端模式;所述從核,還用于 獲取操作系統(tǒng)所需的大小端模式;所述從核,還用于在所述bootloader中設(shè)置的所述從核 的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所述從核的大小端模 式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;所述從 核,還用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大 小端模式不同,且所述主核將所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)進(jìn) 行大小端模式轉(zhuǎn)換的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述從核所 需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0034] 結(jié)合第五方面或第五方面的第一或第二種可能的實現(xiàn)方式,在第五方面的第五種 可能的實現(xiàn)方式中,所述主核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參 數(shù),其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字;所 述主核,還用于在所述第一魔術(shù)字發(fā)生變化的情況下,更改所述主核的大小端模式,并將 所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所 述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的 大小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所述 操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所 述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù);或者,所述主核,還用于獲取所述 bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù),其中,所述bootloader傳遞給所 述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第二魔術(shù)字;所述主核,還用于在所述第 二魔術(shù)字發(fā)生變化的情況下,更改所述主核的大小端模式,并將所述bootloader傳遞給所 述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述主核的大小端 模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)的大小端模式 與所述操作系統(tǒng)所需的大小端模式相同。
[0035] 結(jié)合第五方面的第五種可能的實現(xiàn)方式,在第五方面的第六種可能的實現(xiàn)方式 中,所述從核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù), 其中,所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔 術(shù)字所述參數(shù)的首部添加有魔術(shù)字;所述從核,還用于在所述從核確定所述第三魔術(shù)字發(fā) 生變化的情況下,更改所述從核的大小端模式,使得更改后的所述從核的大小端模式與所 述操作系統(tǒng)所需的大小端模式相同;所述從核,還用于在所述第三魔術(shù)字發(fā)生變化,且所述 主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的情況下,將所述 bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后 的所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作 系統(tǒng)所需的大小端模式相同。
[0036] 結(jié)合第五方面或第五方面的第一至第六任一種可能的實現(xiàn)方式,在第五方面的第 七種可能的實現(xiàn)方式中,所述主核,還用于獲取所述從核的狀態(tài);所述主核,還用于確定所 述從核處于激活狀態(tài)時,所述主核設(shè)置所述從核的復(fù)位次數(shù)為兩次;所述主核,還用于確定 所述從核處于休眠狀態(tài)或未啟動狀態(tài)時,所述主核設(shè)置所述從核的復(fù)位次數(shù)為一次。
[0037] 第六方面,本發(fā)明實施例提供了一種計算節(jié)點,包括多核處理器、內(nèi)存和非易失 存儲器,其中所述多核處理器通過總線訪問所述內(nèi)存以及所述非易失存儲器,所述多核處 理器包含主核及至少一個從核,包括:所述主核,用于從從核配置指令中,或者從所述非易 失存儲器中獲取所述從核的配置地址;其中,所述從核配置指令設(shè)置于所述啟動加載器 bootloader中;所述主核,還用于將從核引導(dǎo)程序存儲至所述內(nèi)存中所述配置地址之后的 連續(xù)的存儲空間中;所述主核,還用于向從核發(fā)送核間中斷消息;所述從核,用于通過所述 總線訪問所述配置地址,讀取所述內(nèi)存中所述配置地址后存儲的所述從核引導(dǎo)程序并執(zhí)行 所述從核引導(dǎo)程序;所述從核,還用于跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0038] 結(jié)合第六方面,在第六方面的第一種可能的實現(xiàn)方式中,所述從核,具體用于在所 述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同的 情況下,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0039] 結(jié)合第六方面或第六方面的第一種可能的實現(xiàn)方式,在第六方面的第二種可能的 實現(xiàn)方式中,所述主核,還用于獲取bootloader中設(shè)置的所述主核的大小端模式;所述主 核,還用于獲取操作系統(tǒng)所需的大小端模式;所述主核,還用于在所述bootloader中設(shè)置 的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所述主核 的大小端模式,使得更改后的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模式相 同;所述主核,還用于在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng) 所需的大小端模式不同的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn) 行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述所有參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小 端模式相同;或者,將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大 小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參 數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所 述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和 所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù)。
[0040] 結(jié)合第六方面的第二種可能的實現(xiàn)方式,在第六方面的第三種可能的實現(xiàn)方式 中,所述從核,還用于獲取bootloader中設(shè)置的所述從核的大小端模式;所述從核,還用于 獲取操作系統(tǒng)所需的大小端模式;所述從核,還用于在所述bootloader中設(shè)置的所述從核 的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所述從核的大小端模 式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;所述從 核,還用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大 小端模式不同,且所述主核將所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)進(jìn) 行大小端模式轉(zhuǎn)換的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述從核所 需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0041] 結(jié)合第六方面或第六方面的第一種可能的實現(xiàn)方式,在第六方面的第四種可能 的實現(xiàn)方式中,所述主核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù), 其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字;所述 主核,還用于在所述第一魔術(shù)字發(fā)生變化的情況下,更改所述主核的大小端模式,并將所 述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述 主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的大 小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所述操 作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所 述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù);或者,所述主核,還用于獲取所述 bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù),其中,所述bootloader傳遞給所 述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第二魔術(shù)字;所述主核,還用于在所述第 二魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所述bootloader 傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述主核 的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)的大 小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0042] 結(jié)合第六方面的第四種可能的實現(xiàn)方式,在第六方面的第五種可能的實現(xiàn)方式 中,所述從核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù), 其中,所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔 術(shù)字;所述從核,還用于在所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,更改所述從核 的大小端模式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相 同;所述從核,還用于在所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞 給所述操作系統(tǒng)的所述主核所需的參數(shù)的情況下,將所述bootloader傳遞給所述操作系 統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給操 作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0043] 結(jié)合第六方面或第六方面的第一至第五任一種可能的實現(xiàn)方式,在第六方面的第 六種可能的實現(xiàn)方式中,所述主核,還用于從所述從核配置指令獲取所述從核的配置地址; 所述主核,還用于將所述從核的配置地址存儲至所述非易失存儲器。
[0044] 第七方面,本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的裝置,包 括:獲取單元,用于獲取啟動加載器bootloader中設(shè)置的當(dāng)前核的大小端模式;所述獲取 單元,還用于獲取操作系統(tǒng)所需的大小端模式;處理單元,用于在所述bootloader中設(shè)置 的所述當(dāng)前核的大小端模式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所述當(dāng) 前核的大小端模式,并將所述bootloader傳遞給所述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn) 換,使得更改后的所述當(dāng)前核的大小端模式以及轉(zhuǎn)換后的所述參數(shù)的大小端模式與所述操 作系統(tǒng)所需的大小端模式相同。
[0045] 第八方面,本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的裝置,包 括:獲取單元,用于獲取啟動加載器bootloader傳遞給操作系統(tǒng)的參數(shù),其中,所述參數(shù)的 首部添加有魔術(shù)字;處理單元,用于在所述魔術(shù)字發(fā)生變化的情況下,更改當(dāng)前核的大小端 模式,并將所述bootloader傳遞給所述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后 的所述當(dāng)前核的大小端模式以及轉(zhuǎn)換后的所述參數(shù)的大小端模式與所述操作系統(tǒng)所需的 大小端模式相同。
[0046] 本發(fā)明實施例提供了啟動多核處理器、bootloader大小端模式自適應(yīng)的方法及裝 置,主核初始化硬件映射,將內(nèi)存的首地址映射到總線的〇地址,并將從核引導(dǎo)程序存儲至 內(nèi)存的首地址之后連續(xù)的存儲空間中;主核復(fù)位從核,以使得從核的PC (Program Counter, 程序計數(shù)器)指針指向總線的0地址,從核被復(fù)位后,從總線的0地址對應(yīng)的內(nèi)存的首地址 執(zhí)行從核引導(dǎo)程序;從核執(zhí)行完從核引導(dǎo)程序后,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始 化,并通知所述主核所述從核初始化完成。這樣,利用每種型號的多核處理器在從核被復(fù)位 后從核的PC指針指向總線的0地址的特性,建立總線的0地址與內(nèi)存的首地址的映射關(guān) 系,并將從核引導(dǎo)程序存儲在內(nèi)存的首地址后的連續(xù)的存儲空間中,使得從核被復(fù)位后能 夠通過總線的0地址對應(yīng)的內(nèi)存的首地址讀取到內(nèi)存中存儲的從核引導(dǎo)程序,并執(zhí)行所述 從核引導(dǎo)程序,從而就不需要在總線中設(shè)定用于存儲從核引導(dǎo)程序在內(nèi)存中的存放地址的 固定地址Α,實現(xiàn)了多核處理器的bootloader與操作系統(tǒng)間固定地址Α的解耦合,不需要根 據(jù)每一型號多核處理器設(shè)置匹配的操作系統(tǒng),使得不同版本型號的多核處理器可以使用相 同的操作系統(tǒng),最終完成多核處理器操作系統(tǒng)的二進(jìn)制歸一,提高了操作系統(tǒng)的兼容性。

【專利附圖】

【附圖說明】
[0047] 為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實 施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。
[0048] 圖1為本發(fā)明實施例提供的操作系統(tǒng)二進(jìn)制歸一示意圖;
[0049] 圖2為本發(fā)明所有實施例適用的一種場景;
[0050] 圖3為本發(fā)明所有實施例適用的另一種場景;
[0051] 圖4為本發(fā)明實施例提供的一種啟動多核處理器的流程示意圖;
[0052] 圖5為本發(fā)明實施例提供的另一種啟動多核處理器的流程示意圖;
[0053] 圖6為現(xiàn)有技術(shù)中處理器核對大小端場景支撐的示意圖;
[0054] 圖7為本發(fā)明實施例提供的另一種啟動多核處理器的流程示意圖;
[0055] 圖8為本發(fā)明實施例提供的另一種啟動多核處理器的流程示意圖;
[0056] 圖9為本發(fā)明實施例提供的另一種bootloader大小端模式自適應(yīng)的流程示意 圖;
[0057] 圖10為本發(fā)明實施例提供的另一種bootloader大小端模式自適應(yīng)的流程示意 圖;
[0058] 圖11為本發(fā)明實施例提供的一種計算節(jié)點的結(jié)構(gòu)示意圖;
[0059] 圖12為本發(fā)明實施例提供的另一種計算節(jié)點的結(jié)構(gòu)示意圖;
[0060] 圖13為本發(fā)明實施例提供的一種bootloader大小端模式自適應(yīng)的裝置的結(jié)構(gòu)示 意圖;
[0061] 圖14為本發(fā)明實施例提供的另一種bootloader大小端模式自適應(yīng)的裝置的結(jié)構(gòu) 示意圖。

【具體實施方式】
[0062] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護(hù)的范圍。
[0063] 多核處理器(英語:Multi_core processor),也叫多微處理器核心,是將兩個或 更多的核裝在一個單一集成電路(1C)中的方案。這些核分為一個主核和至少一個從核,每 一個核可以分別獨立運行程序指令,利用并行計算的能力,可以加快程序的運行速度,提供 多任務(wù)能力。多核處理器中有總線,多核處理器通過總線訪問內(nèi)存或者非易失存儲器等多 核處理器的外部器件。
[0064] 操作系統(tǒng)(英語;Operating System,簡稱0S)是操作系統(tǒng)是管理硬件與軟件資 源、控制其他程序運行、為用戶提供操作界面的軟件的集合。
[0065] Bootloader是在操作系統(tǒng)運行之前運行的一段程序,用于初始化硬件設(shè)備、建立 內(nèi)存空間映射圖,從而將操作系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作 系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。
[0066] 操作系統(tǒng)二進(jìn)制歸一的前后操作系統(tǒng)與bootloader、處理器之間的映射關(guān)系如圖 1所示。其中,圖1左側(cè)表示操作系統(tǒng)二進(jìn)制歸一前,操作系統(tǒng)、bootloader、處理器硬件間 的映射關(guān)系;圖1右側(cè)表示操作系統(tǒng)二進(jìn)制歸一后,操作系統(tǒng)、bootloader、處理器硬件間 的映射關(guān)系。操作系統(tǒng)二進(jìn)制歸一的場景有兩種:第一種場景,如圖2所示,當(dāng)產(chǎn)品升級硬 件,即更換處理器時,只將bootloader的版本更換為與處理器對應(yīng)的版本,不需要更新操 作系統(tǒng)的版本;第二種場景,如圖3所示,當(dāng)處理器對應(yīng)的bootloader更新時,不需要更新 操作系統(tǒng)的版本,即使用同一操作系統(tǒng)就能夠支撐新的bootloader。本發(fā)明所有實施例均 適用于以上兩種場景。
[0067] 本發(fā)明實施例提供了 一種啟動多核處理器的方法,應(yīng)用于包括多核處理器和內(nèi)存 的計算節(jié)點,其中多核處理器通過總線訪問內(nèi)存,該多核處理器包含主核及至少一個從核。 [0068] 需要說明的是,本發(fā)明實施例只描述了一個從核的啟動過程。如果該多核處理器 包含多個從核的情況下,主核先執(zhí)行步驟401-402,完成從核引導(dǎo)程序的配置,然后依次使 每一個從核執(zhí)行步驟403-404,以完成所有從核的啟動,這樣該多核處理器才完成啟動。
[0069] 如圖4所示,該方法包括:
[0070] 401、主核執(zhí)行 bootloader。
[0071] 具體的,首先該多核處理器上電,每一個核都需要判斷本核是主核還是從核;然后 判斷出是主核的情況下,完成對主核所需硬件的初始化;接著主核進(jìn)入bootloader的控制 臺,判斷是否自動啟動系統(tǒng),在確定自動啟動系統(tǒng)的情況下,跳轉(zhuǎn)至步驟402開始啟動操作 系統(tǒng),在確定不自動啟動系統(tǒng)的情況下,在bootloader的控制臺死循環(huán),直到接收到用戶 發(fā)送啟動內(nèi)核的命令后跳轉(zhuǎn)至步驟402開始啟動操作系統(tǒng)。
[0072] 402、主核將從核引導(dǎo)程序存儲至內(nèi)存的首地址之后的連續(xù)的存儲空間中。
[0073] 其中,所述內(nèi)存的首地址被映射到所述總線的0地址。
[0074] 需要說明的是,內(nèi)存的首地址是內(nèi)存中的地址,總線0的地址是總線上的地址,兩 者之間沒有固定的映射關(guān)系。為了不需要在總線中設(shè)定用于存放從核引導(dǎo)程序在內(nèi)存中的 存放地址的固定地址A,在此需要使內(nèi)存的首地址映射到總線的0地址,并利用主核復(fù)位從 核,從核被復(fù)位后PC指針指向總線的0地址的特性,將從核引導(dǎo)程序存儲至內(nèi)存的首地址 后連續(xù)的存儲空間中,以使得通過總線的〇地址映射的內(nèi)存的首地址能夠獲取到從核引導(dǎo) 程序。
[0075] 需要說明的是,在執(zhí)行步驟402之前,需要保證內(nèi)存的首地址與總線的0地址存在 映射關(guān)系。多核處理器設(shè)置有一位特定的寄存器,當(dāng)主核上電后,寄存器的默認(rèn)值為1,則主 核跳轉(zhuǎn)至非易失存儲器中讀取數(shù)據(jù);當(dāng)寄存器的值改為0時,主核從內(nèi)存中讀取數(shù)據(jù)。當(dāng)然 對于在不同型號的多核的處理器,此寄存器的狀態(tài)也可能反過來設(shè)置,默認(rèn)值為0,跳轉(zhuǎn)至 非易失存儲器;值為1時,跳轉(zhuǎn)至內(nèi)存。本實施例中將內(nèi)存的首地址映射到總線的0地址的 過程,就是設(shè)置該寄存器以使得主核能夠從內(nèi)存中讀取數(shù)據(jù)的過程。
[0076] 本發(fā)明實施例中的非易失存儲器,例如是Norflash(-種閃存)或R0M(Read Only Memory,只讀存儲器),本發(fā)明實施例中的內(nèi)存例如是DDR (Doub 1 e Data Rate,雙倍速率同 步動態(tài)隨機(jī)存儲器),SRAM (Static Random Access Memory,靜態(tài)隨機(jī)存儲器)。本發(fā)明實 施例中的多核處理器,例如,MIPS(Microprocessor without Interlocked Piped Stages, 無內(nèi)部互鎖流水級的微處理器)、ARM(英文:Acorn RISC Machine)等精簡指令架構(gòu)的多核 處理器。
[0077] 需要說明的是,在多核處理器包括多個從核的情況下,所有從核的從核引導(dǎo)程序 是共用的,也就是說,每個從核在被復(fù)位后,都會到總線的〇地址對應(yīng)的內(nèi)存的首地址后連 續(xù)的存儲空間中去讀取相同的從核引導(dǎo)程序。
[0078] 需要說明的是,數(shù)據(jù)在存儲器中的存放順序分為大端模式和小端模式。大端模式 (Big-Endian)就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端。小 端模式(Little-Endian)就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高 地址端。處理器核的大小端模式必須和數(shù)據(jù)存儲時的大小端模式相同,才能正確的讀取數(shù) 據(jù)。本實施例默認(rèn)存儲的bootloader設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端 模式相同,所以不需要考慮bootloader中設(shè)置的主核的大小端模式是否與操作系統(tǒng)所需 的大小端模式是否相同,
[0079] 執(zhí)彳了完步驟401后直接執(zhí)彳了步驟402。
[0080] 403、主核復(fù)位至少一個從核中的從核,以使得從核的PC(Program Counter,程序 計數(shù)器)指針指向總線的〇地址,從核被復(fù)位,通過所述總線訪問總線的〇地址映射的內(nèi)存 的首地址,讀取內(nèi)存中所述內(nèi)存的首地址后存儲的從核引導(dǎo)程序并執(zhí)行從核引導(dǎo)程序。
[0081] 需要說明的是,本實施例主要是通過所有的多核處理器在主核復(fù)位從核后,從核 的PC指針指向總線的0地址的特性,將內(nèi)存的首地址映射到總線的0地址處,并且將從核 引導(dǎo)程序存儲至內(nèi)存的首地址后連續(xù)的存儲空間中,不需要為每一型號多核處理器設(shè)置匹 配的操作系統(tǒng),從而實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。
[0082] 具體的,通過主核復(fù)位從核的方式將從核喚醒,從核被主核復(fù)位后的PC指針指向 總線的0地址,根據(jù)總線的0地址與內(nèi)存的首地址的映射關(guān)系,通過總線訪問總線的0地址 映射的內(nèi)存的首地址,讀取并執(zhí)行存儲于內(nèi)存的首地址后的從核引導(dǎo)程序。
[0083] 需要說明的是,主核每次只復(fù)位一個從核,被復(fù)位的從核的PC指針會指向總線的 0地址,即被復(fù)位的從核被主核喚醒,開始運行。
[0084] 此處沒有限制主核對從核進(jìn)行幾次復(fù)位,主核可能對從核進(jìn)行兩次復(fù)位,也可能 只對從核進(jìn)行一次復(fù)位。
[0085] 404、從核執(zhí)行完從核引導(dǎo)程序后,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0086] 具體的,從核初始化的步驟包括:從核Llcache、MMU(Memory Management Unit,內(nèi) 存管理單元)、TLB(Translation Lookaside Buffer,旁路轉(zhuǎn)換緩沖或頁表緩沖)等其它的 初始化;所有核online (上線);該從核加入該多核處理器的調(diào)度域。
[0087] 本實施例默認(rèn)存儲的bootloader設(shè)置的從核的大小端模式與操作系統(tǒng)所需的大 小端模式相同,所以不需要考慮bootloader中設(shè)置的從核的大小端模式是否與操作系統(tǒng) 所需的大小端模式是否相同,執(zhí)行完步驟403后直接執(zhí)行步驟404。
[0088] 需要說明的是,主核能夠確定所在處理器中一共有幾個從核,并且會在共享內(nèi)存 中設(shè)置一個啟動標(biāo)識。主核復(fù)位一個從核,在被復(fù)位的從核初始化完成后,從核會更改共享 內(nèi)存中的啟動標(biāo)識,以通知主核該從核啟動完畢。同時,主核會輪詢共享內(nèi)存中的啟動標(biāo) 識,根據(jù)啟動標(biāo)識判斷這個從核是否啟動完畢;在啟動標(biāo)識的被更改的情況下,重新初始化 啟動標(biāo)識,開始啟動下一個從核。
[0089] 從核初始化完成后,在還有其他從核未啟動的情況下,繼續(xù)執(zhí)行步驟403-404,對 其他從核進(jìn)行初始化;當(dāng)至少一個從核中的每個從核均完成從核初始化后,本發(fā)明實施例 的多核處理器完成啟動。
[0090] 本發(fā)明實施例提供了一種啟動多核處理器的方法,在內(nèi)存的首地址映射總線的0 地址的情況下,將從核引導(dǎo)程序存儲至內(nèi)存的首地址之后的連續(xù)的存儲空間中;主核復(fù)位 從核,以使得從核的PC指針指向總線的0地址,從核被復(fù)位后,通過所述總線訪問總線的 0地址映射的內(nèi)存的首地址,讀取內(nèi)存中所述內(nèi)存的首地址后存儲的從核引導(dǎo)程序,并執(zhí) 行從核引導(dǎo)程序;從核執(zhí)行完從核引導(dǎo)程序后,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始 化。這樣,利用每種型號的多核處理器在從核被主核復(fù)位后從核的PC指針指向總線的0地 址的特性,建立總線的0地址與內(nèi)存的首地址的映射關(guān)系,并將從核引導(dǎo)程序存儲在內(nèi)存 的首地址后的連續(xù)的存儲空間中,使得從核被復(fù)位后能夠通過總線的0地址對應(yīng)的內(nèi)存的 首地址讀取到內(nèi)存中存儲的從核引導(dǎo)程序,并執(zhí)行所述從核引導(dǎo)程序,從而就不需要在總 線中設(shè)定用于存儲從核引導(dǎo)程序在內(nèi)存中的存放地址的固定地址A,實現(xiàn)了多核處理器的 bootloader與操作系統(tǒng)間固定地址A的解耦合,不需要根據(jù)每一型號多核處理器設(shè)置匹配 的操作系統(tǒng),使得不同版本型號的多核處理器可以使用相同的操作系統(tǒng),最終完成多核處 理器操作系統(tǒng)的二進(jìn)制歸一,提高了操作系統(tǒng)的兼容性。
[0091] 本發(fā)明實施例提供了一種啟動多核處理器的方法,應(yīng)用于包括多核處理器和內(nèi)存 的計算節(jié)點,其中該多核處理器通過總線訪問內(nèi)存,該多核處理器包含主核及至少一個從 核。
[0092] 需要說明的是,本發(fā)明實施例只描述了一個從核的啟動過程。如果該多核處理器 包含多個從核的情況下,主核先執(zhí)行步驟501-511,完成從核引導(dǎo)程序的配置,然后依次使 每一個從核執(zhí)行步驟512-523,以完成所有從核的啟動,這樣該多核處理器才完成啟動。
[0093] 如圖5所示,該方法包括:
[0094] 501、主核執(zhí)行 bootloader。
[0095] 具體的,可參考步驟401,在此不再贅述。
[0096] 502、主核在從核引導(dǎo)程序中添加休眠指令。
[0097] 其中,休眠指令用于使從核處于休眠狀態(tài)。
[0098] 此時,從核引導(dǎo)程序中不僅有原本的啟動該從核所需的程序,還有休眠指令,相應(yīng) 的,主核需要設(shè)定從核復(fù)位次數(shù),從核根據(jù)從核復(fù)位次數(shù)確定從核被復(fù)位以后是執(zhí)行從核 引導(dǎo)程序中的休眠指令還是執(zhí)行從核引導(dǎo)程序中啟動該從核的相關(guān)程序。
[0099] 需要說明的是,從核引導(dǎo)程序中的休眠指令是一條匯編指令,執(zhí)行這條指令時,從 核停留在這條指令處,等待被中斷或者等待主核復(fù)位該從核。
[0100] 需要說明的是,若從核處于休眠狀態(tài),那么從核滿足啟動條件,即從核被復(fù)位后, 從核的PC指針一定會指向總線的0地址。
[0101] 現(xiàn)有技術(shù)中,業(yè)界從核啟動流程對大小端場景支撐情況如圖6所示,bootloader 的大小端模式與操作系統(tǒng)的大小端模式必須一致,只能用小端模式的bootloader啟動小 端模式的操作系統(tǒng),大端模式的bootloader啟動大端模式的操作系統(tǒng),這樣會導(dǎo)致同一個 操作系統(tǒng)不能使用不同大小端模式的bootloader,無法完全實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。 本實施例中的步驟503-506與步驟507-510是使bootloader中設(shè)置的主核的大小端模式 與操作系統(tǒng)的大小端模式兼容的兩種方法,所以只需要執(zhí)行步驟503-506或步驟507-510 中的任一種即可。
[0102] 503、主核獲取bootloader中設(shè)置的主核的大小端模式。
[0103] 具體的,主核讀取主核的狀態(tài)寄存器,從狀態(tài)寄存器中存儲的大小端模式信息,確 定bootloader中設(shè)置的主核的大小端模式。
[0104] 需要說明的是,由于bootloader在編寫時與操作系統(tǒng)是相互分離的,所以存在 bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式不匹配的可能,為了 同一個操作系統(tǒng)能夠使用不同的bootloader,也就是實現(xiàn)多核處理器操作系統(tǒng)的二進(jìn)制歸 一,所以需要將主核的大小端模式進(jìn)行調(diào)整。
[0105] 需要說明的是,bootloader中設(shè)置的主核的大小端模式與bootloader的大小端 模式相同,由于bootloader的大小端模式是固定的,并且操作系統(tǒng)所需的大小端模式也是 固定的,而主核的大小端模式是可以改變的,所以需要通過判斷bootloader中設(shè)置的主核 的大小端模式與操作系統(tǒng)所需的大小端模式是否一致,來判斷是否需要更改主核的大小端 模式。
[0106] 504、主核獲取操作系統(tǒng)所需的大小端模式。
[0107] 具體的,主核通過數(shù)據(jù)訪問方式讀取操作系統(tǒng)代碼段的指令,并根據(jù)機(jī)器碼的編 碼規(guī)則,判斷讀取系統(tǒng)代碼段的指令是否被翻轉(zhuǎn),從而確定操作系統(tǒng)所需的大小端模式。
[0108] 505、在bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式不 同的情況下,主核更改主核的大小端模式,使得更改后的主核的大小端模式與操作系統(tǒng)所 需的大小端模式相同。
[0109] 506、在bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式不 同的情況下,主核將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn) 換后的bootloader傳遞給操作系統(tǒng)的所有參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模 式相同;或者,主核將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn) 換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)的大小端模式與操作系 統(tǒng)所需的大小端模式相同。
[0110] 其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)包括:bootloader傳遞給操作系統(tǒng) 的主核所需的參數(shù)和bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)。
[0111] 需要說明的是,因為bootloader傳遞給操作系統(tǒng)的參數(shù)的大小端模式以及 bootloader中設(shè)置的主核的大小端模式與bootloader的大小端模式一致。所以在 bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式不相同,也就是, bootloader傳遞給操作系統(tǒng)的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式不相同, 此時,需要將bootloader傳遞給操作系統(tǒng)的參數(shù)的大小端模式進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的參 數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同,以便操作系統(tǒng)能夠正確讀取該參 數(shù)。
[0112] 需要說明的是,主核此時轉(zhuǎn)換的參數(shù)有兩種情況:第一種情況,主核將 bootloader傳遞給操作系統(tǒng)的所有參數(shù)都進(jìn)行大小端模式轉(zhuǎn)換,此時,主核轉(zhuǎn)換的參數(shù)包 括:bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)和bootloader傳遞給操作系統(tǒng)的從核 所需的參數(shù);第二種情況,主核在此只將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn) 行大小端模式轉(zhuǎn)換,這種情況下,從核在跳轉(zhuǎn)到操作系統(tǒng)時,才確定是否將bootloader傳 遞給操作系統(tǒng)的從核需要的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換。
[0113] 需要說明的是,bootloader傳遞給操作系統(tǒng)的參數(shù)包括內(nèi)存的大小,串口傳輸速 率等信息。
[0114] 需要說明的是,在bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大 小端模式相同的情況下,不執(zhí)行步驟505-506,直接執(zhí)行步驟511。
[0115] 需要說明的是,根據(jù)主核獲取的參數(shù)是bootloader傳遞給操作系統(tǒng)的所有參數(shù), 還是bootloader傳遞給操作系統(tǒng)的所有參數(shù)中主核所需的參數(shù),分別執(zhí)行步驟507-508或 者步驟509-510。
[0116] 507、主核獲取bootloader傳遞給操作系統(tǒng)的所有參數(shù)。
[0117] 其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字。 bootloader傳遞給操作系統(tǒng)的所有參數(shù)包括:bootloader傳遞給操作系統(tǒng)的主核所需的 參數(shù)和bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)。
[0118] 第一魔術(shù)字是預(yù)先設(shè)定的由出現(xiàn)頻率低且較奇特的數(shù)字或字母的組合。第一魔術(shù) 字用于判斷bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式是否相 同。
[0119] 此時,bootloader是將操作系統(tǒng)所需的所有參數(shù)一次全部傳遞給操作系統(tǒng)。 bootloader傳遞給操作系統(tǒng)的參數(shù)包括內(nèi)存的大小,串口傳輸速率等信息。
[0120] 508、在第一魔術(shù)字發(fā)生變化的情況下,主核更改主核的大小端模式,并將 bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的主核的大小端 模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的所有參數(shù)的大小端模式與所述操作系統(tǒng) 所需的大小端模式相同。
[0121] 具體的,主核將獲取到的第一魔術(shù)字與預(yù)先存儲的第一魔術(shù)字比較,當(dāng)獲取的第 一魔術(shù)字與預(yù)先存儲的第一魔術(shù)字不同,就說明主核的大小端模式與操作系統(tǒng)所需的大小 端模式不同,主核更改主核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大 小端模式轉(zhuǎn)換。
[0122] 需要說明的是,在第一魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟508,直接執(zhí)行 步驟511。
[0123] 509、主核獲取bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)。
[0124] 其中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加 有第二魔術(shù)字。
[0125] 第二魔術(shù)字也是預(yù)先設(shè)定的由出現(xiàn)頻率低且較奇特的數(shù)字或字母的組合,但是第 二魔術(shù)字與第一魔術(shù)字不同。
[0126] 510、在第二魔術(shù)字發(fā)生變化的情況下,主核更改主核的大小端模式,并將 bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述主 核的大小端模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)的大小端模 式與操作系統(tǒng)所需的大小端模式相同。
[0127] 具體的,主核將獲取到的第二魔術(shù)字與預(yù)先存儲的第二魔術(shù)字比較,當(dāng)獲取的第 二魔術(shù)字與預(yù)先存儲的第二魔術(shù)字不同,就說明主核的大小端模式與操作系統(tǒng)所需的大小 端模式不同,主核更改主核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的主核所需的 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換。
[0128] 需要說明的是,在第二魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟510,直接執(zhí)行 步驟511。
[0129] 511、主核將從核引導(dǎo)程序存儲至內(nèi)存的首地址之后的連續(xù)的存儲空間中。
[0130] 其中,內(nèi)存的首地址被映射到總線的0地址。
[0131] 具體的,可參考步驟402,在此不再贅述。
[0132] 512、主核獲取從核的狀態(tài)。
[0133] 需要說明的是,主核需要確定從核的狀態(tài),進(jìn)而確定對從核進(jìn)行一次復(fù)位還是兩 次復(fù)位。
[0134] 513、主核確定從核處于激活狀態(tài)時,主核設(shè)置從核的復(fù)位次數(shù)為兩次。
[0135] 需要說明的是,如果從核處于激活狀態(tài),那么可能從核的相關(guān)硬件不滿足從核啟 動所需的條件,所以需要對從核進(jìn)行兩次復(fù)位。第一次主核復(fù)位從核,是為了使從核執(zhí)行從 核引導(dǎo)程序中的休眠指令,進(jìn)入休眠狀態(tài),也就是說是為了配置相關(guān)硬件,以使得滿足從核 啟動所需的條件;第二次主核復(fù)位從核,是為了使從核執(zhí)行引導(dǎo)程序中啟動從核所需的程 序,完成從核的啟動。
[0136] 需要說明的是,主核將從核的復(fù)位次數(shù)存儲于固定的總線地址中,從核被復(fù)位后 從固定的總線地址中讀取自身的復(fù)位次數(shù),以判斷執(zhí)行從核引導(dǎo)程序中的休眠指令或從核 引導(dǎo)程序中啟動該從核的相關(guān)程序。
[0137] 514、主核確定從核處于休眠狀態(tài)或未啟動狀態(tài)時,主核設(shè)置從核的復(fù)位次數(shù)為一 次。
[0138] 需要說明的是,如果從核處于休眠狀態(tài)或未啟動狀態(tài),那么從核的相關(guān)硬件滿足 從核啟動所需的條件,所以只需要對從核進(jìn)行一次復(fù)位就可以完成從核的啟動。
[0139] 515、主核復(fù)位從核,以使從核的PC指針指向總線的0地址,從核被復(fù)位,通過所述 總線訪問總線的〇地址映射的內(nèi)存的首地址,讀取內(nèi)存中內(nèi)存首地址后存儲的從核引導(dǎo)程 序并執(zhí)行從核引導(dǎo)程序。
[0140] 具體的,步驟515可以分解為以下三個步驟:
[0141] 步驟一:主核復(fù)位從核,從核被復(fù)位,從核的PC指針指向總線的0地址,并獲取從 核的復(fù)位次數(shù)。
[0142] 需要說明的是,從核獲取的從核的復(fù)位次數(shù)的值可能是一次,也有可能是兩次。
[0143] 具體的,在主核將從核的復(fù)位次數(shù)存儲至總線的固定地址中的情況下,從核獲取 自身復(fù)位次數(shù)的過程就是從核到總線固定地址讀取該固定地址中存儲的值的過程。
[0144] 需要說明的是,從核需要根據(jù)復(fù)位次數(shù)來判斷跳轉(zhuǎn)至總線空間0地址對應(yīng)的內(nèi)存 空間首地址后,是執(zhí)行從核引導(dǎo)程序中啟動從核的程序,還是執(zhí)行從核引導(dǎo)程序中的休眠 指令。
[0145] 步驟二、在從核的復(fù)位次數(shù)為兩次的情況下,從核通過總線訪問總線空間0地址 映射的內(nèi)存的首地址,讀取并執(zhí)行從核引導(dǎo)程序中的休眠指令,將從核的復(fù)位次數(shù)減一并 等待從核再次被主核復(fù)位。
[0146] 需要說明的是,在從核確定需要進(jìn)行兩次復(fù)位的情況下,步驟一和步驟二使得從 核完成第一次復(fù)位,從核從激活狀態(tài)變?yōu)樾菝郀顟B(tài),也就是配置相關(guān)硬件滿足了從核啟動 的條件,并等待主核第二次復(fù)位,以完成從核啟動。
[0147] 需要說明的是,在從核進(jìn)入休眠狀態(tài)的同時,主核會將從核的復(fù)位次數(shù)減一,以使 得從核在進(jìn)行第二次復(fù)位時,判斷出的復(fù)位次數(shù)為一次,從而執(zhí)行從核引導(dǎo)程序中除休眠 指令之外的程序,而不是執(zhí)行從核引導(dǎo)程序中的休眠指令。
[0148] 需要說明的是,從核進(jìn)入休眠狀態(tài)后,等待第二次被主核復(fù)位,在從核第二次被主 核復(fù)位的情況下,跳轉(zhuǎn)至步驟一。
[0149] 步驟三:在從核的復(fù)位次數(shù)為一次的情況下,從核通過總線訪問總線的0地址映 射的內(nèi)存的首地址,讀取并執(zhí)行從核引導(dǎo)程序中除休眠指令之外的程序,完成從核的啟動。
[0150] 需要說明的是,在主核對從核進(jìn)行兩次復(fù)位的情況下,執(zhí)行步驟順序為:步驟一、 步驟二、步驟一、步驟三;在主核對從核進(jìn)行一次復(fù)位的情況下,執(zhí)行步驟順序為:步驟一、 步驟三。
[0151] 需要說明的是,為了提高從核引導(dǎo)程序的健壯性,避免程序被篡改,可以在從核引 導(dǎo)程序的最前端加入一些出現(xiàn)頻率低且較奇特的數(shù)字或字母組成的魔術(shù)字。在從核讀取自 身的引導(dǎo)程序之前,判斷從核引導(dǎo)程序的魔術(shù)字與系統(tǒng)預(yù)定義的從核引導(dǎo)程序的魔術(shù)字是 否相同,來判斷存儲的從核引導(dǎo)程序是否經(jīng)過篡改。在從核引導(dǎo)程序的魔術(shù)字與系統(tǒng)預(yù)定 義的從核引導(dǎo)程序的魔術(shù)字相同的情況下,從核才讀取從核引導(dǎo)程序,執(zhí)行從核引導(dǎo)程序 中的休眠指令或者執(zhí)行從核引導(dǎo)程序中除休眠指令外的其他程序;在從核引導(dǎo)程序的魔術(shù) 字與系統(tǒng)預(yù)定義的從核引導(dǎo)程序的魔術(shù)字不相同的情況下,說明從核引導(dǎo)程序經(jīng)過篡改, 從核不能獲取正確的從核引導(dǎo)程序,所以該從核啟動失敗,此時不用執(zhí)行以下所有步驟。
[0152] 現(xiàn)有技術(shù)中,業(yè)界從核啟動流程對大小端場景支撐情況如圖6所示,bootloader 的大小端模式與操作系統(tǒng)的大小端模式必須一致,只能用小端模式的bootloader啟動小 端模式的操作系統(tǒng),大端模式的bootloader啟動大端模式的操作系統(tǒng),這樣會導(dǎo)致同一個 操作系統(tǒng)不能使用不同大小端模式的bootloader,無法完全實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。 本實施例中的步驟516-519與步驟520-522是使bootloader中設(shè)置的從核的大小端模式 與操作系統(tǒng)的大小端模式兼容的兩種方法,所以只需要執(zhí)行步驟516-519或步驟520-522 中的任一種即可。
[0153] 需要說明的是,數(shù)據(jù)在存儲器中的存放順序分為大端模式和小端模式。大端模式 (Big-Endian)就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端。小 端模式(Little-Endian)就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高 地址端。處理器核的大小端模式必須和數(shù)據(jù)存儲時的大小端模式相同,才能正確的讀取數(shù) 據(jù)。
[0154] 516、從核執(zhí)行完從核引導(dǎo)程序后,從核獲取bootloader中設(shè)置的從核的大小端 模式。
[0155] 具體的,從核讀取本從核的狀態(tài)寄存器,從狀態(tài)寄存器中存儲的大小端模式信息, 確定bootloader中設(shè)置的從核的大小端模式。
[0156] 需要說明的是,由于bootloader在編寫時與操作系統(tǒng)是相互分離的,所以存在 bootloader中設(shè)置的從核的大小端模式與操作系統(tǒng)所需的大小端模式不匹配的可能,為了 同一個操作系統(tǒng)能夠使用不同的bootloader,也就是實現(xiàn)多核處理器操作系統(tǒng)的二進(jìn)制歸 一,所以需要將從核的大小端模式進(jìn)行調(diào)整,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換。
[0157] 需要說明的是,bootloader中設(shè)置的從核的大小端模式與bootloader的大小端 模式相同,由于bootloader的大小端模式是固定的,并且操作系統(tǒng)所需的大小端模式也是 固定的,而從核的大小端模式是可以改變的,所以需要通過判斷bootloader中設(shè)置的從核 的大小端模式與操作系統(tǒng)所需的大小端模式是否一致,來判斷是否需要更改從核的大小端 模式。
[0158] 517、從核獲取操作系統(tǒng)所需的大小端模式。
[0159] 具體的,從核通過數(shù)據(jù)訪問方式讀取操作系統(tǒng)代碼段的指令,并根據(jù)機(jī)器碼的編 碼規(guī)則,判斷讀取系統(tǒng)代碼段的指令是否被翻轉(zhuǎn),從而確定操作系統(tǒng)所需的大小端模式。
[0160] 518、若bootloader中設(shè)置的從核的大小端模式與操作系統(tǒng)所需的大小端模式不 同,則從核更改從核的大小端模式,使得更改后的從核的大小端模式與操作系統(tǒng)所需的大 小端模式相同。
[0161] 需要說明的是,因為bootloader傳遞給操作系統(tǒng)的參數(shù)的大小端模式是與 bootloader中設(shè)置的從核的大小端模式相同,所以在從核的大小端模式與操作系統(tǒng)所需的 大小端模式不相同的情況下,需要將從核的大小端模式進(jìn)行轉(zhuǎn)換,使得更改后的從核的大 小端模式與所述操作系統(tǒng)所需的大小端模式相同,以便操作系統(tǒng)能夠正確讀取操作系統(tǒng)。
[0162] 519、在bootloader中設(shè)置的從核的大小端模式與操作系統(tǒng)所需的大小端模式不 同,且主核將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況 下,從核將bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換 后的bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小 端模式相同。
[0163] 需要說明的是,在主核只將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換,而不是將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換 的情況下,bootloader傳遞給操作系統(tǒng)的參數(shù)中從核所需的參數(shù)還沒有經(jīng)過大小端模式 轉(zhuǎn)換。所以在從核的大小端模式與操作系統(tǒng)所需的大小端模式不同的情況下,進(jìn)一步還要 將將bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換使得轉(zhuǎn)換后的 bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模 式相同。
[0164] 需要說明的是,在主核將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模 式轉(zhuǎn)換的情況下,bootloader傳遞給操作系統(tǒng)的參數(shù)中從核所需的參數(shù)已經(jīng)經(jīng)過大小端模 式轉(zhuǎn)換,與操作系統(tǒng)所需的大小端模式相同,所以此種情況下,不執(zhí)行步驟519。
[0165] 需要說明的是,在從核確定從核的大小端模式與操作系統(tǒng)所需的大小端模式相同 的情況下,不執(zhí)行步驟518-519,直接執(zhí)行步驟523。
[0166] 520、從核獲取bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)。
[0167] 其中,bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的首部添加有第三魔術(shù)字。
[0168] 需要說明的是,第三魔術(shù)字也是預(yù)先設(shè)定的由出現(xiàn)頻率低且較奇特的數(shù)字或字母 的組合,但是第二魔術(shù)字與第一魔術(shù)字和第二魔術(shù)字均不同。
[0169] 需要說明的是,第三魔術(shù)字的大小端模式與bootloader中設(shè)置的從核的大小端 模式相同。如果從核讀取的第三魔術(shù)字正確,就說明操作系統(tǒng)的大小端模式與bootloader 中設(shè)置的從核的大小端模式相同;如果根據(jù)操作系統(tǒng)讀取的參數(shù)的魔術(shù)字不正確,就說明 操作系統(tǒng)的大小端模式與bootloader中設(shè)置的從核的大小端模式不相同。
[0170] 521、在從核確定第三魔術(shù)字發(fā)生變化的情況下,從核更改從核的大小端模式,使 得更改后的從核的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0171] 具體的,從核將獲取到的第三魔術(shù)字與預(yù)先存儲的第三魔術(shù)字比較,當(dāng)獲取的第 三魔術(shù)字與預(yù)先存儲的第三魔術(shù)字不同,就說明從核的大小端模式與操作系統(tǒng)所需的大小 端模式不同,從核更改從核的大小端模式。
[0172] 522、在從核確定第三魔術(shù)字發(fā)生變化,且主核獲取bootloader傳遞給所述操作 系統(tǒng)的主核所需的參數(shù)的情況下,從核將bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的大 小端模式與操作系統(tǒng)所需的大小端模式相同。
[0173] 需要說明的是,在主核只將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換,而不是將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換 的情況下,bootloader傳遞給操作系統(tǒng)的參數(shù)中從核所需的參數(shù)還沒有經(jīng)過大小端模式 轉(zhuǎn)換。所以在從核的大小端模式與操作系統(tǒng)所需的大小端模式不同的情況下,進(jìn)一步還 要將bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換使得轉(zhuǎn)換后的 bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模 式相同。
[0174] 需要說明的是,在主核將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模 式轉(zhuǎn)換的情況下,bootloader傳遞給操作系統(tǒng)的參數(shù)中從核所需的參數(shù)已經(jīng)經(jīng)過大小端模 式轉(zhuǎn)換,與操作系統(tǒng)所需的大小端模式相同,所以此種情況下,不執(zhí)行步驟522。
[0175] 需要說明的是,在第三魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟521-522,直接 執(zhí)行步驟523。
[0176] 523、跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0177] 具體的,可參考步驟404,在此不再贅述。
[0178] 需要說明的是,執(zhí)行步驟523時,已經(jīng)能夠保證從核的大小端模式與操作系統(tǒng)所 需的大小端模式完全相同。
[0179] 本發(fā)明實施例提供了一種啟動多核處理器的方法,主核在從核引導(dǎo)程序中添加休 眠指令;判斷bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的主核的大小端模 式是否相同,在不相同的情況下,更改主核的大小端模式;在內(nèi)存的首地址映射到總線的〇 地址的情況下,將從核引導(dǎo)程序存儲至內(nèi)存的首地址之后連續(xù)的存儲空間中;主核獲取從 核的狀態(tài),根據(jù)從核狀態(tài)設(shè)定從核復(fù)位次數(shù);主核對從核進(jìn)行一次或者兩次復(fù)位,以使從核 的PC指針指向總線的0地址,從核通過所述總線訪問總線的0地址映射的內(nèi)存的首地址, 讀取并執(zhí)行從核引導(dǎo)程序;從核執(zhí)行完從核引導(dǎo)程序后,判斷bootloader中設(shè)置的從核的 大小端模式與操作系統(tǒng)所需的從核的大小端模式是否相同,在兩者不相同的情況下,更改 從核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換;最后跳 轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。這樣,利用每種型號的多核處理器在從核被復(fù) 位后從核的PC指針指向總線的0地址的特性,在總線的0地址與內(nèi)存的首地址存在映射 關(guān)系的情況下,將從核引導(dǎo)程序存儲在內(nèi)存的首地址后的連續(xù)的存儲空間中,使得從核被 復(fù)位后能夠通過總線的〇地址對應(yīng)的內(nèi)存的首地址讀取到內(nèi)存中存儲的從核引導(dǎo)程序,并 執(zhí)行所述從核引導(dǎo)程序,從而就不需要在總線中設(shè)定用于存儲從核引導(dǎo)程序在內(nèi)存中的存 放地址的固定地址A,實現(xiàn)了多核處理器的bootloader與操作系統(tǒng)間固定地址A的解奉禹 合,不需要根據(jù)每一型號多核處理器設(shè)置匹配的操作系統(tǒng),使得不同版本型號的多核處理 器可以使用相同的操作系統(tǒng),最終完成多核處理器操作系統(tǒng)的二進(jìn)制歸一,提高了操作系 統(tǒng)的兼容性。并且本實施例中考慮到從核處于激活狀態(tài)的情況下,復(fù)位后不能滿足從核啟 動條件,所以此時對從核進(jìn)行兩次復(fù)位,第一次主核復(fù)位從核使得從核滿足啟動條件,第二 次主核復(fù)位從核使得成功啟動,從而進(jìn)一步保證了從核的成功啟動。同時,本實施例中根據(jù) bootloader中設(shè)置的主核或從核的大小端模式與操作系統(tǒng)所需的大小端模式確定是否更 改主核或從核的大小端模式,使得多核處理器使用同一個操作系統(tǒng)可以兼容不同大小端模 式的bootloader,進(jìn)一步減少了多核處理器操作系統(tǒng)二進(jìn)制歸一的約束,提高了操作系統(tǒng) 的兼容性。最終,本發(fā)明解除了兩個操作系統(tǒng)二進(jìn)制歸一的使用約束,使得同一版本的操作 系統(tǒng)能運行于更多的bootloader和處理器,極大提高開發(fā)、測試、維護(hù)的效率,同時減少開 發(fā)、測試、維護(hù)的成本。
[0180] 本發(fā)明實施例提供了一種啟動多核處理器的方法,應(yīng)用于包括多核處理器、內(nèi)存 和非易失存儲器的計算節(jié)點,其中多核處理器通過總線訪問內(nèi)存以及非易失存儲器,該多 核處理器包含主核及至少一個從核。
[0181] 需要說明的是,本發(fā)明實施例只描述了一個從核的啟動過程。如果該多核處理器 包含多個從核的情況下,主核先執(zhí)行步驟701-702,完成從核引導(dǎo)程序的配置,然后依次使 每一個從核執(zhí)行步驟703-704,以完成所有從核的啟動,這樣該多核處理器才完成啟動。
[0182] 如圖7所示,該方法包括:
[0183] 701、主核從從核配置指令中,或者從非易失存儲器中獲取從核的配置地址。
[0184] 其中,從核配置指令設(shè)置于bootloader中。
[0185] 需要說明的是,非易失存儲器用于存儲從bootloader的從核配置指令獲取的從 核的配置地址。從核的配置地址是內(nèi)存中的一個地址。
[0186] 需要說明的是,本實施例在bootloader中增加了從核配置指令,使從核跳轉(zhuǎn)地址 動態(tài)可配。同時,bootloader的操作界面提供了人機(jī)交互的可能,用戶可以在bootloader 的操作界面中配置從核跳轉(zhuǎn)地址。
[0187] 需要說明的是,若第一次啟動該多核處理器,那么主核通過bootloader中的從核 配置指令獲取從核配置地址,并將該從核配置地址存儲于非易失存儲器中,以使得從核在 被主核喚醒后,能夠從非易失存儲器中獲取到該配置地址;若不是第一次啟動該多核處理 器,那么主核就可以從非易失存儲器獲取已存儲的從核配置地址。
[0188] 702、主核將從核引導(dǎo)程序存儲至內(nèi)存中配置地址之后的連續(xù)的存儲空間中。
[0189] 需要說明的是,主核將從核引導(dǎo)程序存儲至內(nèi)存中從核配置地址后連續(xù)的存儲空 間中,以使得從核被喚醒后跳轉(zhuǎn)至內(nèi)存中從核的配置地址讀取到從核引導(dǎo)程序。
[0190] 703、主核向從核發(fā)送核間中斷消息,使得從核通過所述總線訪問配置地址,讀取 內(nèi)存中配置地址后存儲的從核引導(dǎo)程序并執(zhí)行從核引導(dǎo)程序。
[0191] 具體的,從核接收到核間中斷消息,從核從非易失存儲器中獲取從核配置地址,跳 轉(zhuǎn)到從核配置地址,并通過總線訪問內(nèi)存中該從核配置地址后連續(xù)的存儲空間中存儲的從 核引導(dǎo)程序。
[0192] 需要說明的是,主核向從核發(fā)送核間中斷的方法與現(xiàn)有技術(shù)中主核向從核發(fā)送核 間中斷的方法相同,在此不再贅述。
[0193] 需要說明的是,主核向從核發(fā)送核間中斷喚醒從核,以使得從核開始啟動。
[0194] 704、從核執(zhí)行完從核引導(dǎo)程序后,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0195] 從核初始化的步驟包括:從核Llcache、MMU(Memory Management Unit,內(nèi)存管理 單元)、TLB(Translation Lookaside Buffer,旁路轉(zhuǎn)換緩沖或頁表緩沖)等其它的初始化; 所有核online (上線);該從核加入該多核處理器的調(diào)度域。
[0196] 需要說明的是,需要說明的是,數(shù)據(jù)在存儲器中的存放順序分為大端模式和小端 模式。大端模式(Big-Endian)就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存 的高地址端。小端模式(Little-Endian)就是低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié) 排放在內(nèi)存的高地址端。處理器核的大小端模式必須和數(shù)據(jù)存儲時的大小端模式相同,才 能正確的讀取數(shù)據(jù)。本實施例默認(rèn)存儲的bootloader設(shè)置的從核的大小端模式與操作系 統(tǒng)所需的大小端模式相同,所以不需要考慮bootloader中設(shè)置的從核的大小端模式是否 與操作系統(tǒng)所需的大小端模式是否相同,執(zhí)行完步驟703后直接執(zhí)行步驟704。
[0197] 從核初始化完成后,在還有其他從核未啟動的情況下,繼續(xù)執(zhí)行步驟703-704,對 其他從核進(jìn)行初始化;當(dāng)至少一個從核中的每個從核均完成從核初始化后,本發(fā)明實施例 的多核處理器完成啟動。
[0198] 本發(fā)明實施例提供了一種啟動多核處理器的方法,主核從從核配置指令中或者從 非易失存儲器中獲取從核配置地址,并將從核引導(dǎo)程序存儲至內(nèi)存中從核配置地址后連續(xù) 的存儲空間中,然后向從核發(fā)送核間中斷,喚醒從核,從核從配置地址開始執(zhí)行從核引導(dǎo)程 序,從核執(zhí)行完從核引導(dǎo)程序后,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。這樣對于不 同的多核處理器,用戶可以根據(jù)不同型號的處理器靈活設(shè)置從核配置地址,即從核引導(dǎo)程 序的存儲地址,而不用根據(jù)不同型號的處理器設(shè)置對應(yīng)去除了多核處理器的bootloader 與操作系統(tǒng)間固定地址A的耦合,使得不同型號的多核處理器可以使用相同的操作系統(tǒng), 最終完成多核處理器操作系統(tǒng)的二進(jìn)制歸一,提高了操作系統(tǒng)的兼容性。
[0199] 本發(fā)明實施例提供了一種啟動多核處理器的方法,方法應(yīng)用于包括多核處理器、 內(nèi)存和存儲器的計算節(jié)點,其中多核處理器通過總線訪問內(nèi)存以及非易失存儲器,多核處 理器包含主核及至少一個從核。
[0200] 需要說明的是,本發(fā)明實施例只描述了一個從核的啟動過程。如果該多核處理器 包含多個從核的情況下,主核先執(zhí)行步驟801-812,完成從核引導(dǎo)程序的配置,然后依次使 每一個從核執(zhí)行步驟813-821,以完成所有從核的啟動,這樣該多核處理器才完成啟動。
[0201] 如圖8所示,該方法包括:
[0202] 801、主核從從核配置指令獲取從核的配置地址。
[0203] 需要說明的是,當(dāng)?shù)谝淮螁釉摱嗪颂幚砥骰蛘哂脩粝敫淖儚暮艘龑?dǎo)程序的存儲 地址時,主核需要從bootloader的操作界面上獲取從核配置地址。
[0204] 802、主核將從核的配置地址存儲至非易失存儲器。
[0205] 需要說明的是,主核從bootloader的操作界面上獲取從核配置地址后,需要將該 從核配置地址存儲于非易失存儲器中,以使得在之后的啟動過程中不用每一次都重新配置 該從核配置地址,而是直接從非易失存儲器中獲取從核配置地址。
[0206] 803、主核從從核配置指令中,或者從非易失存儲器中獲取從核的配置地址。
[0207] 其中,其中,從核配置指令設(shè)置于bootloader中,用于設(shè)置從核的配置地址。非易 失存儲器用于存儲從從核配置指令獲取的從核配置地址。從核配置地址是內(nèi)存中的一個地 址。
[0208] 具體的,可參考步驟701,在此不再贅述。
[0209] 現(xiàn)有技術(shù)中,業(yè)界從核啟動流程對大小端場景支撐情況如圖6所示,bootloader 的大小端模式與操作系統(tǒng)的大小端模式必須一致,只能用小端模式的bootloader啟動小 端模式的操作系統(tǒng),大端模式的bootloader啟動大端模式的操作系統(tǒng),這樣會導(dǎo)致同一個 操作系統(tǒng)不能使用不同大小端模式的bootloader,無法完全實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。 本實施例中的步驟804-807與步驟808-811是使bootloader中設(shè)置的主核的大小端模式 與操作系統(tǒng)的大小端模式兼容的兩種方法,所以只需要執(zhí)行步驟804-807或步驟808-811 中的任一種即可。
[0210] 804、主核獲取bootloader中設(shè)置的主核的大小端模式。
[0211] 具體的,可參考步驟503,在此不再贅述。
[0212] 805、主核獲取操作系統(tǒng)所需的大小端模式。
[0213] 具體的,可參考步驟504,在此不再贅述。
[0214] 806、在bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式不 同的情況下,主核更改所述主核的大小端模式,使得更改后的所述主核的大小端模式與所 述操作系統(tǒng)所需的大小端模式相同。
[0215] 807、在bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大小端模式不 同的情況下,主核將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn) 換后的bootloader傳遞給操作系統(tǒng)的所有參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模 式相同;或者,主核將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn) 換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)的大小端模式與操作系 統(tǒng)所需的大小端模式相同。
[0216] 其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)包括:bootloader傳遞給操作系統(tǒng) 的主核所需的參數(shù)和bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)。
[0217] 具體的,可參考步驟506,在此不再贅述。
[0218] 需要說明的是,在bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的大 小端模式相同的情況下,不執(zhí)行步驟806-807,直接執(zhí)行步驟812。
[0219] 需要說明的是,根據(jù)主核獲取的參數(shù)是bootloader傳遞給操作系統(tǒng)的所有參數(shù), 還是bootloader傳遞給操作系統(tǒng)的所有參數(shù)中主核所需的參數(shù),分別執(zhí)行步驟808-809或 者步驟810-811。
[0220] 808、主核獲取bootloader傳遞給操作系統(tǒng)的所有參數(shù)。
[0221] 其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字。
[0222] 具體的,可參考步驟507,在此不再贅述。
[0223] 809、在第一魔術(shù)字發(fā)生變化的情況下,主核更改主核的大小端模式,并將 bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的主核的大小端 模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的所有參數(shù)的大小端模式與操作系統(tǒng)所需 的大小端模式相同。
[0224] 其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)包括:bootloader傳遞給操作系統(tǒng) 的主核所需的參數(shù)和bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)。
[0225] 具體的,可參考步驟508,在此不再贅述。
[0226] 需要說明的是,在第一魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟809,直接執(zhí)行 步驟812。
[0227] 810、主核獲取bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)。
[0228] 其中,bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)的首部添加有第二魔術(shù)字。
[0229] 具體的,可參考步驟509,在此不再贅述。
[0230] 811、在第二魔術(shù)字發(fā)生變化的情況下,主核更改主核的大小端模式,并將 bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的主 核的大小端模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)的大小端模 式與操作系統(tǒng)所需的大小端模式相同。
[0231] 具體的,可參考步驟510,在此不再贅述。
[0232] 需要說明的是,在第二魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟811,直接執(zhí)行 步驟812。
[0233] 812、主核將從核引導(dǎo)程序存儲至內(nèi)存中配置地址之后的連續(xù)的存儲空間中。
[0234] 具體的,可參考步驟702,在此不再贅述。
[0235] 813、主核向從核發(fā)送核間中斷消息,使得從核通過總線訪問配置地址,讀取內(nèi)存 中配置地址后存儲的從核引導(dǎo)程序并執(zhí)行從核引導(dǎo)程序。
[0236] 具體的,可參考步驟703,在此不再贅述。
[0237] 現(xiàn)有技術(shù)中,業(yè)界從核啟動流程對大小端場景支撐情況如圖6所示,bootloader 的大小端模式與操作系統(tǒng)的大小端模式必須一致,只能用小端模式的bootloader啟動小 端模式的操作系統(tǒng),大端模式的bootloader啟動大端模式的操作系統(tǒng),這樣會導(dǎo)致同一個 操作系統(tǒng)不能使用不同大小端模式的bootloader,無法完全實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。 本實施例中的步驟814-817與步驟818-820是使bootloader中設(shè)置的從核的大小端模式 與操作系統(tǒng)的大小端模式兼容的兩種方法,所以只需要執(zhí)行步驟814-817或步驟818-820 中的任一種即可。
[0238] 814、從核執(zhí)行完從核引導(dǎo)程序后,從核獲取bootloader中設(shè)置的所述從核的大 小端模式。
[0239] 具體的,可參考步驟516,在此不再贅述。
[0240] 815、從核獲取操作系統(tǒng)所需的大小端模式。
[0241] 具體的,可參考步驟517,在此不再贅述。
[0242] 816、在bootloader中設(shè)置的所述從核的大小端模式與操作系統(tǒng)所需的大小端模 式不同的情況下,從核更改從核的大小端模式,使得更改后的從核的大小端模式與操作系 統(tǒng)所需的大小端模式相同。
[0243] 具體的,可參考步驟518,在此不再贅述。
[0244] 817、在bootloader中設(shè)置的從核的大小端模式與操作系統(tǒng)所需的大小端模式不 同,且主核將bootloader傳遞給操作系統(tǒng)的主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況 下,從核將bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換 后的bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小 端模式相同。
[0245] 具體的,可參考步驟519,在此不再贅述。
[0246] 需要說明的是,在主核將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模 式轉(zhuǎn)換的情況下,bootloader傳遞給操作系統(tǒng)的參數(shù)中從核所需的參數(shù)已經(jīng)經(jīng)過大小端模 式轉(zhuǎn)換,與操作系統(tǒng)所需的大小端模式相同,所以此種情況下,不執(zhí)行步驟817。
[0247] 需要說明的是,在從核確定從核的大小端模式與操作系統(tǒng)所需的大小端模式相同 的情況下,不執(zhí)行步驟816-817,直接執(zhí)行步驟821。
[0248] 818、從核獲取bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)。
[0249] 其中,bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的首部添加有第三魔術(shù)字。
[0250] 具體的,可參考步驟520,在此不再贅述。
[0251] 819、在從核確定第三魔術(shù)字發(fā)生變化的情況下,從核更改從核的大小端模式,使 得更改后的從核的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0252] 具體的,可參考步驟521,在此不再贅述。
[0253] 820、在從核確定第三魔術(shù)字發(fā)生變化,且主核獲取bootloader傳遞給操作系統(tǒng) 的主核所需的參數(shù)的情況下,從核將所述bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的從核所需的參數(shù)的大 小端模式與操作系統(tǒng)所需的大小端模式相同。
[0254] 具體的,可參考步驟522,在此不再贅述。
[0255] 需要說明的是,在主核將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模 式轉(zhuǎn)換的情況下,bootloader傳遞給操作系統(tǒng)的參數(shù)中從核所需的參數(shù)已經(jīng)經(jīng)過大小端模 式轉(zhuǎn)換,與操作系統(tǒng)所需的大小端模式相同,所以此種情況下,不執(zhí)行步驟820。
[0256] 需要說明的是,在第三魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟819-820,直接 執(zhí)行步驟821。
[0257] 821、從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0258] 從核初始化完成后,在還有其他從核未啟動的情況下,繼續(xù)執(zhí)行步驟813-821,對 其他從核進(jìn)行初始化;在所有從核都已經(jīng)啟動的情況下,完成該多核處理器的啟動。
[0259] 需要說明的是,執(zhí)行步驟821時,已經(jīng)能夠保證從核的大小端模式與操作系統(tǒng)所 需的大小端模式完全相同。
[0260] 本發(fā)明實施例提供了一種啟動多核處理器的方法,通過新增的bootloader的從 核配置指令獲取用戶配置的從核配置地址;判斷bootloader中設(shè)置的主核的大小端模式 與操作系統(tǒng)所需的主核的大小端模式是否相同,在不相同的情況下,更改主核的大小端模 式,使得更改后的主核的大小端模式與操作系統(tǒng)所需的主核的大小端模式相同;將從核引 導(dǎo)程序存放至從核配置地址后連續(xù)的存儲空間中,然后喚醒從核,從核根據(jù)用戶配置的從 核配置地址讀取從核引導(dǎo)程序,從核執(zhí)行完從核引導(dǎo)程序后,判斷bootloader中設(shè)置的從 核的大小端模式與操作系統(tǒng)所需的從核的大小端模式是否相同,在不相同的情況下,更改 從核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換;最后跳 轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。這樣,用戶可以根據(jù)每一型號的處理器用戶可 以根據(jù)不同型號的處理器靈活設(shè)置從核配置地址,即從核引導(dǎo)程序的存儲地址,而不用根 據(jù)不同型號的處理器設(shè)置對應(yīng)去除了多核處理器的bootloader與操作系統(tǒng)間固定地址A 的耦合,使得不同型號的多核處理器可以使用相同的操作系統(tǒng),最終完成多核處理器操作 系統(tǒng)的二進(jìn)制歸一,提高操作系統(tǒng)的兼容性。同時,本實施例中根據(jù)bootloader中設(shè)置的 主核或從核的大小端模式與操作系統(tǒng)所需的大小端模式確定是否更改主核或從核的大小 端模式,使得多核處理器使用同一個操作系統(tǒng)可以兼容不同大小端模式的bootloader,進(jìn) 一步減少了多核處理器操作系統(tǒng)二進(jìn)制歸一的約束,提高操作系統(tǒng)的兼容性。最終,本發(fā) 明解除了兩個操作系統(tǒng)二進(jìn)制歸一的使用約束,使得同一版本的操作系統(tǒng)能運行于更多的 bootloader和處理器,極大提高開發(fā)、測試、維護(hù)的效率,同時減少開發(fā)、測試、維護(hù)的成本。
[0261] 本發(fā)明實施例還提供了一種bootloader大小端模式自適應(yīng)的方法,該處理器包 括至少一個內(nèi)核。
[0262] 本實施例不僅適用于多核處理器的啟動,同樣適用于單核處理器的啟動。
[0263] 現(xiàn)有技術(shù)中,業(yè)界從核啟動流程對大小端場景支撐情況如圖6所示,bootloader 的大小端模式與操作系統(tǒng)的大小端模式必須一致,只能用小端模式的bootloader啟動小 端模式的操作系統(tǒng),大端模式的bootloader啟動大端模式的操作系統(tǒng),這樣會導(dǎo)致同一個 操作系統(tǒng)不能使用不同大小端模式的bootloader,無法完全實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。 本實施例中是使bootloader的大小端模式與操作系統(tǒng)的大小端模式兼容的一種方法。
[0264] 如圖9所示,包括:
[0265] 901、執(zhí)行 bootloader。
[0266] 需要說明的是,在處理器是多核處理器的情況下,多核處理器中的主核執(zhí)行 bootloader,完成主核及操作系統(tǒng)所需硬件的初始化。在處理器是單核處理器的情況下,該 單核執(zhí)行bootloader,完成自身及操作系統(tǒng)所需硬件的初始化。
[0267] 需要說明的是,在處理器是多核處理器的情況下,主核執(zhí)行完bootloader之后, 執(zhí)行步驟902-905,然后依次喚醒從核,從核執(zhí)行自身的引導(dǎo)程序之后,執(zhí)行步驟902-905, 完成自身的啟動。在處理器是多核處理器的情況下,該單核執(zhí)行完bootloader之后,依次 執(zhí)行步驟902-905,完成本處理器的啟動。
[0268] 902、獲取bootloader中設(shè)置的當(dāng)前核的大小端模式。
[0269] 具體的,當(dāng)前核(current core)獲取bootloader中設(shè)置的處理器的大小端模式, 可參考步驟503中主核獲取bootloader中設(shè)置的主核的大小端模式,在此不再贅述。
[0270] 需要說明的是,所述當(dāng)前核是指當(dāng)前運行的核。此處的當(dāng)前核可能是多核處理器 中的主核或從核,也可能是單核處理器中的單核。
[0271] 903、獲取操作系統(tǒng)所需的大小端模式。
[0272] 具體的,當(dāng)前核獲取操作系統(tǒng)所需的大小端模式,可參考步驟504中主核獲取操 作系統(tǒng)所需的大小端模式,在此不再贅述。
[0273] 904、若bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式 不同,則更改當(dāng)前核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模 式轉(zhuǎn)換,使得更改后的當(dāng)前核的大小端模式以及參數(shù)轉(zhuǎn)換后的大小端模式與操作系統(tǒng)所需 的大小端模式相同。
[0274] 具體的,當(dāng)前核更改自己的大小端模式,并將bootloader傳遞給操作系統(tǒng)的 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,可參考步驟505-506中主核更改主核的大小端模式,并將 bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,在此不再贅述。
[0275] 需要說明的是,在bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的 大小端模式相同的情況下,不執(zhí)行步驟904,直接執(zhí)行步驟905。
[0276] 905、跳轉(zhuǎn)至操作系統(tǒng)的代碼段,完成初始化。
[0277] 需要說明的是,多核處理器中的從核在執(zhí)行完步驟905后,還需要對未啟動的其 他從核進(jìn)行初始化,直到所有從核初始化完畢,那么該多核處理器啟動完畢。單核處理器的 單核執(zhí)行完步驟905后,就完成了該單核處理器的啟動。
[0278] 本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的方法,獲取 bootloader中設(shè)置的當(dāng)前核的大小端模式和操作系統(tǒng)所需的大小端模式,若bootloader 中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式不同,則更改當(dāng)前核的大小 端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換。這樣,可以根據(jù) bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式確定是否更改當(dāng) 前核的大小端模式,使得使用同一個操作系統(tǒng)可以兼容不同大小端模式的bootloader,減 少了操作系統(tǒng)二進(jìn)制歸一的約束,提高了操作系統(tǒng)的兼容性。
[0279] 本發(fā)明實施例還提供了一種bootloader大小端模式自適應(yīng)的方法,該處理器包 括至少一個內(nèi)核。
[0280] 本實施例不僅適用于多核處理器的啟動,同樣適用于單核處理器的啟動。
[0281] 現(xiàn)有技術(shù)中,業(yè)界從核啟動流程對大小端場景支撐情況如圖6所示,bootloader 的大小端模式與操作系統(tǒng)的大小端模式必須一致,只能用小端模式的bootloader啟動小 端模式的操作系統(tǒng),大端模式的bootloader啟動大端模式的操作系統(tǒng),這樣會導(dǎo)致同一個 操作系統(tǒng)不能使用不同大小端模式的bootloader,無法完全實現(xiàn)操作系統(tǒng)的二進(jìn)制歸一。 本實施例中是使bootloader的大小端模式與操作系統(tǒng)的大小端模式兼容的一種方法。
[0282] 如圖10所示,包括:
[0283] 1001、執(zhí)行 bootloader。
[0284] 具體的,可參考步驟901,在此不再贅述。
[0285] 需要說明的是,在處理器是多核處理器的情況下,主核執(zhí)行完bootloader之 后,執(zhí)行步驟1002-1004,然后依次喚醒從核,從核執(zhí)行自身的引導(dǎo)程序之后,執(zhí)行步驟 1002-1004,完成自身的啟動。在處理器是多核處理器的情況下,該單核執(zhí)行完bootloader 之后,依次執(zhí)行步驟1002-1004,完成本處理器的啟動。
[0286] 1002、獲取bootloader傳遞給操作系統(tǒng)的參數(shù)。
[0287] 其中,所述參數(shù)的首部添加有魔術(shù)字。
[0288] 具體的,從核或者單核獲取bootloader傳遞給操作系統(tǒng)的參數(shù),可參考步驟507 中主核獲取bootloader傳遞給操作系統(tǒng)的所有參數(shù),在此不再贅述。
[0289] 1003、若魔術(shù)字發(fā)生變化,則更改當(dāng)前核的大小端模式,并將bootloader傳遞給 操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的當(dāng)前核的大小端模式以及參數(shù)轉(zhuǎn)換后 的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0290] 具體的,當(dāng)前核更改自己的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,可參考步驟508中主核更改主核的大小端模式,并將bootloader傳 遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,在此不再贅述。
[0291] 需要說明的是,在魔術(shù)字沒有發(fā)生變化的情況下,不執(zhí)行步驟1003,直接執(zhí)行步驟 1004。
[0292] 1004、執(zhí)行操作系統(tǒng)中的指令,完成啟動。
[0293] 需要說明的是,多核處理器中的從核在執(zhí)行完步驟1004后,還需要完成其他所有 從核初始化,那么該多核處理器啟動完畢。單核處理器的單核執(zhí)行完步驟1004后,就完成 了該單核處理器的啟動。
[0294] 本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的方法,獲取 bootloader傳遞給操作系統(tǒng)的參數(shù),若參數(shù)的魔術(shù)字發(fā)生變化,則更改當(dāng)前核的大小端 模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換。這樣,可以根據(jù) bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式確定是否更改當(dāng) 前核的大小端模式,使得使用同一個操作系統(tǒng)可以兼容不同大小端模式的bootloader,減 少了操作系統(tǒng)二進(jìn)制歸一的約束,提高了操作系統(tǒng)的兼容性。
[0295] 如圖11所示,本發(fā)明實施例提供了一種計算節(jié)點的結(jié)構(gòu)示意圖。參考圖11所示, 該計算節(jié)點包括:多核處理器1101和內(nèi)存1102,其中多核處理器1101通過總線訪問內(nèi)存 1102,本實施例中,該多核處理器1101包括:主核11011和從核11012。其中,從核11012的 數(shù)量可以是一個或多個,圖11中以一個從核示意,但本發(fā)明實施例不限于此。
[0296] 主核11011,用于將從核引導(dǎo)程序存儲至內(nèi)存的首地址之后的連續(xù)的存儲空間中; 其中,內(nèi)存的首地址被映射到總線的〇地址。
[0297] 主核11011,還用于復(fù)位從核11012,以使從核11012的程序計數(shù)器PC指針指向總 線的0地址。
[0298] 從核11012,用于通過所述總線訪問總線的0地址映射的內(nèi)存的首地址,讀取所述 內(nèi)存1102中內(nèi)存的首地址后存儲的從核引導(dǎo)程序并執(zhí)行從核引導(dǎo)程序。
[0299] 從核11012,還用于跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核11012初始化。
[0300] 具體的,從核11012,具體用于在bootloader中設(shè)置的從核11012的大小端模式與 操作系統(tǒng)所需的大小端模式相同的情況下,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
[0301] 進(jìn)一步的,主核11011,還用于獲取從核11012的狀態(tài)。
[0302] 主核11011,還用于確定從核11012處于激活狀態(tài)時,主核11011設(shè)置從核11012 的復(fù)位次數(shù)為兩次。
[0303] 主核11011,還用于確定從核11012處于休眠狀態(tài)或未啟動狀態(tài)時,設(shè)置從核 11012的復(fù)位次數(shù)為一次。
[0304] 進(jìn)一步的,主核11011,還用于在從核11012引導(dǎo)程序中添加休眠指令;休眠指令 用于使從核11012處于休眠狀態(tài)。
[0305] 此時,主核11011,具體用于第一次復(fù)位從核11012,從核11012的PC指針指向 總線的0地址;從核11012,具體用于通過總線訪問總線的0地址映射的內(nèi)存的首地址,讀 取并執(zhí)行從核引導(dǎo)程序中的休眠指令;主核11011,具體用于第二次復(fù)位從核11012,從核 11012的PC指針指向總線的0地址;從核11012,具體用于通過總線訪問總線的0地址映射 的內(nèi)存的首地址,讀取并執(zhí)行從核引導(dǎo)程序中除休眠指令之外的程序;其中,所述從核的復(fù) 位次數(shù)為兩次。
[0306] 進(jìn)一步的,主核11011,還用于獲取bootloader中設(shè)置的主核11011的大小端模 式。
[0307] 主核11011,還用于獲取操作系統(tǒng)所需的大小端模式。
[0308] 主核11011,還用于在bootloader中設(shè)置的主核11011的大小端模式與操作系統(tǒng) 所需的大小端模式不同的情況下,更改主核11011的大小端模式,使得更改后的主核11011 的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0309] 主核11011,還用于在bootloader中設(shè)置的主核11011的大小端模式與操作系 統(tǒng)所需的大小端模式不同的情況下,將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小 端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述所有參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模 式相同;或者,將bootloader傳遞給操作系統(tǒng)的主核11011所需的參數(shù)進(jìn)行大小端模式 轉(zhuǎn)換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的主核11011所需的參數(shù)的大小端模式 與操作系統(tǒng)所需的大小端模式相同;其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)包括: bootloader傳遞給操作系統(tǒng)的主核11011所需的參數(shù)和bootloader傳遞給操作系統(tǒng)的從 核11012所需的參數(shù)。
[0310] 從核11012,還用于獲取bootloader中設(shè)置的從核11012的大小端模式;
[0311] 從核11012,還用于獲取操作系統(tǒng)所需的大小端模式;
[0312] 從核11012,還用于在從核11012確定bootloader中設(shè)置的從核11012的大小端 模式與操作系統(tǒng)所需的大小端模式不同的情況下,更改從核11012的大小端模式,使得更 改后的從核11012的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0313] 從核11012,還用于在bootloader中設(shè)置的從核11012的大小端模式與操作系統(tǒng) 所需的大小端模式不同,且主核11011將bootloader傳遞給操作系統(tǒng)的主核11011所需的 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況下,將bootloader傳遞給操作系統(tǒng)的從核11012所需的參 數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的從核11012所需的參 數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0314] 進(jìn)一步的,主核11011,還用于獲取bootloader傳遞給操作系統(tǒng)的所有參數(shù);其 中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字。
[0315] 主核11011,還用于在第一魔術(shù)字發(fā)生變化的情況下,更改主核11011的大小端模 式,并將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的主核 11011的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所有參數(shù)的大小端 模式與操作系統(tǒng)所需的大小端模式相同;其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)包 括:bootloader傳遞給操作系統(tǒng)的主核11011所需的參數(shù)和bootloader傳遞給操作系統(tǒng) 的所述從核110112所需的參數(shù)。
[0316] 或者,主核11011,還用于獲取bootloader傳遞給操作系統(tǒng)的主核11011所需的參 數(shù);其中,bootloader傳遞給操作系統(tǒng)的主核11011所需的參數(shù)的首部添加有第二魔術(shù)字。
[0317] 主核11011,還用于在第二魔術(shù)字發(fā)生變化的情況下,更改主核11011的大小端模 式,并將bootloader傳遞給操作系統(tǒng)的主核11011所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得 更改后的主核11011的大小端模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的主核11011 所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0318] 從核11012,還用于獲取bootloader傳遞給操作系統(tǒng)的從核11012所需的參數(shù); 其中,bootloader傳遞給操作系統(tǒng)的從核11012所需的參數(shù)的首部添加有第三魔術(shù)字參數(shù) 的首部添加有魔術(shù)字。
[0319] 從核11012,還用于在從核11012確定第三魔術(shù)字發(fā)生變化的情況下,更改從核 11012的大小端模式,使得更改后的從核11012的大小端模式與操作系統(tǒng)所需的大小端模 式相同。
[0320] 從核11012,還用于在第三魔術(shù)字發(fā)生變化,且主核11011獲取bootloader傳遞給 操作系統(tǒng)的主核11011所需的參數(shù)的情況下,將bootloader傳遞給操作系統(tǒng)的從核11012 所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的從核11012 所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0321] 本發(fā)明實施例提供了一種計算節(jié)點,主核在從核引導(dǎo)程序中添加休眠指令;判斷 bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所需的主核的大小端模式是否相同,在 不相同的情況下,更改主核的大小端模式,使得更改后的主核的大小端模式與操作系統(tǒng)所 需的主核的大小端模式相同;在內(nèi)存的首地址映射到總線的〇地址的情況下,將從核引導(dǎo) 程序存儲至內(nèi)存的首地址之后連續(xù)的存儲空間中;主核獲取從核的狀態(tài),根據(jù)從核狀態(tài)設(shè) 定從核復(fù)位次數(shù);主核對從核進(jìn)行一次或者兩次復(fù)位,以使從核的PC指針指向總線的0地 址,從核從總線的0地址映射的內(nèi)存的首地址起始讀取并執(zhí)行從核引導(dǎo)程序;從核執(zhí)行完 從核引導(dǎo)程序后,判斷bootloader中設(shè)置的從核的大小端模式與操作系統(tǒng)所需的從核的 大小端模式是否相同,在兩者不相同的情況下,更改從核的大小端模式,并將bootloader 傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換;最后跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初 始化。這樣,利用每種型號的多核處理器在從核被復(fù)位后從核的PC指針指向總線的0地 址的特性,建立總線的〇地址與內(nèi)存的首地址的映射關(guān)系,并將從核引導(dǎo)程序存儲在內(nèi)存 的首地址后的連續(xù)的存儲空間中,使得從核被復(fù)位后能夠通過總線的0地址對應(yīng)的內(nèi)存的 首地址讀取到內(nèi)存中存儲的從核引導(dǎo)程序,并執(zhí)行所述從核引導(dǎo)程序,從而就不需要在總 線中設(shè)定用于存儲從核引導(dǎo)程序在內(nèi)存中的存放地址的固定地址A,實現(xiàn)了多核處理器的 bootloader與操作系統(tǒng)間固定地址A的解耦合,不需要根據(jù)每一型號多核處理器設(shè)置匹配 的操作系統(tǒng),使得不同版本型號的多核處理器可以使用相同的操作系統(tǒng),最終完成多核處 理器操作系統(tǒng)的二進(jìn)制歸一,提高操作系統(tǒng)的兼容性。并且本實施例中考慮到從核處于激 活狀態(tài)的情況下,復(fù)位后不能滿足從核啟動條件,所以此時對從核進(jìn)行兩次復(fù)位,第一次主 核復(fù)位從核使得從核滿足啟動條件,第二次主核復(fù)位從核使得成功啟動,從而進(jìn)一步保證 了從核的成功啟動。同時,本實施例中根據(jù)bootloader中設(shè)置的主核或從核的大小端模式 與操作系統(tǒng)所需的大小端模式確定是否更改主核或從核的大小端模式,使得多核處理器使 用同一個操作系統(tǒng)可以兼容不同大小端模式的bootloader,進(jìn)一步減少了多核處理器操作 系統(tǒng)二進(jìn)制歸一的約束,提高操作系統(tǒng)的兼容性。最終,本發(fā)明解除了兩個操作系統(tǒng)二進(jìn)制 歸一的使用約束,使得同一版本的操作系統(tǒng)能運行于更多的bootloader和處理器,極大提 高開發(fā)、測試、維護(hù)的效率,同時減少開發(fā)、測試、維護(hù)的成本。
[0322] 如圖12所示,本發(fā)明實施例提供了一種計算節(jié)點的結(jié)構(gòu)示意圖。參考圖12所示, 該計算節(jié)點包括:多核處理器1201、內(nèi)存1202和非易失存儲器1203,其中多核處理器1201 通過總線訪問內(nèi)存1202以及非易失存儲器1203,本實施例中,該多核處理器1201包括:主 核12011和從核12012,其中,從核12012的數(shù)量可以是一個或多個,圖12中以一個從核示 意,但本發(fā)明實施例不限于此。
[0323] 主核12011,用于從從核配置指令中,或者從非易失存儲器1203中獲取從核12012 的配置地址;其中,從核配置指令設(shè)置于bootloader中。
[0324] 主核12011,還用于將從核引導(dǎo)程序存儲至內(nèi)存1202中配置地址之后的連續(xù)的存 儲空間中。
[0325] 主核12011,還用于向從核12012發(fā)送核間中斷消息。
[0326] 從核12012,用于通過總線訪問配置地址,讀取內(nèi)存1202中配置地址后存儲的從 核引導(dǎo)程序并執(zhí)行從核引導(dǎo)程序。
[0327] 從核12012,還用于跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核12012初始化。
[0328] 具體的,從核12012,具體用于在bootloader中設(shè)置的從核12012的大小端模式與 操作系統(tǒng)所需的大小端模式相同的情況下,從核12012跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從 核初始化。
[0329] 進(jìn)一步的,主核12011,還用于從從核配置指令獲取從核12012的配置地址。
[0330] 主核12011,還用于將從核12012的配置地址存儲至非易失存儲器1203。
[0331] 進(jìn)一步的,所述主核12011,還用于獲取bootloader中設(shè)置的所述主核12011的大 小端模式。
[0332] 所述主核12011,還用于獲取操作系統(tǒng)所需的大小端模式。
[0333] 所述主核12011,還用于在所述bootloader中設(shè)置的所述主核12011的大小端模 式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所述主核12011的大小端模式, 使得更改后的所述主核12011的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0334] 所述主核12011,還用于在所述bootloader中設(shè)置的所述主核12011的大小端模 式與所述操作系統(tǒng)所需的大小端模式不同的情況下,將所述bootloader傳遞給所述操作 系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述所有參數(shù)的大小端模式與所述操 作系統(tǒng)所需的大小端模式相同;或者,將所述bootloader傳遞給所述操作系統(tǒng)的所述主核 12011所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系 統(tǒng)的所述主核12011所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0335] 其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳 遞給操作系統(tǒng)的所述主核12011所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從 核12012所需的參數(shù)。
[0336] 所述從核12012,還用于獲取bootloader中設(shè)置的所述從核12012的大小端模式。
[0337] 所述從核12012,還用于獲取操作系統(tǒng)所需的大小端模式。
[0338] 所述從核12012,還用于在所述bootloader中設(shè)置的所述從核12012的大小端模 式與所述操作系統(tǒng)所需的大小端模式不同的情況下,更改所述從核12012的大小端模式, 使得更改后的所述從核12012的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
[0339] 所述從核12012,還用于在所述bootloader中設(shè)置的所述從核12012的大小端模 式與所述操作系統(tǒng)所需的大小端模式不同,且所述主核12011將所述bootloader傳遞給操 作系統(tǒng)的所述主核12011所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況下,將所述bootloader傳 遞給所述操作系統(tǒng)的所述從核12012所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述 bootloader傳遞給操作系統(tǒng)的所述從核12012所需的參數(shù)的大小端模式與所述操作系統(tǒng) 所需的大小端模式相同。
[0340] 進(jìn)一步的,主核12011,還用于獲取bootloader傳遞給操作系統(tǒng)的所有參數(shù);其 中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字。
[0341] 主核12011,還用于在第一魔術(shù)字發(fā)生變化的情況下,更改主核12011的大小端模 式,并將bootloader傳遞給操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的主核 12011的大小端模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的所有參數(shù)的大小端模式 與操作系統(tǒng)所需的大小端模式相同;其中,bootloader傳遞給操作系統(tǒng)的所有參數(shù)包括: bootloader傳遞給操作系統(tǒng)的主核12011所需的參數(shù)和bootloader傳遞給操作系統(tǒng)的從 核12012所需的參數(shù)。
[0342] 或者,主核12011,還用于獲取bootloader傳遞給操作系統(tǒng)的主核12011所需的參 數(shù),其中,bootloader傳遞給操作系統(tǒng)的主核12011所需的參數(shù)的首部添加有第二魔術(shù)字。
[0343] 主核12011,還用于在第二魔術(shù)字發(fā)生變化的情況下,主核12011更改主核12011 的大小端模式,并將bootloader傳遞給操作系統(tǒng)的主核12011所需的參數(shù)進(jìn)行大小端模式 轉(zhuǎn)換,使得更改后的主核12011的大小端模式以及轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的 主核12011所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0344] 從核12012,還用于獲取bootloader傳遞給操作系統(tǒng)的從核12012所需的參數(shù); 其中,bootloader傳遞給操作系統(tǒng)的從核12012所需的參數(shù)的首部添加有第三魔術(shù)字。
[0345] 從核12012,還用于在從核12012確定第三魔術(shù)字發(fā)生變化的情況下,更改從核 12012的大小端模式,使得更改后的從核12012的大小端模式與操作系統(tǒng)所需的大小端模 式相同。
[0346] 從核12012,還用于在第三魔術(shù)字發(fā)生變化,且主核12011獲取bootloader傳遞給 操作系統(tǒng)的主核12011所需的參數(shù)的情況下,將bootloader傳遞給操作系統(tǒng)的從核12012 所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的bootloader傳遞給操作系統(tǒng)的從核12012 所需的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0347] 本發(fā)明實施例提供了一種計算節(jié)點,通過新增的bootloader的從核配置指令獲 取用戶配置的從核配置地址;判斷bootloader中設(shè)置的主核的大小端模式與操作系統(tǒng)所 需的主核的大小端模式是否相同,在不相同的情況下,更改主核的大小端模式,使得更改后 的主核的大小端模式與操作系統(tǒng)所需的主核的大小端模式相同;將從核引導(dǎo)程序存放至從 核配置地址后連續(xù)的存儲空間中,然后喚醒從核,從核根據(jù)用戶配置的從核配置地址讀取 從核引導(dǎo)程序,從核執(zhí)行完從核引導(dǎo)程序后,判斷bootloader中設(shè)置的從核的大小端模式 與操作系統(tǒng)所需的從核的大小端模式是否相同,在不相同的情況下,更改從核的大小端模 式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換;最后跳轉(zhuǎn)到操作系統(tǒng)的 代碼段,完成從核初始化。這樣,用戶可以根據(jù)每一型號的處理器用戶可以根據(jù)不同型號的 處理器靈活設(shè)置從核配置地址,即從核引導(dǎo)程序的存儲地址,而不用根據(jù)不同型號的處理 器設(shè)置對應(yīng)去除了多核處理器的bootloader與操作系統(tǒng)間固定地址A的耦合,使得不同型 號的多核處理器可以使用相同的操作系統(tǒng),最終完成多核處理器操作系統(tǒng)的二進(jìn)制歸一, 提高操作系統(tǒng)的兼容性。同時,本實施例中根據(jù)bootloader中設(shè)置的主核或從核的大小端 模式與操作系統(tǒng)所需的大小端模式確定是否更改主核或從核的大小端模式,使得多核處理 器使用同一個操作系統(tǒng)可以兼容不同大小端模式的bootloader,進(jìn)一步減少了多核處理器 操作系統(tǒng)二進(jìn)制歸一的約束,提高操作系統(tǒng)的兼容性。最終,本發(fā)明解除了兩個操作系統(tǒng)二 進(jìn)制歸一的使用約束,使得同一版本的操作系統(tǒng)能運行于更多的bootloader和處理器,極 大提高開發(fā)、測試、維護(hù)的效率,同時減少開發(fā)、測試、維護(hù)的成本。
[0348] 如圖13所示,本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的裝置的 結(jié)構(gòu)示意圖,參考圖13所示,該裝置包括:獲取單元1301和處理單元1302。
[0349] 獲取單元1301,用于獲取bootloader中設(shè)置的當(dāng)前核的大小端模式。
[0350] 獲取單元1301,還用于獲取操作系統(tǒng)所需的大小端模式。
[0351] 處理單元1302,用于在bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所 需的大小端模式不同的情況下,更改當(dāng)前核的大小端模式,并將boo11 oader傳遞給操作系 統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的當(dāng)前核的大小端模式以及轉(zhuǎn)換后的參數(shù)的大 小端模式與操作系統(tǒng)所需的大小端模式相同。
[0352] 本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的裝置,獲取單元獲 取bootloader中設(shè)置的當(dāng)前核的大小端模式和操作系統(tǒng)所需的大小端模式,處理單元在 bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式不同的情況下, 更改當(dāng)前核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換。 這樣,可以根據(jù)bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式 確定是否更改當(dāng)前核的大小端模式,使得使用同一個操作系統(tǒng)可以兼容不同大小端模式的 bootloader,減少了操作系統(tǒng)二進(jìn)制歸一的約束,提高了操作系統(tǒng)的兼容性。
[0353] 如圖14所示,本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的裝置的 結(jié)構(gòu)示意圖,參考圖14所示,該裝置包括:獲取單元1401和處理單元1402。
[0354] 獲取單元1401,用于獲取bootloader傳遞給操作系統(tǒng)的參數(shù),其中,參數(shù)的首部 添加有魔術(shù)字。
[0355] 處理單元1402,用于在魔術(shù)字發(fā)生變化的情況下,更改當(dāng)前核的大小端模式,并將 bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的當(dāng)前核的大小端模 式以及轉(zhuǎn)換后的參數(shù)的大小端模式與操作系統(tǒng)所需的大小端模式相同。
[0356] 本發(fā)明實施例提供了一種bootloader大小端模式自適應(yīng)的裝置,獲取單元獲取 bootloader傳遞給操作系統(tǒng)的參數(shù),處理單元在參數(shù)的魔術(shù)字發(fā)生變化的情況下,更改 當(dāng)前核的大小端模式,并將bootloader傳遞給操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換。這 樣,可以根據(jù)bootloader中設(shè)置的當(dāng)前核的大小端模式與操作系統(tǒng)所需的大小端模式確 定是否更改當(dāng)前核的大小端模式,使得使用同一個操作系統(tǒng)可以兼容不同大小端模式的 bootloader,減少了操作系統(tǒng)二進(jìn)制歸一的約束,提高了操作系統(tǒng)的兼容性。
[0357] 在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以 通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的 劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件 可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或 討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦 合或通信連接,可以是電性,機(jī)械或其它的形式。
[0358] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目 的。
[0359] 另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以 是各個單元單獨物理包括,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單 元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
[0360] 上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機(jī)可讀取存 儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī) 設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或者被包括在計算機(jī)設(shè)備中的處理器 執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只 讀存儲器(Read-Only Memory,簡稱ROM)、隨機(jī)存取存儲器(Random Access Memory,簡稱 RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0361] 最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然 可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精 神和范圍。
【權(quán)利要求】
1. 一種啟動多核處理器的方法,其特征在于,應(yīng)用于包括多核處理器和內(nèi)存的計算節(jié) 點,其中所述多核處理器通過總線訪問所述內(nèi)存,所述多核處理器包含主核及至少一個從 核,所述主核執(zhí)行啟動加載器bootloader,所述方法包括: 所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空間中;其中, 所述內(nèi)存的首地址被映射到所述總線的〇地址; 所述主核復(fù)位所述至少一個從核中的從核,以使所述從核的程序計數(shù)器PC指針指向 所述總線的〇地址,所述從核通過所述總線訪問所述總線的〇地址映射的所述內(nèi)存的首地 址,讀取所述內(nèi)存中所述內(nèi)存的首地址后存儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo)程 序; 所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述主核將從核引導(dǎo)程序存儲至所述 內(nèi)存的首地址之后的連續(xù)的存儲空間中之前,還包括:所述主核在所述從核引導(dǎo)程序中添 加休眠指令;所述休眠指令用于使所述從核處于休眠狀態(tài); 所述主核復(fù)位所述至少一個從核中的從核,以使所述從核的程序計數(shù)器PC指針指向 所述總線的〇地址,所述從核通過所述總線訪問所述總線的〇地址映射的所述內(nèi)存的首地 址,讀取所述內(nèi)存中所述內(nèi)存的首地址后存儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo)程 序,包括: 所述主核第一次復(fù)位所述從核,所述從核的PC指針指向所述總線的0地址,所述從核 通過所述總線訪問所述總線的0地址映射的所述內(nèi)存的首地址,讀取并執(zhí)行所述從核引導(dǎo) 程序中的所述休眠指令;所述主核第二次復(fù)位所述從核,所述從核的PC指針指向所述總線 的0地址,所述從核通過所述總線訪問所述總線的0地址映射的所述內(nèi)存的首地址,讀取并 執(zhí)行所述從核引導(dǎo)程序中除休眠指令之外的程序;其中,所述從核的復(fù)位次數(shù)為兩次。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段, 完成從核初始化,包括: 在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模 式相同的情況下,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
4. 根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,在所述主核執(zhí)行啟動加載器 bootloader之后,所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空 間中之前,還包括: 所述主核獲取bootloader中設(shè)置的所述主核的大小端模式; 所述主核獲取所述操作系統(tǒng)所需的大小端模式; 在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模 式不同的情況下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小端 模式與所述操作系統(tǒng)所需的大小端模式相同; 在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端 模式不同的情況下,還包括:所述主核將所述bootloader傳遞給所述操作系統(tǒng)的所有參 數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù) 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;或者,所述主核將所述bootloader 傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述 bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所 需的大小端模式相同; 其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給 操作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參 數(shù)。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于, 在所述從核執(zhí)行所述從核引導(dǎo)程序之后,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還 包括: 所述從核獲取bootloader中設(shè)置的所述從核的大小端模式; 所述從核獲取所述操作系統(tǒng)所需的大小端模式; 在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模 式不同的情況下,所述從核更改所述從核的大小端模式,使得更改后的所述從核的大小端 模式與所述操作系統(tǒng)所需的大小端模式相同; 在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模 式不同,且所述主核將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換的情況下,還包括:所述從核將所述bootloader傳遞給所述操作系統(tǒng)的所 述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作 系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
6. 根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,在所述主核執(zhí)行啟動加載器 bootloader之后,所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空 間中之前,還包括: 所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù),其中,所述 bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字; 在所述第一魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所 述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述 主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的大 小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所述操 作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所述 bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù); 或者,所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù),其 中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第二魔術(shù) 字; 在所述第二魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所 述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更 改后的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述主核 所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,在所述從核執(zhí)行所述從核引導(dǎo)程序之后, 所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還包括: 所述從核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù),其中,所 述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔術(shù)字; 在所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,所述從核更改所述從核的大小端 模式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 在所述從核確定所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞 給所述操作系統(tǒng)的所述主核所需的參數(shù)的情況下,還包括:所述從核將所述bootloader 傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述 bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所 需的大小端模式相同。
8. 根據(jù)權(quán)利要求1-7任一項所述的方法,其特征在于,在所述主核復(fù)位所述至少一個 從核中的從核之前,還包括: 所述主核獲取所述從核的狀態(tài); 當(dāng)所述主核確定所述從核處于激活狀態(tài)時,所述主核設(shè)置所述從核的復(fù)位次數(shù)為兩 次; 當(dāng)所述主核確定所述從核處于休眠狀態(tài)或未啟動狀態(tài)時,所述主核設(shè)置所述從核的復(fù) 位次數(shù)為一次。
9. 一種啟動多核處理器的方法,其特征在于,應(yīng)用于包括多核處理器、內(nèi)存和非易失存 儲器的計算節(jié)點,其中所述多核處理器通過總線訪問所述內(nèi)存以及所述非易失存儲器,所 述多核處理器包含主核及至少一個從核,所述方法包括: 所述主核從從核配置指令,或者從所述非易失存儲器獲取從核的配置地址;其中,所述 從核配置指令設(shè)置于啟動加載器bootloader中; 所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存中所述配置地址之后的連續(xù)的存儲空間 中; 所述主核向所述從核發(fā)送核間中斷消息,使得所述從核通過所述總線訪問所述配置地 址,讀取所述內(nèi)存中所述配置地址后存儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo)程序; 所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完 成從核初始化,包括: 在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模 式相同的情況下,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
11. 根據(jù)權(quán)利要求9或10所述的方法,其特征在于,在所述主核從從核配置指令,或者 從所述非易失存儲器獲取從核的配置地址之后,所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存 中所述配置地址之后的連續(xù)的存儲空間中之前,還包括: 所述主核獲取bootloader中設(shè)置的所述主核的大小端模式; 所述主核獲取操作系統(tǒng)所需的大小端模式; 在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端模 式不同的情況下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小端 模式與所述操作系統(tǒng)所需的大小端模式相同; 在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系統(tǒng)所需的大小端 模式不同的情況下,還包括:所述主核將所述bootloader傳遞給所述操作系統(tǒng)的所有參 數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù) 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;或者,所述主核將所述bootloader 傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述 bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所 需的大小端模式相同; 其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給 操作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參 數(shù)。
12. 根據(jù)權(quán)利要求11所述的方法,其特征在于,在所述從核執(zhí)行所述從核引導(dǎo)程序之 后,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還包括: 所述從核獲取bootloader中設(shè)置的所述從核的大小端模式; 所述從核獲取操作系統(tǒng)所需的大小端模式; 在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模 式不同的情況下,所述從核更改所述從核的大小端模式,使得更改后的所述從核的大小端 模式與所述操作系統(tǒng)所需的大小端模式相同; 在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模 式不同,且所述主核將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換的情況下,還包括:所述從核將所述bootloader傳遞給所述操作系統(tǒng)的所 述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作 系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
13. 根據(jù)權(quán)利要求9或10所述的方法,其特征在于,在所述主核從從核配置指令,或者 從所述非易失存儲器獲取從核的配置地址之后,所述主核將從核引導(dǎo)程序存儲至所述內(nèi)存 中所述配置地址之后的連續(xù)的存儲空間中之前,還包括: 所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù),其中,所述 bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字; 在所述第一魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所 述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述 主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的大 小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所述操 作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所述 bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù); 或者,所述主核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù),其 中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第二魔術(shù) 字; 在所述第二魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大小端模式,并將所 述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更 改后的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所述主核 所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
14. 根據(jù)權(quán)利要求13所述的方法,其特征在于,在所述從核執(zhí)行所述從核引導(dǎo)程序之 后,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段之前,還包括: 所述從核獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù),其中,所 述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔術(shù)字; 在所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,所述從核更改所述從核的大小端 模式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 在所述從核確定所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞 給所述操作系統(tǒng)的所述主核所需的參數(shù)的情況下,還包括:所述從核將所述bootloader 傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述 bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所 需的大小端模式相同。
15. 根據(jù)權(quán)利要求9-14任一項所述的方法,其特征在于,在所述主核從非易失存儲器 獲取所述從核的配置地址之前,還包括: 所述主核從所述從核配置指令獲取所述從核的配置地址; 所述主核將所述從核的配置地址存儲至所述非易失存儲器。
16. -種bootloader大小端模式自適應(yīng)的方法,應(yīng)用于處理器,其特征在于,所述方法 包括: 獲取啟動加載器bootloader中設(shè)置的當(dāng)前核的大小端模式; 獲取操作系統(tǒng)所需的大小端模式; 若所述bootloader中設(shè)置的所述當(dāng)前核的大小端模式與所述操作系統(tǒng)所需的大小端 模式不同,則更改所述當(dāng)前核的大小端模式,并將所述bootloader傳遞給所述操作系統(tǒng)的 參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述當(dāng)前核的大小端模式以及轉(zhuǎn)換后的所述參數(shù) 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
17. -種bootloader大小端模式自適應(yīng)的方法,應(yīng)用于處理器,其特征在于,所述方法 包括: 獲取啟動加載器bootloader傳遞給操作系統(tǒng)的參數(shù),其中,所述參數(shù)的首部添加有魔 術(shù)字; 若所述魔術(shù)字發(fā)生變化,則更改當(dāng)前核的大小端模式,并將所述bootloader傳遞給所 述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述當(dāng)前核的大小端模式以及轉(zhuǎn)換 后的所述參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
18. -種計算節(jié)點,其特征在于,包括多核處理器和內(nèi)存,其中所述多核處理器通過總 線訪問所述內(nèi)存,所述多核處理器包含主核及至少一個從核,所述主核用于執(zhí)行啟動加載 器 bootloader,包括: 所述主核,用于將從核引導(dǎo)程序存儲至所述內(nèi)存的首地址之后的連續(xù)的存儲空間中; 其中,所述內(nèi)存的首地址被映射到所述總線的〇地址; 所述主核,還用于復(fù)位至少一個從核中的從核,以使所述從核的程序計數(shù)器PC指針指 向所述總線的0地址; 所述從核,用于通過所述總線訪問所述總線的0地址映射的所述內(nèi)存的首地址,讀取 所述內(nèi)存中所述內(nèi)存的首地址后存儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo)程序; 所述從核,還用于跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
19. 根據(jù)權(quán)利要求18所述的計算節(jié)點,其特征在于, 所述主核,還用于在所述從核引導(dǎo)程序中添加休眠指令;所述休眠指令用于使所述從 核處于休眠狀態(tài); 所述主核,具體用于第一次復(fù)位所述從核,所述從核的PC指針指向所述總線的0地 址; 所述從核,具體用于通過所述總線訪問所述總線的〇地址映射的所述內(nèi)存的首地址, 讀取并執(zhí)行所述從核引導(dǎo)程序中的所述休眠指令; 所述主核,具體用于第二次復(fù)位所述從核,所述從核的PC指針指向所述總線的0地 址; 所述從核,具體用于通過所述總線訪問所述總線的0地址映射的所述內(nèi)存的首地址, 讀取并執(zhí)行所述從核引導(dǎo)程序中除休眠指令之外的程序; 其中,所述從核的復(fù)位次數(shù)為兩次。
20. 根據(jù)權(quán)利要求18或19所述的計算節(jié)點,其特征在于, 所述從核,具體用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作 系統(tǒng)所需的大小端模式相同的情況下,跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
21. 根據(jù)權(quán)利要求18-20任一項所述的計算節(jié)點,其特征在于, 所述主核,還用于獲取bootloader中設(shè)置的所述主核的大小端模式; 所述主核,還用于獲取操作系統(tǒng)所需的大小端模式; 所述主核,還用于在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,更改所述主核的大小端模式,使得更改后的所述主核 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 所述主核,還用于在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述所有參數(shù)的大小端模式與所述操作系統(tǒng)所需的大 小端模式相同;或者,將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的 參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 其中,所述boo11 oader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述boo11 oader傳遞給 操作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參 數(shù)。
22. 根據(jù)權(quán)利要求21所述的計算節(jié)點,其特征在于, 所述從核,還用于獲取bootloader中設(shè)置的所述從核的大小端模式; 所述從核,還用于獲取操作系統(tǒng)所需的大小端模式; 所述從核,還用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,更改所述從核的大小端模式,使得更改后的所述從核 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 所述從核,還用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同,且所述主核將所述bootloader傳遞給操作系統(tǒng)的所述主核所 需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所述 從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的 所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
23. 根據(jù)權(quán)利要求18-20任一項所述的計算節(jié)點,其特征在于, 所述主核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù),其中,所述 bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字; 所述主核,還用于在所述第一魔術(shù)字發(fā)生變化的情況下,更改所述主核的大小端模式, 并將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后 的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù) 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所述 操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所 述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù); 或者,所述主核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的 參數(shù),其中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第 二魔術(shù)字; 所述主核,還用于在所述第二魔術(shù)字發(fā)生變化的情況下,更改所述主核的大小端模式, 并將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換, 使得更改后的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的所 述主核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
24. 根據(jù)權(quán)利要求23所述的計算節(jié)點,其特征在于, 所述從核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù), 其中,所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔 術(shù)字所述參數(shù)的首部添加有魔術(shù)字; 所述從核,還用于在所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,更改所述從核 的大小端模式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相 同; 所述從核,還用于在所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞 給所述操作系統(tǒng)的所述主核所需的參數(shù)的情況下,將所述bootloader傳遞給所述操作系 統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所 述操作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
25. 根據(jù)權(quán)利要求18-24任一項所述的計算節(jié)點,其特征在于, 所述主核,還用于獲取所述從核的狀態(tài); 所述主核,還用于確定所述從核處于激活狀態(tài)時,所述主核設(shè)置所述從核的復(fù)位次數(shù) 為兩次; 所述主核,還用于確定所述從核處于休眠狀態(tài)或未啟動狀態(tài)時,所述主核設(shè)置所述從 核的復(fù)位次數(shù)為一次。
26. -種計算節(jié)點,其特征在于,包括多核處理器、內(nèi)存和非易失存儲器,其中所述多核 處理器通過總線訪問所述內(nèi)存以及所述非易失存儲器,所述多核處理器包含主核及至少一 個從核,包括: 所述主核,用于從從核配置指令中,或者從所述非易失存儲器中獲取所述從核的配置 地址;其中,所述從核配置指令設(shè)置于所述啟動加載器bootloader中; 所述主核,還用于將從核引導(dǎo)程序存儲至所述內(nèi)存中所述配置地址之后的連續(xù)的存儲 空間中; 所述主核,還用于向從核發(fā)送核間中斷消息; 所述從核,用于通過所述總線訪問所述配置地址,讀取所述內(nèi)存中所述配置地址后存 儲的所述從核引導(dǎo)程序并執(zhí)行所述從核引導(dǎo)程序; 所述從核,還用于跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始化。
27. 根據(jù)權(quán)利要求26所述的計算節(jié)點,其特征在于, 所述從核,具體用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作 系統(tǒng)所需的大小端模式相同的情況下,所述從核跳轉(zhuǎn)到操作系統(tǒng)的代碼段,完成從核初始 化。
28. 根據(jù)權(quán)利要求26或27所述的計算節(jié)點,其特征在于, 所述主核,還用于獲取bootloader中設(shè)置的所述主核的大小端模式; 所述主核,還用于獲取操作系統(tǒng)所需的大小端模式; 所述主核,還用于在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,更改所述主核的大小端模式,使得更改后的所述主核 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 所述主核,還用于在所述bootloader中設(shè)置的所述主核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù) 進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述所有參數(shù)的大小端模式與所述操作系統(tǒng)所需的大 小端模式相同;或者,將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行 大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的 參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 其中,所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給 操作系統(tǒng)的所述主核所需的參數(shù)和所述bootloader傳遞給操作系統(tǒng)的所述從核所需的參 數(shù)。
29. 根據(jù)權(quán)利要求28所述的計算節(jié)點,其特征在于, 所述從核,還用于獲取bootloader中設(shè)置的所述從核的大小端模式; 所述從核,還用于獲取操作系統(tǒng)所需的大小端模式; 所述從核,還用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,更改所述從核的大小端模式,使得更改后的所述從核 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同; 所述從核,還用于在所述bootloader中設(shè)置的所述從核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同,且所述主核將所述bootloader傳遞給操作系統(tǒng)的所述主核所 需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換的情況下,將所述bootloader傳遞給所述操作系統(tǒng)的所述 從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給操作系統(tǒng)的 所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
30. 根據(jù)權(quán)利要求26或27所述的計算節(jié)點,其特征在于, 所述主核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù),其中,所述 bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)的首部添加有第一魔術(shù)字; 所述主核,還用于在所述第一魔術(shù)字發(fā)生變化的情況下,更改所述主核的大小端模式, 并將所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后 的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給所述操作系統(tǒng)的所有參數(shù) 的大小端模式與所述操作系統(tǒng)所需的大小端模式相同;其中,所述bootloader傳遞給所述 操作系統(tǒng)的所有參數(shù)包括:所述bootloader傳遞給操作系統(tǒng)的所述主核所需的參數(shù)和所 述bootloader傳遞給操作系統(tǒng)的所述從核所需的參數(shù); 或者,所述主核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的 參數(shù),其中,所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)的首部添加有第 二魔術(shù)字; 所述主核,還用于在所述第二魔術(shù)字發(fā)生變化的情況下,所述主核更改所述主核的大 小端模式,并將所述bootloader傳遞給所述操作系統(tǒng)的所述主核所需的參數(shù)進(jìn)行大小端 模式轉(zhuǎn)換,使得更改后的所述主核的大小端模式以及轉(zhuǎn)換后的所述bootloader傳遞給操 作系統(tǒng)的所述主核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
31. 根據(jù)權(quán)利要求30所述的計算節(jié)點,其特征在于, 所述從核,還用于獲取所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù), 其中,所述bootloader傳遞給所述操作系統(tǒng)的所述從核所需的參數(shù)的首部添加有第三魔 術(shù)字; 所述從核,還用于在所述從核確定所述第三魔術(shù)字發(fā)生變化的情況下,更改所述從核 的大小端模式,使得更改后的所述從核的大小端模式與所述操作系統(tǒng)所需的大小端模式相 同; 所述從核,還用于在所述第三魔術(shù)字發(fā)生變化,且所述主核獲取所述bootloader傳遞 給所述操作系統(tǒng)的所述主核所需的參數(shù)的情況下,將所述bootloader傳遞給所述操作系 統(tǒng)的所述從核所需的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得轉(zhuǎn)換后的所述bootloader傳遞給操 作系統(tǒng)的所述從核所需的參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
32. 根據(jù)權(quán)利要求26-31任一項所述的計算節(jié)點,其特征在于, 所述主核,還用于從所述從核配置指令獲取所述從核的配置地址; 所述主核,還用于將所述從核的配置地址存儲至所述非易失存儲器。
33. -種bootloader大小端模式自適應(yīng)的裝置,其特征在于,包括: 獲取單元,用于獲取啟動加載器bootloader中設(shè)置的當(dāng)前核的大小端模式; 所述獲取單元,還用于獲取操作系統(tǒng)所需的大小端模式; 處理單元,用于在所述bootloader中設(shè)置的所述當(dāng)前核的大小端模式與所述操作系 統(tǒng)所需的大小端模式不同的情況下,更改所述當(dāng)前核的大小端模式,并將所述bootloader 傳遞給所述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述當(dāng)前核的大小端模式 以及轉(zhuǎn)換后的所述參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
34. -種bootloader大小端模式自適應(yīng)的裝置,其特征在于,包括: 獲取單元,用于獲取啟動加載器bootloader傳遞給操作系統(tǒng)的參數(shù),其中,所述參數(shù) 的首部添加有魔術(shù)字; 處理單元,用于在所述魔術(shù)字發(fā)生變化的情況下,更改當(dāng)前核的大小端模式,并將所述 bootloader傳遞給所述操作系統(tǒng)的參數(shù)進(jìn)行大小端模式轉(zhuǎn)換,使得更改后的所述當(dāng)前核的 大小端模式以及轉(zhuǎn)換后的所述參數(shù)的大小端模式與所述操作系統(tǒng)所需的大小端模式相同。
【文檔編號】G06F12/02GK104156234SQ201410351558
【公開日】2014年11月19日 申請日期:2014年7月22日 優(yōu)先權(quán)日:2014年7月22日
【發(fā)明者】劉健平, 黃韶宇, 劉小波 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
博爱县| 定陶县| 手机| 开远市| 扶风县| 怀宁县| 会东县| 阳朔县| 湘乡市| 长武县| 安塞县| 安平县| 乌恰县| 玉溪市| 太仓市| 南召县| 保亭| 新化县| 石渠县| 麻阳| 敖汉旗| 防城港市| 喀喇沁旗| 阿瓦提县| 阿克陶县| 萝北县| 邹城市| 杭锦后旗| 申扎县| 桐庐县| 张家港市| 于都县| 金门县| 酒泉市| 盐边县| 泗水县| 洪洞县| 保定市| 南澳县| 西林县| 龙泉市|