版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C6678多核程序?qū)懭胗不⒅饕獌?nèi)容、1 .可執(zhí)行文件創(chuàng)建過程、1 .可執(zhí)行文件創(chuàng)建過程和一個Demo程序的生命周期通常從c語言程序開始。 這種形式的制作是最方便的。 為了在系統(tǒng)上運(yùn)行Demo程序,將每個語句轉(zhuǎn)換為低級機(jī)器指令,以稱為可執(zhí)行目標(biāo)文件的形式打包,加載到存儲器中,然后在在文本編輯器中編輯的源程序可以執(zhí)行的目標(biāo)文件需要四個步驟:“預(yù)處理”、“編譯器”、“裝配”和“鏈接”。1 .可執(zhí)行文件生成過程、預(yù)處理階段:預(yù)處理器根據(jù)以字符#開始的指令,修改c源程序(如main.c的第一行#include ),將系統(tǒng)文件stdio.h的內(nèi)容讀入預(yù)處理器,然后編程以CCSv5開發(fā)平臺編輯生成為基礎(chǔ),
2、帶有演示程序Demo。1 .可執(zhí)行文件生成過程、編譯階段:編譯器將預(yù)處理器輸出的文件翻譯為匯編語言程序(.asm )。 匯編語言程序的每個語句都以標(biāo)準(zhǔn)文本格式準(zhǔn)確描述低級機(jī)器語言指令(參見文獻(xiàn)2 )。 匯編語言為不同高級語言的不同編譯器提供統(tǒng)一的輸出語言。 為了提高程序的運(yùn)行效率,程序員可以直接編寫匯編器文件(例如Demo程序的sum.asm )。1 .可執(zhí)行文件生成過程、匯編階段:匯編程序?qū)⑤斎氲膮R編文本(.asm )逐條翻譯為二進(jìn)制機(jī)器語言指令,并將這些指令包括在可重定位目標(biāo)程序(relocatable object program )中保存在每個目標(biāo)文件中的此目標(biāo)文件是二進(jìn)制文件,其字節(jié)
3、碼是機(jī)器語言指令而不是字符,在文本編輯器中打開. obj文件時會出現(xiàn)亂碼.1 .可執(zhí)行文件生成過程、鏈接階段:通常是整個程序鏈接器按照. cmd文件中的說明將這些文件合并到可在系統(tǒng)上運(yùn)行的可執(zhí)行文件中,在上一個過程中將生成相應(yīng)的重定目標(biāo)。1 .可執(zhí)行文件生成過程、鏈接階段:編譯器和匯編器生成從地址0開始的代碼和數(shù)據(jù)區(qū)。 鏈接器將用符號定義表示對程序的外部文件的變量、對函數(shù)的參照的各符號定義與存儲位置(.cmd )關(guān)聯(lián)起來,修改符號的參照以指向?qū)⒄辗柼鎿Q為參照變量、函數(shù)的特定的存儲器地址的存儲器位置,由此對這些詳細(xì)情況進(jìn)行重新定義。 最后,鏈接器將每個重新定位的代碼和數(shù)據(jù)節(jié)配置為完整的可執(zhí)行
4、目標(biāo)文件,并將其加載到處理程序中以便執(zhí)行。 (鏈接器實(shí)現(xiàn)的詳細(xì)情況參照專利文獻(xiàn)1的第7章鏈接)、2 .多核焙燒文件生成原理、2 .多核焙燒文件生成原理、多核編程,各核心源文件分別與對應(yīng)的. out文件編譯、組裝、鏈接, 該文件不直接寫入外部Flash,該文件經(jīng)由CCSv5帶有的Flash寫入工序(my_SPI_modify )寫入外部Flash,然后電源接通系統(tǒng)完成自舉,程序正常運(yùn)行。 2 .多核寫入文件生成原理、鏡像文件是用戶寫入外部Flash的所有數(shù)據(jù)文件,是引導(dǎo)殘奧參數(shù)表(文件之前)和應(yīng)用程序路由表數(shù)據(jù)(文件之后)的復(fù)合數(shù)據(jù)文件。 單核和多核Boot殘奧儀表的格式相同,區(qū)別在于后面的路由
5、表數(shù)據(jù)。 2 .多核燒制文件生成原理、Boot殘奧表占8字(32Bytes ),位于鏡像文件的開頭。 不同字段的含義不同,用于指導(dǎo)啟動過程。下表說明了SPI啟動模式下關(guān)殘奧表的配置寄存器。 由于SPI boot是寄存器的直接讀寫,因此在配置期間不涉及EDMA寄存器的配置(因此忽略前12個字段)。 這些殘奧儀表部分可以通過讀取管腳配置來嵌入(參見文獻(xiàn)7和p.27-33 ),或者可以由用戶定制和修改。 注意:無論是引腳配置還是殘奧儀表的表述都是為了生成boot殘奧儀表。 由于我們的系統(tǒng)由DSP外部的13個配置管腳配置Boot殘奧儀表,因此. dat文件中的Boot殘奧儀表將被忽略。 2、多核燒制文
6、件的生成原理、單核路由表:路由表是這樣的分組,在該分組中,應(yīng)用的所有代碼和數(shù)據(jù)在片上分段存儲,并且分組的前4B是核心0程序的main ()函數(shù)的條目然后由多個數(shù)據(jù)段組成,每個段的前4B在所有數(shù)據(jù)段結(jié)束時,以4字節(jié)的0作為路由表的結(jié)束標(biāo)志。 多核路由表:將每個從內(nèi)核的代碼數(shù)據(jù)段和條目地址值以上述單核路由表的格式跟在core0路由表之后,其中條目地址值的地址是每個內(nèi)核的boot _ magic 2 .多核寫入文件的生成原理、BOOT ROM的代碼完成Bootloader初始化(PLL、CPU時鐘、啟動方式等)后,core的L2 RAM高速緩存的最后0 xd23f字長的代碼繼續(xù)初始化。 此代碼用于保
7、存Boot配置信息并指導(dǎo)后續(xù)的Boot,2 .多核燒制文件生成原理、BOOT_MAGIC_ADDRESS地址是固定在每個core塊中的內(nèi)存。 如上表所示,BOOT_MAGIC_ADDRESS地址是ROM移動到RAM信息中的最后一個字。 此字存儲了初始化各個core后需要跳轉(zhuǎn)的c程序項(xiàng)地址_c_int00 ()。 根據(jù)c66x內(nèi)存的修訂版設(shè)置修訂,不同core的BOOT_MAGIC_ADDRESS位于此core本地L2 RAM的最后一個word中。 多核DSP為了區(qū)分全局地址中不同內(nèi)核的RAM地址,各內(nèi)核的Boot Magic地址是0 x1x87fffc(x是內(nèi)核編號)。 2 .多核寫入文件生成
8、原理、工具鏈:將CCS生成的. out文件轉(zhuǎn)換為引導(dǎo)加載器能夠“理解”的格式,是c66x啟動的重要一步。 c66x系列工具鏈比傳統(tǒng)的DSP引導(dǎo)更加復(fù)雜和多樣化。 文件轉(zhuǎn)換格式也多樣化了。 以. dat文件格式為例,要生成所需的鏡像文件,需要以下工具鏈:2 .多核寫入文件生成原理、工具鏈: hex6x文件必須與. rmd文件結(jié)合使用,后者描述boot殘奧表模式、ROM寬度、大小側(cè)模式等信息。 由此,可以得到包括大部分內(nèi)容信息的8個核心的. btbl文件,通過2個小工具的變換能夠得到有效的數(shù)據(jù)信息。 由于此時的. ccs文件只包含各段的內(nèi)容,不包含Boot殘奧儀表的內(nèi)容,因此需要解析一定格式的殘奧
9、儀表配置信息,作為Boot殘奧儀表頭添加到. ccs文件中,使其成為包含殘奧儀表配置頭的. ccs文件。 最后,ROM bootloader僅識別大端模式數(shù)據(jù),需要大小端的轉(zhuǎn)換。 現(xiàn)在已成功生成ROM Bootloader可識別的完整多核鏡像文件。3 .多核引導(dǎo)原理、3 .多核引導(dǎo)原理、C66x芯片改進(jìn)了典型的C6000系列芯片,使得用戶不需要在從外部Flash開始的1K空間中寫入二次引導(dǎo)裝載器。 在C66x DSP內(nèi)部固化的ROM存儲了引導(dǎo)代碼(ROM引導(dǎo)加載器)。 每次啟動DSP時,代碼都會自動讀取并運(yùn)行。 此代碼是硬化后不能變更的,通過引腳配置方式初始化核心(例如PLL等),起到完成不同
10、模式的Boot處理(將程序和代碼輸送到指定的內(nèi)部RAM )的作用。 3 .多核Boot的原理,CPU執(zhí)行Boot ROM的代碼,將外部閃存的程序和數(shù)據(jù)移動到內(nèi)部RAM。 然后,當(dāng)core0開始初始化外圍設(shè)備時,其它c(diǎn)ore將執(zhí)行相關(guān)聯(lián)的代碼映射IPC中斷,設(shè)置適當(dāng)?shù)募拇嫫鳎M(jìn)入空閑狀態(tài),并且core0的互進(jìn)程通信(IPC )中斷core0完成初始化后,將IPC中斷發(fā)送到其他core。 其他的core一收到中斷就會啟動執(zhí)行代碼。 也就是說,其他核心在core0命令下執(zhí)行第一個語句代碼。 3 .多核Boot的原理,酷睿0在SPI啟動中發(fā)揮著重要的作用。 作為主核,核0負(fù)責(zé)鏡像的移動、BOOT_MA
11、GIC_ADDRESS地址值的寫入、發(fā)出IPC中斷觸發(fā)的其他核啟動等多項(xiàng)工作。 其中,移動多核鏡像的任務(wù)由DSP ROM Bootloader完成,其馀兩項(xiàng)任務(wù)需要用戶定義的操作。 另外,本文附帶的工具鏈由于不具有將各內(nèi)核的條目地址寫入到相應(yīng)的BOOT_MAGIC_ADDRESS的功能,因此沒有添加上述鏡像文件格式中用紅色表示的部分,這是因?yàn)椴恢莱绦虻臈l目地址為了解決該問題,在生成1.out文件之后,參考. map文件獲取每個子核心程序的條目地址,并且使用主核心的main ()函數(shù)將該地址分別寫入與每個子檢查對應(yīng)的BOOT_MAGIC_ADDRESS 2 .獲取次核的入口地址后,修改工具鏈,
12、將其作為數(shù)據(jù)段寫入鏡像文件(上述鏡像文件)。 3 .多核引導(dǎo)的原理是,如果多核DSP在同一項(xiàng)目集中分別編譯,則每個核內(nèi)存分配完全相同。 酷睿0可通過讀取其自己的核的BOOT_MAGIC_ADDRESS地址(0 x1087fffc )下的值來獲得另一個核的BOOT_MAGIC_ADDRESS地址。 然而,如果各核心是獨(dú)立編譯的項(xiàng)目,并且各變量內(nèi)存映射關(guān)系不相同,則無法從core0的BOOT_MAGIC_ADDRESS地址值來推斷其他核心的相應(yīng)地址。 此時,只能預(yù)先記錄每個內(nèi)核的BOOT_MAGIC_ADDRESS地址值,并且寫入內(nèi)核0的用戶初始化代碼。 3 .多核引導(dǎo)原理,在上述所有操作完成后,
13、core0需要對每個核的IPCGRx寄存器進(jìn)行寫入中斷,喚醒其他核的正常工作狀態(tài)。 IPCGRx寄存器的31-4位是IPC中斷源索引,支持多達(dá)28個中斷源,并且可以全部設(shè)置為0的位3-1是保留位,可以任意指派值。 因此,僅需要對最低有效位指派1,就可以完成對另一個核心IPC中斷的觸發(fā)。 (參照文獻(xiàn)7.p.80-82 )、3 .多核引導(dǎo)的原理,到目前為止基于SPI多核啟動的過程全部結(jié)束,多核DSP正常運(yùn)行。 請注意,每個核心的IPC中斷生成寄存器都有固定的內(nèi)存映射地址。 4 .多核燒成文件生成過程、4 .多核燒成文件生成過程、在core0的main函數(shù)中將各副核入口地址寫入對應(yīng)的BOOT_MAG
14、IC_ADDRESS,必須追加引起IPC中斷的邏輯,如圖所示,否則多核不能正常boot voidmulticoreboot () int * pbootmagicaddcore 0; int *IpcGr0; 英特爾; 英特爾酷睿id=0; 酷睿標(biāo)識=平臺_獲得_酷睿標(biāo)識(); 核心id=0pbootmagicaddcore0=(int * )0x 1087 fffc。/*酷睿0幻想地址*/* pbootmagicaddcore0=0x 10843994; /*core0的_c_int00函數(shù)條目地址*/*在此處寫入每個子核心的條目地址*,在此處寫入core1的_c_int00函數(shù)條目地址/*
15、 (pbootmagicaddcore0x 01 re/* core 0傳輸IPC中斷*/) for(i=1; I酷睿_數(shù)字_ 6678; (I )/酷睿0增強(qiáng)功能* (IP CG r0I )=(* (IP CG r0I ) )|0 x 0000001。 您可以在轉(zhuǎn)換工具鏈SPI _ boot _ suit _ v2.3.1_ release2_ ledtestprj1. 6678 src中找到原始代碼。 4 .多核燒成文件生成過程、四核燒成文件的生成工具鏈選擇: SPI _ boot _ suit _ v2.3.1_ release1_ utilities1. 6678將要處理的4個. ou
16、t文件粘貼到此文件夾下,文件夾此文件夾下的批處理文件:單擊spiboot_multi_4cores.bat將生成鏡像文件spirom_le.dat并燒制寫入文件。4 .多核燒成文件生成過程、雙核燒成文件的生成修正批處理文件spiboot_multi_4cores.bat的內(nèi)容如下。 刪除多馀的hex6x simple2.rmd、hex6x simple3.rmd和第五行的simple2.btbl和simple3.btbl,并將修改后的語句保存為名為spiboot_multi_2cores的文件。 單擊此批處理文件將為兩個核心程序生成. dat代碼。4 .多核焙燒文件生成過程,_c_int00入口地址的獲取,在編譯鏈接后項(xiàng)目下面有一個文件夾: Debug。 此文件夾下有一個以項(xiàng)目名稱命名的. map文件,該文件的開頭顯示_c_int00的入口地址。 即,在執(zhí)行main函數(shù)之前由_c_int00啟動的初始化過程(如全局變量的初始值、局部變量的堆疊等),之后執(zhí)行main函數(shù)。 5 .多核燒成操作過程,5 .多核燒成操作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版品德與社會五年級上冊全冊教案
- 開發(fā)耐低溫材料保障極地工程安全
- 現(xiàn)代工程圖學(xué)習(xí)題集答案-第三版-主編楊裕根第3章
- 高一化學(xué)達(dá)標(biāo)訓(xùn)練:第一單元化學(xué)反應(yīng)速率與反應(yīng)限度
- 2024屆西安市航空六一八中學(xué)高考化學(xué)四模試卷含解析
- 2024高中語文第一單元第2課裝在套子里的人提升訓(xùn)練含解析新人教版必修5
- 2024高考地理一輪復(fù)習(xí)第二章地球上的大氣第三講氣壓帶和風(fēng)帶學(xué)案
- 2024高考化學(xué)一輪復(fù)習(xí)第九章有機(jī)化合物第一講甲烷乙烯苯規(guī)范演練含解析新人教版
- 貸款違約調(diào)解協(xié)議書
- 大數(shù)據(jù)時代語言學(xué)
- 中華人民共和國能源法
- 礦山智能化監(jiān)控系統(tǒng)
- 五年級口算題卡每天100題帶答案
- Unit 3 Family Matters Developing Ideas Writing about a Family Memory 教學(xué)設(shè)計-2024-2025學(xué)年高一上學(xué)期英語外研版(2019)必修第一冊
- 工程量清單及招標(biāo)控制價編制工作方案
- 商業(yè)承兌匯票貼現(xiàn)協(xié)議
- 普工附有答案
- 《烏魯木齊市國土空間總體規(guī)劃(2021-2035年)》
- 2024年中國租賃業(yè)調(diào)查報告-畢馬威-202407
- 中俄東線天然氣管道工程(永清-上海)環(huán)境影響報告書
- 2024年長沙市中考數(shù)學(xué)真題試卷及答案
評論
0/150
提交評論