<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用雙MicroBlaze監控汽車(chē)應用

用雙MicroBlaze監控汽車(chē)應用

作者: 時(shí)間:2012-02-10 來(lái)源:網(wǎng)絡(luò ) 收藏

考慮到實(shí)時(shí)操作系統(RTOS)具有眾多庫函數,.text和.data段對BRAM顯得過(guò)大,因此,我們將這些函數存放在外部存儲器中。在多處理器系統中,如果多個(gè)處理器需要對相同存儲區域尋址,這樣做會(huì )導致問(wèn)題復雜化。因此,開(kāi)發(fā)人員必須手動(dòng)調整存儲分段。如前文所述,兩個(gè)處理器只緩存自己專(zhuān)用的存儲區,并共享對代碼段和數據段之外定義區域的訪(fǎng)問(wèn)。通過(guò)PLB請求XPS Mutex,可對該共享存儲區域進(jìn)行同步訪(fǎng)問(wèn),從而實(shí)現在兩個(gè)MicroBlaze之間交換數據。為了在主/從或者流水線(xiàn)處理器系統中實(shí)現直接通信和同步,我們采用了FSL。這樣可以避免在訪(fǎng)問(wèn)共享存儲器時(shí),因多次存儲器總線(xiàn)分配而導致更高的訪(fǎng)問(wèn)延遲。

我們首先使用SDK鏈接腳本生成程序創(chuàng )建鏈接腳本。該腳本為文本文件,由三段組成,定義了堆和棧的大小、存儲區以及每個(gè)段的地址。下段代碼描述了 系統Microblaze_0的鏈接腳本。我們調整了代碼段和數據段存儲區的大小,并增加了一個(gè)用于共享存儲區的新段。我們也相應調整了microblaze_1的鏈接腳本,將代碼段和數據段的起始存儲區地址設定為0x8A000000,并為共享存儲器分配了一個(gè)相等的段。


/*定義microblaze_0的堆和棧大小*/

_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE :

0x1000;

_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE :

0x1000;

/*定義系統中用于microblaze_0的存儲器*/

MEMORY

{

ilmb_cntlr_dlmb_cntlr :

ORIGIN = 0x00000050, LENGTH = 0x00003FB0

/*重新設定用于代碼段和數據段的存儲器大小*/

DDR2_SDRAM_MPMC_BASEADDR :

ORIGIN = 0x88000000, LENGTH = 0x02000000

/*為共享存儲器新增一個(gè)分段*/

DDR2_SDRAM_SHARED_BASEADDR :

ORIGIN = 0x8C000000, LENGTH = 0x04000000

}

[...]

/*定義各段和它們在存儲器中映射的位置*/

SECTIONS

{

[...]

sharedmem : {

__sharedmem_start = .;

*(sharedmem)

__sharedmem_end = .;

} > DDR2_SDRAM_SHARED_BASEADDR

[...]

}

MPSOC的下載和調試選項

SDK環(huán)境為下載、運行和調試多處理器系統的軟件提供了兩種方法。一方面,基于Eclipse的工具能夠為軟件工程提供下載和ST.DIO狀態(tài)的配置;另一方面,可以使用Xilinx微處理器調試(XMD)控制臺來(lái)處理這些任務(wù)。

另外,SDK還可以使用位流和.bmm文件重配置FPGA。根據鏈接腳本中定義的段,FPGA編程對話(huà)框(Program FPGA Dialog)可以隨意將整個(gè)軟件段直接傳輸到與特定處理器相關(guān)聯(lián)的BRAM中。如上所述,由于.elf文件會(huì )因使用庫函數的應用而增大,因此,在多處理器系統中,我們一般會(huì )將這些段存放在外部存儲器中。在這種情況下,可以選擇FPGA編程對話(huà)框軟件配置設置中的bootloop,來(lái)提供后續的軟件下載。

SDK環(huán)境

SDK在工程瀏覽器(Project Explorer)窗口中,提供了包括軟件工程選擇的運行與調試(Run Debug)配置,以及在Run菜單中打開(kāi)“Run configurations…”。系統中每個(gè)處理器都有相關(guān)聯(lián)的“Run Debug”配置。在第一個(gè)例子中,選擇配置對話(huà)框主標簽中的工程.elf文件。在“Device Initialization”標簽中將“Reset Processor Only”選為復位方式,以避免在復位時(shí)將整個(gè)系統重置。

另外,通過(guò)配置ST.DIO Connection標簽,可以讓ST.DIO直接打印到SDK控制臺。將單處理器的“Run Debug”配置捆.綁在一起,它們就可以同時(shí)運行各自的軟件。最后,SDK基于Eclipse的調試窗口可以讓開(kāi)發(fā)人員插入斷點(diǎn),并提供變量賦值和存儲分配方面的信息。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>