版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
全球計(jì)算聯(lián)盟發(fā)布I 1 1 1 1 13.1統(tǒng)一基本輸入輸出系統(tǒng)(UnifiedBasicInpu 1 13.3統(tǒng)一虛擬總線(UnifiedVirt 1 1 13.6調(diào)用標(biāo)識(shí)服務(wù)(CallID 2 23.8調(diào)用標(biāo)識(shí)服務(wù)信息表(CallIDSer 2 2 2 24縮略語/Abbreviation 2 3 4 4 4 5 7 9 11 11 13 13 13 14 14 14 15 169.1信息交互層接口 169.2交互通道選擇 189.3參數(shù)地址處理 A.3語法定義 本文件按照GB/T1.1-2020《標(biāo)準(zhǔn)化工作導(dǎo)則第1部分:標(biāo)準(zhǔn)化文件的結(jié)構(gòu)和起草規(guī)則》的規(guī)定起請(qǐng)注意本文件的某些內(nèi)容可能涉及專利。本文件的發(fā)布機(jī)構(gòu)不承擔(dān)識(shí)別專利的責(zé)任。本文件由全球計(jì)算聯(lián)盟新一代BIOS專業(yè)委本文件起草單位:中國電子技術(shù)標(biāo)準(zhǔn)化研究院、華為技術(shù)有限公司、南京百敖軟件股份有限公司、昆侖太科(北京)技術(shù)股份有限公司、超聚變數(shù)字技術(shù)有限公司、四川華鯤振宇智能科技有限責(zé)任公司、天翼云科技有限公司、統(tǒng)信軟件技術(shù)有限公司、河南昆侖技術(shù)有限公司、軟通計(jì)算機(jī)有限公司、神州數(shù)碼集團(tuán)股份有限公司、中移(蘇州)軟件技術(shù)有限公司、寶德計(jì)算本文件主要起草人:馬銀川、宋東匡、聶永豐、王輝強(qiáng)、陳剛、包振忠、王東偉、尹航、鐘偉軍、李雪蓮、吳平、高黎明、陳小春、張家定、高鵬飛、陳剛、趙彥鈞、劉東、季良杰、劉宇、李萌、牛戰(zhàn)爭(zhēng)、王昱力、徐志剛、李亞軍、鄧忠良、彭小南、夏軍、王曉輝、劉敬軒、龔煥新、潘曉1統(tǒng)一基本輸入輸出系統(tǒng)(UBIOS)基礎(chǔ)架構(gòu)規(guī)范本文規(guī)定了計(jì)算系統(tǒng)中基本輸入輸出系統(tǒng)(BIO外設(shè)板卡等各組件間以及BIOS內(nèi)部固件間的交互方式,包括交互架構(gòu)、交互本文件適用于BIOS、操作系統(tǒng)、BMC和外設(shè)的設(shè)計(jì)、開每個(gè)組件對(duì)外提供的UBIOS接口以及如何使用其他組件提供的UBIOS接口,包括功能調(diào)用、信息傳3.3統(tǒng)一虛擬總線(UnifiedVi通過軟件抽象屏蔽各種底層硬件通信通道,為使用者提供統(tǒng)一的操作接口,實(shí)現(xiàn)組件間互相通信表示某種功能的ID,獨(dú)立定義,與模塊或子模塊ID解耦,由12bit2可以是SenderUserID,也可以是ReceiverUs設(shè)備分配其自身資源的基本單元,每個(gè)Entity都是UB域內(nèi)4縮略語/AbbreviationARM高級(jí)精簡(jiǎn)指令集計(jì)算機(jī)器(AdvancedRISCMacATFARM可信固件(ARMTrustedFirmware)BIOS基本輸入輸出系統(tǒng)(BasicInputOutpuBMC基板管理控制器(BaseboardManagementController)DDR雙倍數(shù)據(jù)速率內(nèi)存(DoubleDataRate)DMA直接內(nèi)存訪問(DirectMemEC嵌入式控制器(EmbeddedCEID擴(kuò)展號(hào)(ExtensionID)EL異常等級(jí)(ExceptionLevel)FID函數(shù)號(hào)GIC通用中斷控制器(GeneralInterruptController)HBM高帶寬內(nèi)存(HighBandwidthM35概述本文件是為適應(yīng)芯片異構(gòu)化、BIOS多固件化、外設(shè)智能化而設(shè)計(jì),統(tǒng)一了BIOS與OS之間、BIOS與外設(shè)之間以及BIOS內(nèi)部固件間的交互方式,進(jìn)而延伸到與BIOS關(guān)聯(lián)的其他部件,如BMC固件、EC固件。對(duì)于主流的異構(gòu)SoC,典型系統(tǒng)分層架構(gòu)見.1Step1b)子系統(tǒng):指MainSystem之外,具有獨(dú)立取指令和執(zhí)行指令能a)外設(shè)的UBIOSInterface為虛線表示依賴b)本文件與芯片架構(gòu)松耦合,可應(yīng)用于不同4UBIOS基礎(chǔ)架構(gòu)包括虛擬總線以及通過虛擬總線傳輸信息的UBIOS接口。UBIOS接口包括BIOS啟動(dòng)OS上報(bào)信息表、BIOS的運(yùn)行時(shí)服務(wù)功能、BIOS根據(jù)事件觸發(fā)向OS報(bào)告的信息、BIOS內(nèi)部多組件間的功能調(diào)用和信息報(bào)告、BIOS與其他組件間的功能調(diào)用和信息報(bào)告等。UBIOS接口可分為信息上報(bào)和功能交互有子系統(tǒng)都可連接到這個(gè)總線上,SoC外圍部件也可與操作系統(tǒng)域內(nèi)虛擬總線其他固件設(shè)備固件BMC固件BIOS固件其他固件設(shè)備固件BIOS另外,在一個(gè)大型計(jì)算系統(tǒng)內(nèi)可能存在多個(gè)小型計(jì)算系統(tǒng),各小型計(jì)算系統(tǒng)通過互5域1域...域n域間虛擬總線操作系統(tǒng)域內(nèi)虛擬總線其他固件設(shè)備固件eBMC固件BIOS固件其他固件設(shè)備固件eBIOS注:域內(nèi)虛擬總線和域間虛擬總線支持同一條總線,也支持子母總線分級(jí)實(shí)現(xiàn),即每個(gè)b)UVB通過統(tǒng)一的接口抽象不同的物理通道。組件的擴(kuò)展,只需接入U(xiǎn)VB即可與UVB上其他組件進(jìn)c)組件間通過UVB進(jìn)行信息傳遞,并在存在安全訪問限制的場(chǎng)景中設(shè)置專用的緩d)各組件的實(shí)際交互對(duì)象是UVB,而不是某個(gè)具體組件,UVB6),過專門定義的指令進(jìn)行切換,并通過共享的通用寄存器進(jìn)行信息傳遞,水平交互通道,即共享空間通道,可支持跨芯片體系架構(gòu)的信息交互,此時(shí)通信雙方均SoC外只有水平交互通道,通過其他協(xié)議實(shí)共享空間是一塊通信雙方均可訪問但沒有格式定義的內(nèi)存區(qū)域。在本文件中將基于共享空間創(chuàng)建的UVB實(shí)體稱為內(nèi)存虛擬總線,簡(jiǎn)稱為虛擬總線(UVB),即在虛擬總線(UVB)與多種物理通道并存其他協(xié)議指SoC與外部組件間通信協(xié)議,如BIOS與BMC的通信協(xié)議,此類通信協(xié)議并不由本文件定7本文件將以BIOS、OS、外設(shè)及BMC等組件為邊界進(jìn)行接口定義,要求各組件按規(guī)范提供相接口功能具體由組件內(nèi)單個(gè)固件獨(dú)立完成,或者多固件聯(lián)合完成,由組件開發(fā)者決定。組件內(nèi)各固件的接口形式應(yīng)當(dāng)遵循本文件要求,與本文件定義保持一a)被動(dòng)接受功能調(diào)用的接口:統(tǒng)一采用CallID的方式定義,一個(gè)CallID對(duì)應(yīng)一個(gè)功能或服b)主動(dòng)上報(bào)信息的接口:統(tǒng)一采用NotifyID的方式定義,一個(gè)NotifyID對(duì)應(yīng)一個(gè)信息,稱為NotifyIDInformation(NII),NotifyIDInformation是報(bào)告(report)、確認(rèn)(ack)a)芯片ISA調(diào)用:通過通用b)UVB消息:各子系統(tǒng)之間通過UVB進(jìn)行CallIDService消息通信,進(jìn)而實(shí)現(xiàn)CallIDService調(diào)c)其他協(xié)議消息:通過其他通信協(xié)議傳遞C單域異構(gòu)SoC系統(tǒng)中,CallIDService調(diào)用邏輯框圖見圖5,圖中每一個(gè)組件或固件都是處于8子系統(tǒng)主系統(tǒng)子系統(tǒng)OS用戶態(tài)UBIOSUVB調(diào)用UBIOSUVB設(shè)備固件子系統(tǒng)固件(……)UB設(shè)備固件子系統(tǒng)固件(……)指令調(diào)用子系統(tǒng)固件UVB調(diào)用UVB調(diào)用主系統(tǒng)固件BMC主系統(tǒng)固件BMCUB等其他協(xié)議調(diào)用(如BMCagent)a)OS可通過芯片ISA調(diào)用b)主系統(tǒng)固件可通過UVB調(diào)用子系統(tǒng)固件提供的接口。d)BMC可以通過其他協(xié)議直接或間接調(diào)用BIOS各子系統(tǒng)固件提供的接口,BIOS也可以反向調(diào)在不增加額外安全手段的情況下,OS只有Kernel及更高權(quán)限的層級(jí)可以調(diào)用Cal同實(shí)現(xiàn)中,同一個(gè)CallIDService的調(diào)用方式可以不同。BIOSCallIDService具體調(diào)過UBIOS信息表上報(bào)給OS。BIOS與BMC、BIOS與外設(shè)的接口由具體硬件鏈路決定,可不依賴UB報(bào)其故障信息。一個(gè)NotifyID代表了一種上報(bào)的信息內(nèi)容,不隨上報(bào)主體、上報(bào)NotifyIDInformatia)UVB消息:BIOS準(zhǔn)備好NotifyIDInformation,并發(fā)消息到UVB,等待OS發(fā)現(xiàn)、NotifyIDInformation,適1)BIOS向其他組件報(bào)告的場(chǎng)92)其他組件(如外設(shè))向BIOS報(bào)告的場(chǎng)景:其他組件通過這類協(xié)議向BIOS發(fā)送包含NotifyIDInformation的數(shù)據(jù),由BIOS收集、分析,并按需向其他組件(如OS、帶外帶內(nèi)帶外子系統(tǒng)主系統(tǒng)子系統(tǒng)OS用戶態(tài)中斷通知UBIOS中斷通知UVB設(shè)備固件UB等其他協(xié)議通知設(shè)備固件UB等其他協(xié)議通知(……)子系統(tǒng)固件UVB通知子系統(tǒng)固件子系統(tǒng)固件BMCUBBMC(如BMCagent)NII上報(bào)邏輯說明如下:a)BIOS(含主系統(tǒng)固件和子系統(tǒng)固件)可以通過UVB向OS發(fā)送NotifyIDInformation,并且可b)子系統(tǒng)固件向BMC發(fā)送通知消息有兩種途徑,一種是直接通過其他協(xié)議向BMC固件發(fā)送c)設(shè)備固件可以通過其他協(xié)議向子系統(tǒng)固件發(fā)送NotifyIDInformation,并且a)BIOS與OS之間需事先預(yù)留可共同訪問的存儲(chǔ)空間,用于存放NotifyIDInformation,地址空間在UBb)CallIDService的響應(yīng)信息是特殊的NotifyIDInformation1組件a組件組件a功能層功能層功能層接口形式接口形式接口形式信息交互層信息交互層信息交互層交互通道交互通道交互通道虛擬總線a)信息交互層:是虛擬總線在組件內(nèi)的代理,負(fù)責(zé)處理各組件間復(fù)雜的交互關(guān)系信息交互接口給功能接口層使用,使功能接口層可以不關(guān)心底層信息交互通道,更加聚焦在);注:各組件的信息交互層在代理實(shí)施虛擬總線交互時(shí),需要系b)功能接口層:組件接口功能集,采用一種統(tǒng)一的功能接口形式。舉例說明組件A調(diào)用組件B某個(gè)功能接口的詳細(xì)流程,①組件A組件業(yè)務(wù)邏輯中調(diào)用信息交互層接口函數(shù),并將CallID,組件B的UserID③組件A信息交互層將業(yè)務(wù)調(diào)用信息傳輸給指⑤組件B信息交互層將業(yè)務(wù)信息轉(zhuǎn)換成組件B可識(shí)別的信息,并將信息提供給功能接口層,指定功能接口調(diào)用。執(zhí)行完調(diào)用后,原路徑返MessageID格式定義見表3。01b(0x1表示本MessageIDb)Reserved:2bit,保留,c)ModuleID:16bit,表示模塊分類,詳細(xì)描述見ModuleID內(nèi)容格式章節(jié)0x0000~0xEFFF-本文件約d)FunctionIDorInformationID:12bit,代表特定具體功能或信息,獨(dú)立定義,與模塊或子模塊1)FunctionID和Information1每一個(gè)FunctionID代表一個(gè)a)FunctionID:符合FunctionID格式定義、無重復(fù)的ID,以十六進(jìn)制格式書寫。c)接口類型:說明接口類型,同步功能注2:異步功能:響應(yīng)者收到請(qǐng)求后先返回響應(yīng)結(jié)果,再執(zhí)行命令,完成d)輸入:描述調(diào)用此功能時(shí)需輸入的參數(shù),包括參數(shù)格式、參數(shù)含義等,要求數(shù)據(jù)格式自e)輸出:描述功能執(zhí)行后的輸出信息,包括數(shù)據(jù)格式及每個(gè)數(shù)據(jù)的含義,f)返回值:即執(zhí)行狀態(tài),表示此次Function執(zhí)行成功、失敗等狀態(tài)。g)安全防護(hù)(可選):指功能提供者需執(zhí)行的安全措施,常規(guī)的如數(shù)據(jù)正確性校驗(yàn)、緩存h)約束(可選):描述此功能的使用條件,無約束時(shí)可省略。a)InformationID:符合Informb)信息描述:對(duì)信息含義進(jìn)行清晰無歧義的說明。對(duì)象描述格式的優(yōu)點(diǎn)是自帶格式,對(duì)字段進(jìn)行擴(kuò)展或者刪除均不影響其他字段,缺點(diǎn)是占用更多ubios_ob_v1("example_info",total_size){head@u32=valuetail@u64=value}簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu),示例如下,見表4。04/4488/a)MainModuleID:12bit,表示模塊分類,最大支持4096種模塊;b)SubModuleID:4bit,表示模塊的子模塊,值為0表示模塊整體,從1開始表示子模塊,每個(gè)模塊最大支持15個(gè)子模塊,子模塊的設(shè)置可以為每個(gè)mainmoduleID預(yù)留一段空間供a)每次向本文件申請(qǐng)ModuleID時(shí),應(yīng)先申請(qǐng)MainModb)按照SubModuleID定義,最大支持15個(gè),如果超過15個(gè),需要申請(qǐng)多個(gè)MainUVB支持多組件并發(fā)使用,存在資源搶占操作,當(dāng)使用虛擬總線進(jìn)行消息傳遞時(shí),需要通多個(gè)組件可能支持相同的CallIDService,通過UserID區(qū)分響應(yīng)者多個(gè)組件可以采用相同的NotifyIDInformation來報(bào)一,通過UserID來區(qū)分,表達(dá)信息上報(bào)的意圖,防止沖突,例如:1a)BIOS上報(bào)的某個(gè)NotifyIDInformation有以下三種情況時(shí)上報(bào)給OS和BMC,通過設(shè)置接收者UserIb)一個(gè)異步的CallIDService需要響應(yīng)者通過NotifyIDIn件同時(shí)通過虛擬總線調(diào)用該CallIDService時(shí),響應(yīng)者也需要通過UserID來區(qū)分響應(yīng)的接收UserID的格式由兩部分組成,共32bit,見表8。0xFF-表示不指定User;0x30-TrustedOS,指UBIOS功能接口層是功能的集合。本層的同類功能均采用統(tǒng)一的接口格式,分為CalCallIDService是接收消息,根據(jù)/*Parameters:input-option,parameterstructpointer,exactpaNULLifnoinputparameterinputSize-inputbufferorparoutput-option,usedtostorereturneddata,inputNULLifnooutputdatapOutputSize-whenininput,itisouU_Status-0meanssuccess,othervaluemeansfailedU_StatusCisFunction(constvoid*input,unsignedintinputSize,void*output,unsigne注:input里不能包含指向另一個(gè)區(qū)域的指針,因?yàn)榭缃M件調(diào)用時(shí),彼此對(duì)地址的訪問權(quán)限可直接訪問,如果需要接收方函數(shù)去感知通信雙方、感知通信方式、感知地址屬性而區(qū)別對(duì)待,pOutputSize:作為輸入時(shí),用于存儲(chǔ)outputdatabuffer的大小,作為輸出時(shí),它存儲(chǔ)outputdata的大b)input信息為只讀,不能通過修改ic)pOutputSize所指向的值在輸出時(shí)表示實(shí)際數(shù)據(jù)大小,如果值大于輸入時(shí),則返回的U_SNotifyIDInformation是單向信息傳遞,響應(yīng)只包含應(yīng)答,表明已收到,不返作為接收者,應(yīng)根據(jù)需要進(jìn)行NotifyIDI),/*Parameters:Input-NotifyIDInformationdatapointer,exactformataccordingInU_Status-0meanssuccess,othervaluemeansfailedNote:theinput=NULLisvalid,meansasas1U_StatusNiiCallback(constvoid*input,unsigne注:各組件可以自行注冊(cè)各種notifyID9信息交互層9.1信息交互層接口UBIOS信息交互層接口包含面向使用者、面向其他信息交互層組件a組件b功能接口層功能接口層③③①調(diào)用者信息交互層②交互通道信息交互層①調(diào)用者①調(diào)用者通過過信息交互層的接口發(fā)起CallIDService調(diào)用;②組件a通過組件間信息交互層通接口向組件b傳輸信息;③信息交互層查詢并調(diào)用功能接口層的功能;),callId-theIDofthreceiverId-theexpectantresponseruserIDofthisCallIDServicecaotherparameters-seeCallIDServiU_Status-0meanssuccess,othervaluemeansfailedU_StatusCisCall(unsignedintcallId,unsignedintreceiverId,constvoid*input,unsignedintinputreceiverId:響應(yīng)者UserID,即指示本次調(diào)用希望被誰響應(yīng),可以不指定。input和inputSize:即Call面向NotifyIDInformation發(fā)送的接口,即使用者可以通過信息交互層的這一接口發(fā)送NotinotifyId-theIDofthisNotifyIDInformationreceiverId-theexpectantreceiveruserIDofthisinformationinfo-informationpointer,exactinformationdataaccordingInformationdefininfoSize-informaneedAck-indicateifthisNIIneedsaackfromreceiver,truemeansyes,falsemeansnoU_Status-0meanssendsuccess,othervaU_StatusNiiSend(unsignedintnotifyId,unsignedintreceiverId,constvoid*info,unsignedintinfoboolneedAck)notifyId:本NotifyIDInformation對(duì)應(yīng)的ID。receiverId:接收者UserID,即指示本次消息希望被誰接收,必須指定,信息交互層可基于接收者9.1.3信息交互層間接口1當(dāng)信息交互層向另一個(gè)組件發(fā)送消息時(shí),會(huì)根據(jù)實(shí)際所需傳遞的當(dāng)信息交互層接收來自另一個(gè)組件的消息時(shí),會(huì)檢測(cè)所有可能收信息交互層的接口定義應(yīng)符合“交互通道定9.1.4功能接口層回調(diào)接口功能接口層回調(diào)接口指信息交互層收到調(diào)用請(qǐng)求后,查詢并調(diào)用功能接口層的功能,遵9.2交互通道選擇在本文件中定義了CallIDServiceTable和ReceiverUserID來確定彼此信息交互的通道。UserID則用來區(qū)分CallIDServiceTable,在計(jì)算系統(tǒng)中,每個(gè)組件既是服務(wù)的使用者也是服務(wù)的2.一個(gè)組件可以獲得來自多個(gè)組件的不同CallIDServiceTable,通過不同的UserID來進(jìn)行區(qū)專用指令RecieverUserID(Send)虛擬總線(Send)虛擬總線CallIDServiceTable其他協(xié)議當(dāng)前NotifyIDInformation只支持由BIOS給OS發(fā)送、由BIOS給BMC發(fā)送、由外設(shè)給主機(jī)發(fā)送a)對(duì)于BIOS給OS發(fā)送NotifyIDInformatiob)對(duì)于BIOS給BMC發(fā)送NotifyIDInformation場(chǎng)景,通道由BIOS與BMC之間的物理通道決c)對(duì)于外設(shè)給主機(jī)發(fā)送NotifyIDInformation場(chǎng)景,通道由外設(shè)與主機(jī)之間的物理通道決9.3參數(shù)地址處理9.3.1概述在進(jìn)行跨組件功能調(diào)用或信息傳遞時(shí),不同組件的地址譯碼可能會(huì)存在差異,為了使功能開發(fā)者無需過多關(guān)注這些差異,信息交互層需要對(duì)參數(shù)中的地址進(jìn)行妥從地址處理維度看,跨組件信息交互可以分為2種a)有共享交互:表示兩個(gè)組件間存在共享空間,在進(jìn)行消息傳遞時(shí)傳遞的是指向b)無共享交互:表示兩個(gè)組件間進(jìn)行消息傳遞時(shí)直接傳遞消息內(nèi)容,不依賴彼此共享空間。采用何種交互方式一方面依賴底層硬件,有的硬件通路不支持有共享交互,另一方面也跟消息傳遞的效率、安全性有關(guān),本章節(jié)描述有共享交互方式下的參數(shù)地9.3.2透?jìng)髂J酵競(jìng)髂J较拢畔⒔换硬粚?duì)參數(shù)地址做任何處理,參數(shù)直接傳遞給接收者。見圖11錯(cuò)誤:未找組件a調(diào)用者組件a信息交互層組件b信息交互層組件b功能接口層原始調(diào)用參數(shù)透?jìng)魍競(jìng)髟颊{(diào)用參數(shù)2addressyaddressy物理addressxaddressx交互雙方對(duì)物理內(nèi)存的地址映射相同,一個(gè)組件的參數(shù)(指針)在另一個(gè)組件可以得到完全相同9.3.3轉(zhuǎn)存模式轉(zhuǎn)存模式指信息交互層對(duì)參數(shù)內(nèi)容進(jìn)行搬移,并更新參數(shù)地址,然后才傳遞給另一個(gè)組件,消息從另一個(gè)組件返回時(shí),再對(duì)參數(shù)地址進(jìn)行還原,使功能接口層對(duì)地址轉(zhuǎn)存無感,幫助功能addressyaddressxaddressyaddressx物理addresaddresb共享注:上圖中地址映射差異不僅僅指共享部分,還包括其他非共享部分的映射或訪問權(quán)限組件a調(diào)用者組件a信息交互層組件b信息交互層組件b功能接口層①原始調(diào)用參數(shù)②轉(zhuǎn)存數(shù)據(jù)到共享③更新參數(shù)指向本④得到本地視角的①原始調(diào)用參數(shù)空間并更新參數(shù)地映射的共享空間參數(shù),執(zhí)行功能⑦得到執(zhí)行結(jié)果⑥轉(zhuǎn)存結(jié)果到原始⑤轉(zhuǎn)存結(jié)果到共享⑦得到執(zhí)行結(jié)果參數(shù)指向的空間空間②組件a信息交互層掌握共享空間地址,且能訪問組件a本地地址,將數(shù)據(jù)搬移到共享空參數(shù)指向共享空間的物理地址(而非組件a③組件b信息交互層掌握共享空間地址,根據(jù)地址映射差異將來自組件a的共享空間物理地④組件b功能接口直接使用來自組件b信息交互層的參數(shù),與被本地程序調(diào)⑤組件b功能接口層已按需將返回?cái)?shù)據(jù)寫入了共享空間,組件b信息交互層將參數(shù)地址轉(zhuǎn)回⑦組件a調(diào)用者從原始參數(shù)指定的地址獲這種方式可以屏蔽組件間地址譯碼差異,同時(shí)提供一定的安全性(限定數(shù)據(jù)傳遞所使用的地),注:如果交互雙方存在專用的共享緩存,則在交互過程中可以免去地址轉(zhuǎn)換的操作,發(fā)9.3.4模式選擇參數(shù)地址處理模式選擇存在多種因素,包括物理環(huán)境、安全發(fā)者決定,但如何表達(dá)選擇結(jié)果則需要在規(guī)范中進(jìn)行約定,內(nèi)容在相應(yīng)的交互通道信息內(nèi)存虛擬總線交互方式需進(jìn)行模式選擇(在UVB信息表中描述),芯片ISA交互方式默認(rèn)采用透?jìng)髟谕ㄟ^UVB進(jìn)行消息通信時(shí),除了輪詢之外,還支持借助中斷為NotifyInterrupt。在同一個(gè)計(jì)算系統(tǒng)中,NotifyInterrupt可NotifyInterrupt接受對(duì)象,無論包含多少,NotifyInterruNotifyInterrupt(OS):具體在NotifyInfo信息表中描述。NotifyInterrupt(其他):暫不包含在本文件之中,通過芯片ISAcall的虛擬總線交互即通過芯片ISAcall進(jìn)行交互的一種虛擬總線實(shí)現(xiàn)方式,當(dāng)前2基于ARM的64位指令集(AArch64)的虛擬總線交互應(yīng)通過通用寄存器傳遞調(diào)用信息,并通過0CIS_CALL_SIGNATURE:區(qū)別于SMC其他命令的特殊標(biāo)識(shí),標(biāo)識(shí)此次通過#defineCIS_CALL_SIGNATURE0xEF00F參數(shù)基地址(或指針):指向ParameterStructure的地址(或指針),Paramete//ParameterStructureunsignedintmessageId;unsignedintsenderId;unsignedintreceiverId;unsignedintreserved0;unsignedintinputSize;unsignedintreserved1;X1:對(duì)應(yīng)的入?yún)⒌膬?nèi)存物理地址。調(diào)用返回:UVB僅能由BIOS各固件、OSkernel及以上權(quán)限的軟件訪問。BIOS作為外設(shè)、BMC等外部組件向內(nèi)存虛擬總線發(fā)送消息的代理。BIOS可對(duì)來自外部組件的消息進(jìn)行安存虛擬總線,用于安全組件間的互相調(diào)用;對(duì)于某些支持硬件通道的特定組件,可單獨(dú)設(shè)置一條內(nèi)存虛擬總線;對(duì)于NotifyIDInformation上報(bào)場(chǎng)景,也可按消息緊急程度,設(shè)置窗口窗口窗口……虛擬總線窗口窗口窗口窗口注:UVB窗口的安全屬性決定了通信的安全屬性。對(duì)于高安全要求的通信,在只有高安全等級(jí)才能訪問的UVB窗口0111功能標(biāo)志:22244應(yīng)),84注1:注2:4Address8輸入數(shù)據(jù)區(qū)起始地址,數(shù)據(jù)格式由所傳遞的信描述中定義。如果沒有專屬buffer,必44Address8輸出數(shù)據(jù)區(qū)起始地址,數(shù)據(jù)格式由所傳遞的信描述中定義。如果沒有專屬buffer,必44484各個(gè)UVB窗口相互獨(dú)立,每個(gè)窗口都可用于傳遞CallIDService或NotifyIDInformation,Call行互斥檢查,通過UserID確認(rèn)自身是否占用該窗口。窗口的寫操作,應(yīng)遵守查詢、占用、使用、釋放的步驟,讀操作不受此約束。窗口的共享屬性(讀寫時(shí)間差)可造成虛假占用問題,應(yīng)通過以下方檢查ID是否為0檢查ID是否為0D是否為02釋放窗口;如未獲得響應(yīng),則應(yīng)在達(dá)到超時(shí)時(shí)間后釋放窗口。要求如a)默認(rèn)情況下下,內(nèi)存虛擬總線窗口發(fā)送消息的超時(shí)b)根據(jù)業(yè)務(wù)實(shí)際情況,BIOS虛擬總線的消息接收可采用輪詢模式,也可采用中斷模式,或者兩者結(jié)合。輪詢模式是按總線設(shè)置遍歷每個(gè)窗口;中斷模式可以是匯聚成一個(gè)中斷,如NotifyInterrupt,觸發(fā)后啟動(dòng)輪詢,也可以是每個(gè)窗口設(shè)置自己的中根據(jù)所傳輸數(shù)據(jù)(input和outpua)場(chǎng)景1.不需要分幀:input和output數(shù)據(jù)請(qǐng)求和響應(yīng)接收方本地緩存接收方本地緩存輸入數(shù)據(jù)UVB緩存輸入數(shù)據(jù)功能函數(shù)本地緩存UVB緩存輸入數(shù)據(jù)功能函數(shù)輸出數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)如圖17所示,在不分幀的情況下,inp),b)場(chǎng)景2.input需要分幀,output不需要B緩存輸出數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)發(fā)送方本地緩存UV接收方本地緩存輸入數(shù)據(jù)輸出數(shù)據(jù)功能函數(shù)請(qǐng)求B緩存輸出數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)發(fā)送方本地緩存UV接收方本地緩存輸入數(shù)據(jù)輸出數(shù)據(jù)功能函數(shù)發(fā)送方本地緩存UVB緩存B緩存接收方本地緩存輸入輸入輸入數(shù)據(jù)輸出數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)輸入數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)功能函數(shù)此場(chǎng)景下,發(fā)送請(qǐng)求時(shí)flag.frame為“分幀未結(jié)束(1)”,直到發(fā)送input數(shù)據(jù)的最后一幀時(shí)改為“分幀已結(jié)束(2)”;響應(yīng)請(qǐng)求時(shí),每完成一幀數(shù)據(jù)(非結(jié)束幀)接收將flag束(2)”,在前面沒有“分幀未結(jié)束(1)”狀態(tài)。在返回output數(shù)據(jù)時(shí),與場(chǎng)景2發(fā)送input數(shù)據(jù)d)場(chǎng)景4.input和outB緩存發(fā)送方本地緩存UV接收方本地緩存功能函數(shù)輸入數(shù)據(jù)B緩存發(fā)送方本地緩存UV接收方本地緩存功能函數(shù)輸入數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)輸出數(shù)據(jù)響應(yīng)發(fā)送方本地緩存UVB緩存B緩存本地緩存功能函數(shù)輸入數(shù)據(jù)輸出數(shù)據(jù)接收方本地緩存功能函數(shù)輸入數(shù)據(jù)輸出數(shù)據(jù)輸入數(shù)據(jù)outputoutputdata輸出數(shù)據(jù)輸出數(shù)據(jù)2此場(chǎng)景下,發(fā)送請(qǐng)求時(shí)flag.frame為“分幀已結(jié)束(2)”,和響應(yīng)請(qǐng)求時(shí)flag.frame為“分幀已綜上5種場(chǎng)景,除了場(chǎng)景1,其他場(chǎng)景都需要分配緩存,UVBbuffer的起始。如果發(fā)送時(shí)采點(diǎn)先將幀狀態(tài)設(shè)為其他(如“已讀數(shù)據(jù)請(qǐng)繼續(xù)(3)”),再返回執(zhí)行狀態(tài),再發(fā)送數(shù)據(jù)。如果協(xié)議的每一個(gè)數(shù)據(jù)報(bào)文已經(jīng)有嚴(yán)格的定義,不支持對(duì)數(shù)據(jù)進(jìn)行擴(kuò)展,則需要增加該標(biāo)識(shí)可以是在相應(yīng)協(xié)議原有標(biāo)識(shí)上擴(kuò)展(即增加一種表示UBIOS的標(biāo)識(shí)),或在協(xié)議的b)發(fā)送數(shù)據(jù):按照下述各種數(shù)據(jù)格式作為協(xié)議的Data(或payload)字段填入報(bào)文。c)接收數(shù)據(jù):按照下述各種數(shù)據(jù)格式解析a)通過其他協(xié)議傳遞數(shù)據(jù),由對(duì)應(yīng)協(xié)議保證數(shù)據(jù)可靠,不嚴(yán)格要求額外增加在采用此類協(xié)議進(jìn)行實(shí)際信息交互中,不同的系統(tǒng)對(duì)數(shù)據(jù)的處理存在多種可能,有的依賴報(bào)文傳遞所有數(shù)據(jù),有的支持通過DMA獲取數(shù)據(jù)或發(fā)送數(shù)據(jù),報(bào)文中只需傳遞數(shù)據(jù)地址,有的支持地址空間共享,可以用相同的地址表達(dá),有的不支持地址空間共享,需要進(jìn)行地址翻譯,為了避免因?yàn)樾枰С侄喾N模式而定義過多冗余字段,選擇通過type來進(jìn)行區(qū)分,定義多種type的數(shù)據(jù)結(jié)構(gòu),按需選擇使此類型適用于通過報(bào)文傳遞數(shù)據(jù)的場(chǎng)景,通過該方式進(jìn)行消息傳遞時(shí),參數(shù)數(shù)據(jù)和執(zhí)行狀態(tài)011122448444如果無效(即pOutputSize=NULL用0xFFFFFFFF表Service的返回消息)時(shí),表示執(zhí)行返回值,實(shí)際OutputSize由DataTotalSiz4-實(shí)際傳輸?shù)臄?shù)據(jù),當(dāng)DataTotalSize表示IInput數(shù)據(jù),當(dāng)DataTotalSiUBIOS信息表為本文件中涉及的各種信息表的統(tǒng)稱。用戶可自定義擴(kuò)展描述,語共享內(nèi)存指采用內(nèi)存作為共享空間來傳遞UBIOS信息表,通常應(yīng)用于BIOS與OS之間,根據(jù)實(shí)際使用需求,共享內(nèi)存包含臨時(shí)性共享內(nèi)存和持續(xù)性共享內(nèi)32)持續(xù)性共享內(nèi)存:用于BIOS向OS主動(dòng)上報(bào)NotifyIDInformation。協(xié)議報(bào)文屬于非共享空間,指數(shù)據(jù)通過協(xié)議報(bào)文直接傳輸,通常應(yīng)用于BIOS與BMC間依據(jù)信息傳遞的發(fā)起方式,信息表傳遞方式可分為主動(dòng)上報(bào)和被動(dòng)主動(dòng)上報(bào)是指信息提供者在沒有得到請(qǐng)求的情況下,主動(dòng)向接收者上報(bào)信息。主動(dòng)上報(bào)時(shí)被動(dòng)響應(yīng)是指信息提供者等待信息接收者發(fā)出明確指令。接收者主UBIOS信息表,然后信息提供者才上報(bào)。所有信息表由CallIDService提供者維護(hù),信上述兩種方式不互斥,某個(gè)信息表可以支持其中一種,也可同時(shí)支持兩種,CallIDService通常UBIOS系統(tǒng)信息表指支撐框架功能正常運(yùn)行所需的信息,通常是系統(tǒng)必備的,包括roottable、memorymap、UVB等,由一容,可獨(dú)立使用,在通過CallIDSera)UBIOS系統(tǒng)信息表采用附錄A定義的格式進(jìn)行描述,同時(shí)兼容擁有相同子表表頭的其他格式b)每個(gè)表都有一個(gè)獨(dú)立、不重復(fù)的名字作為標(biāo)識(shí)。UBIOS信息索引總表是所有UBIOubios_od_root_v1("root_table",max_od_number){}Name0表名,“root_table”41344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累加,結(jié)果為0a)有效數(shù)據(jù)指從本表header開始,大小為TotalSize-26b)索引總表不要求體現(xiàn)每一個(gè)對(duì)象描述文件,e)針對(duì)擁有相同子表表頭的其他格式信息表,在同一個(gè)roottableMemoryMap僅支持臨時(shí)共享內(nèi)存空間方式傳遞,必須主動(dòng)上在某些架構(gòu)下,在獲取MemoryMap完成內(nèi)存基礎(chǔ)配置之前ubios_od_v1("memory_map",total_size){}}MemoryMap對(duì)象描述頭(ObjectDes3Name0表名,“memory_map”41344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累加,結(jié)a)有效數(shù)據(jù)指從本表header開始,大小為TotalSizememory_mapraw是a)memory_map字段必須放在對(duì)象memory_map的第一個(gè)位置,如果存在其他屬性需放在后面(通常情b)memory_map字段名占用1108881115region[...]MemoryType0123456來自設(shè)備的內(nèi)存,不應(yīng)添加到常規(guī)內(nèi)存管理中,例如Normal01場(chǎng)景1:DDR大部分可以是normal類別,其中介質(zhì)可靠性場(chǎng)景2:同樣是DDR,實(shí)現(xiàn)mirror的可以是high,未實(shí)現(xiàn)的可以是nor含這個(gè)接口。在一個(gè)復(fù)雜的計(jì)算機(jī)系統(tǒng)內(nèi),可能存在復(fù)雜的接口調(diào)用關(guān)系,舉例見圖20。3OSBMCBIOS設(shè)備固件1主系統(tǒng)固件1子系統(tǒng)固件1設(shè)備固件2主系統(tǒng)固件2子系統(tǒng)固件2a)BIOS中多個(gè)子系統(tǒng)支持相同的CallID:在BIOS中存在多個(gè)子系統(tǒng),每個(gè)子系統(tǒng)都可以對(duì)外提供CallIDService,并且可能存在2個(gè)子系統(tǒng)支持相b)相同型號(hào)的外設(shè),支持相同的CallID:上圖2個(gè)device是型號(hào)、規(guī)格完全相同的,他們對(duì)外提a)CallIDService信息表內(nèi)按照提供者UserID進(jìn)行分組描述,描述本UserID對(duì)應(yīng)組件所支持的b)CallID所屬的UserID分組按照最小組件的UserID分組;c)CallID3可由子系統(tǒng)1和2響應(yīng),且功能相同,則CallID3可以分別體現(xiàn)在系統(tǒng)1和2的Use各不相同,每個(gè)組件設(shè)置一個(gè)或多個(gè)group(通過UserID區(qū)分),每個(gè)group長度可以各不相同據(jù)結(jié)構(gòu)之間無空隙,連續(xù)排布,見圖21。UbiosCisTableUbiosOdHeaderChannel,index...CallIDs[CallIDServib)UBIOS信息交互層發(fā)起CallIDService調(diào)用時(shí),從本信息表的起始開始遍歷,找到第一個(gè)符合的Ca將receiverUserID替換為此CallID對(duì)應(yīng)的ownerUserID發(fā)起調(diào)用。即用戶receiver進(jìn)行調(diào)用,此范圍內(nèi)可能存在多個(gè)支持此CallID的子組件,那么以第一個(gè)(排在本信息ubios_ob_v1("call_id_service",total_size){group@struct[group_numusage@u8=value}ub@struct={usage@u8=value}}?call_id_serviceName0表名,“call_id_service”431344a)有效數(shù)據(jù)指從本表header開始,大小為Totalb)若結(jié)尾不足4字節(jié),則高位補(bǔ)0后再進(jìn)行累加計(jì)是否group是一個(gè)結(jié)構(gòu)體列表,列表的每個(gè)成員是一是是否是與CallID定義相同,指示該組件支持哪個(gè)CallID否是否否UVB信息表用于BIOS啟動(dòng)時(shí)向OS上報(bào)。若無說明,本節(jié)中虛擬總線或UVB的描述即表UVB信息表僅支持共享內(nèi)存方式傳遞。使用臨時(shí)性共享內(nèi)存空間進(jìn)行SpaceusedtoobtainthisWindowWindowSpaceWindowBufferSpaceSpaceusedtoobtainthisWindowWindowSpaceWindowBufferSpaceUbiosUvbTableWindowDescription[0]ObtainAddressWindowDescription[...]WindowDescriptionUVB信息表可以包含多條虛擬總線信息(),個(gè)窗口由一個(gè)窗口描述信息(WindowDescription)描述,窗口描述信息中包含窗口的占用地址、),的情況,有利于提升安全性。如果指定了緩存空間,雙方交互的所有數(shù)據(jù)(如InpUVB對(duì)象描述:ubios_ob_v1("virtual_bus",total_size){uvb@struct[uvb_number]wd@table[window_count]:3}}}Name0表名,“virtual_bus”41344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累b)若結(jié)尾不足4字節(jié),則高位補(bǔ)0后再進(jìn)行累加uvb是uvb是一個(gè)結(jié)構(gòu)體列表,列表的每個(gè)成員是一個(gè)結(jié)構(gòu)體,結(jié)否是Windows描述,一個(gè)窗口有一個(gè)Windows描述,定義見下文是是否該窗口的特定空間的系統(tǒng)物理地址(如果存在否c)UVB窗口的設(shè)置需保證所有此UVB的使用方具有cache一致性(不開cache也是一種特殊的一致性),范圍包括芯片ISA交互會(huì)涉及到芯片權(quán)限級(jí)別的數(shù)數(shù)據(jù)傳遞時(shí),由于沒有限制范圍,可能存在提權(quán)讀寫的情況,為了消減這一風(fēng)險(xiǎn),可以通過本信息ubios_ob_v1("isa_call",total_size){buffer_index@8=va}Name0表名,“isa_call”41344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累a)有效數(shù)據(jù)指從本表header開始,大小為Total否否4能保證參數(shù)傳遞的安全性,但不能保證參數(shù)中可能存在的非法地址訪問通過Notify信息表來向接收者描述基于共享內(nèi)存a)UVB方式:是阻塞式、帶反饋的,可用于傳遞重要、必須等到接收者應(yīng)答的消息。可以復(fù)用NotifyInformationObjectreadpositionbufferreadpositiontailwritepositionringDescriptionreadpositionbufferreadpositiontailwritepositionringodheaderread_pwrite_pheadtailwritepositionheada)Readposition、writeposition、ringbuffer這3者所占的空間可以不連續(xù),b)Notify信息表的內(nèi)容是不隨Notifyring_buffer@struct}number@u32=value@u64=interruptregist@u64=interruptcle@u64=interruptclearwr}}}Name0表名,“notify_info”41344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累a)有效數(shù)據(jù)指從本表header開始,大小為Total否否否 是是4是write_p是發(fā)送者和接收者可以同時(shí)操作同一個(gè)ringbuffer,無需進(jìn)行獨(dú)占操作,由接收position,由發(fā)送者負(fù)責(zé)修改writeposition,接收者需要讀取到完整的NotifyIDInformationreadposition的值,發(fā)送者需要寫入完整的N發(fā)現(xiàn)空間不足可以放棄寫入或延遲寫入,具體由實(shí)現(xiàn)決定。04448a)Data中真實(shí)的Information數(shù)據(jù)長度可能不是8字節(jié)的倍數(shù),不保證各個(gè)信息按8字節(jié)對(duì)齊存b)Notify信息表是單向的,即只能由一方向另一方報(bào)告,如果存在雙向的需求,應(yīng)當(dāng)設(shè)置2個(gè)獨(dú)立的Notify信c)Notify信息表及readposition、writeposition、ringbuffer所在內(nèi)存應(yīng)當(dāng)在MemoryMemoryType為Shared。是是u64mask;u64value;{write(data);}b)Notify信息表是單向的,即只能由一方向另一方報(bào)告,如果存在雙向的需求,應(yīng)當(dāng)設(shè)置2個(gè)獨(dú)立的Notify信其他信息表特指由其他規(guī)范定義的信息表,例a)地址引用:指在other_tables中只包含一個(gè)對(duì)應(yīng)信息表的地址,對(duì)應(yīng)信息b)文件引用:指將對(duì)應(yīng)信息表內(nèi)容完全添加到other_tables中,對(duì)應(yīng)信息表的任意修改都會(huì)影響ubios_od_v1("other_tables",total_size){}Name0表名,“other_tables”41344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累否4為了匹配UBIOS規(guī)范應(yīng)用場(chǎng)景和發(fā)展演進(jìn)需擴(kuò)展性高、可靠性高的數(shù)據(jù)描述格式,稱為UBIOS對(duì)象本文件只定義對(duì)象描述的規(guī)則和語法,不定義具體對(duì)象A.2概述本文件定義了一種name/value結(jié)構(gòu)的信息描述性語言及A.2.1總體數(shù)據(jù)結(jié)構(gòu)odroot:負(fù)責(zé)將所有對(duì)象描述文件組合在一起,odroot作為UBIOS對(duì)象描述的信息入口,通root可以搜索到所有對(duì)象描述文件,ododfile:以對(duì)象為單位,一個(gè)對(duì)象對(duì)應(yīng)一個(gè)對(duì)象描述文件,每個(gè)文件相互獨(dú)立,每個(gè)文件內(nèi)個(gè)odheader與不定量的name/value信息組成,odfile起始地址8字節(jié)對(duì)齊,內(nèi)容按1字c)odtools打包odfile時(shí),如果前一個(gè)odfile結(jié)束地址非8字節(jié)對(duì)齊,則需name/value數(shù)據(jù)格式:采用TT[L]V(tag、typ14A.2.2文件定義及其關(guān)系UBIOS對(duì)象描述采用文本化編寫,通過工具編譯成二進(jìn)制文件供程序使用,具體實(shí)現(xiàn)b).odsi:objectdescriptionsource基于.ods預(yù)處理后生成,包括引用文件合并、宏展開、表達(dá)式計(jì)算、4A.3語法定義A.3.1基礎(chǔ)語法格式ubios_od_root_version(root_name,max_od_number){ubios_od_version(object_name,total_size){}}大括號(hào){}:表示層級(jí)關(guān)系和范圍,{}括起來的內(nèi)換行:表示一個(gè)value的結(jié)束,一行最多只能寫一條逗號(hào),:參數(shù)或value中多個(gè)成員的分割符,如果一行的最后是逗號(hào),則表示換行且@:命令符,name后的@表示指定name對(duì)應(yīng)vab)如果一個(gè)value內(nèi)部又由多個(gè)子value組成,并且想要分成多行書寫,name:不需要"",不區(qū)分大小寫,最終全小寫保存,支持的字符如下表:type:準(zhǔn)確描述name對(duì)應(yīng)的值類型,@type可以省略,省略則根據(jù)value確定默認(rèn)類型,type在轉(zhuǎn)換成二進(jìn)制時(shí)會(huì)被記錄,以便在取值時(shí)判斷類型是否匹配,提升錯(cuò)誤可定位行,類型定義如下1248124811表無無注:列表是在原有數(shù)據(jù)類型基礎(chǔ)上增加的信A.3.2聲明?_version:表示odroot的版本,v+數(shù)字表示,例如ubios_od_root_v1表?root_name:字符串,對(duì)象根名稱,規(guī)則與na?max_od_number:無符號(hào)整數(shù),可省略,表示當(dāng)前odroot中最多可包含的對(duì)象數(shù)量,實(shí)際數(shù)量根據(jù)實(shí)際內(nèi)容計(jì)算得到,如果省略則值為實(shí)際數(shù)量,如果未省略且值小于實(shí)際數(shù)量,則odtools需要報(bào)錯(cuò)只能有一個(gè)ods文件包含此內(nèi)容,其他odsName0413444校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累加,結(jié)果為0a)有效數(shù)據(jù)指從本表header開始,大小為TotalSize-26a)odtools生成odfile時(shí),odfile的地址為基于odroot起始地址的偏移,程序加載odroot和ob)ODFiles[Count]中有?_version:與odroot定義相同,表示odfile的版本?object_name:字符串,對(duì)象名稱,規(guī)則與name相同?total_size:無符號(hào)整數(shù),可省略,表示當(dāng)前對(duì)象文件占用的總大),小根據(jù)實(shí)際內(nèi)容計(jì)算獲得,如果省略則值為實(shí)際大小,如果未省略且值小于實(shí)際大小,則odtools需要報(bào)錯(cuò)Name041344校驗(yàn)和填充,填充后使有效數(shù)據(jù)以4字節(jié)不進(jìn)位累a)有效數(shù)據(jù)指從本表header開始,大小為Totalb)整個(gè)odfile大小可能不是4字節(jié)倍數(shù),計(jì)算Checksum解釋:聲明一個(gè)文件引用,在當(dāng)前位置引進(jìn)一個(gè)odsfile。不同的對(duì)象描述可以寫在?path/file.ods:對(duì)象文件路徑和名稱,基于當(dāng)前位置的相對(duì)路徑@inheritname@struct[num-繼承首個(gè)值,并修改其中名為name2的值,等價(jià)于第二個(gè)值為{name1=value1,name2=value3}-支持同時(shí)修改多個(gè)成員的值,通過,或換行隔開,與正常的多值書寫格式一致-支持修改指定成員的下級(jí)成員的值,多個(gè)name用.連接指定,如name__b=value-如果只有{},表示復(fù)制第一個(gè)值不做修改?{name3=val?a:字母、下劃線、數(shù)字組成的字符串,長度無限制,不支持參數(shù)5a)宏的替代只作用于value內(nèi),應(yīng)避免a與任何非value字符重疊,建議a中字母以大寫編寫,而非vb)宏只作用于宏定義之后的內(nèi)容,不可以跨文件生效,即當(dāng)被引用文件中包含宏定義引用文件,不影響引用它的文件,但是引用文件處的宏定效,應(yīng)當(dāng)聲明在odroot文件中或通?path/file.h:第三方文件路徑和名稱,基于當(dāng)前位置的相對(duì)路徑?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年公路水運(yùn)工程《安全生產(chǎn)管理》真題及答案
- 農(nóng)產(chǎn)品采購與知識(shí)產(chǎn)權(quán)合同
- 中軟國際信息安全題庫及答案解析
- 編輯從業(yè)資格等級(jí)考試及答案解析
- 2026年環(huán)境鑒定合同
- 2026年洗衣加盟合同
- 2026年社會(huì)心理學(xué)與社會(huì)問題題
- 2026年電子商務(wù)交易流程實(shí)操題庫
- 2026年CIIA國際投資分析專業(yè)模擬考試題集
- 養(yǎng)老機(jī)構(gòu)服務(wù)規(guī)范與禮儀(標(biāo)準(zhǔn)版)
- 征兵言語測(cè)試真題及答案
- 2025至2030脫氧穿心蓮內(nèi)酯行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 案例-華為從戰(zhàn)略到執(zhí)行的SDBE領(lǐng)先模型
- 江蘇省無錫市2025屆高三上學(xué)期期末教學(xué)質(zhì)量調(diào)研測(cè)試-數(shù)學(xué)試卷(含答案)
- 經(jīng)典名著《紅樓夢(mèng)》閱讀任務(wù)單
- 古田會(huì)議學(xué)習(xí)課件
- 高寒地區(qū)建筑工程冬季施工技術(shù)規(guī)范研究
- 電流保護(hù)原理課件
- DBJT15-212-2021 智慧排水建設(shè)技術(shù)規(guī)范
- 民俗學(xué)課件萬建中
- 能源與動(dòng)力工程專業(yè)培養(yǎng)目標(biāo)合理性評(píng)價(jià)分析報(bào)告
評(píng)論
0/150
提交評(píng)論