付雪飛,張?zhí)?,路婷?/p>
(株洲南車時代電氣股份有限公司,株洲412003)
德州儀器推出具有無與倫比連接選項與定點和浮點功能的全新處理器OMAP-L138,同時這款產(chǎn)品也是業(yè)界功耗最低的浮點數(shù)字信號處理器,可充分滿足高能效、連通性設(shè)計對高集成度外設(shè)、更低熱量耗散以及更長電池使用壽命的需求。
該器件結(jié)合了一系列獨特的應(yīng)用優(yōu)化特性和外設(shè),能顯著降低工業(yè)、通信、醫(yī)療診斷和音頻等多種產(chǎn)品的總體系統(tǒng)成本。
此芯片,可通過動態(tài)電壓與頻率縮放及多種省電模式管理片上電源。若配合電源管理軟件和配套模擬解決方案,開發(fā)人員無需成為節(jié)能技術(shù)專家即可優(yōu)化系統(tǒng),提高性能,降低功耗。
OMAPL138雙CPU內(nèi)核高性能處理器是由德州儀器公司生產(chǎn)的雙CPU處理器,內(nèi)部包含DSP和ARM兩個CPU內(nèi)核。本文介紹了一種基于Flash實現(xiàn)雙核啟動,并分別加載ARM和DSP程序的方法,介紹了OMAPL138雙CPU核的自啟動和開發(fā)方法,對于OMAPL138的應(yīng)用有非常強的參考價值。
本文介紹ARM啟動后,喚醒DSP自啟動系統(tǒng),這種自啟動系統(tǒng)需編寫bootloader程序、應(yīng)用程序段,其中ARM包含bootloader、應(yīng)用程序,DSP包含應(yīng)用程序。
所有程序的代碼放置在外部NOR Flash內(nèi),外部Flash與雙核CPU通過EMIF總線連接。程序放置位置的中的地址映射如圖1所示,其中,bootloader.bin通過雙核CPU出廠自帶的搬運程序到共享shareRAM中,shareRAM起始地址為0x80000000,出廠自帶的搬運程序不能搬運超過16 KB的二進制文件;ARM應(yīng)用程序arm.bin放在DDR2,起始地址為0xC0000000和DSP應(yīng)用程序代碼段放在L2,起始地址為0x11800000,最后,ARM中斷向量表存放在ARM_LOCAL_RAM地址空間,位于0xFFFF0000處。
圖1 內(nèi)存映射圖
首先是所有目標(biāo)碼(*.bin)寫入外部NORFlash的程序?qū)崿F(xiàn)。寫入外部NORFlash程序是由用戶獨立編寫,運行在ccs5.4中的一個額外的仿真程序,用于將應(yīng)用程序?qū)懭氲酵獠縉ORFlash中,當(dāng)然寫入地址除bootloader.bin必須在NOR Flash頂端外[1],其他*bin程序都可以由用戶自由定義。
其次bootloader只完成一項工作,就是將ARM程序、DSP程序、中斷向量表搬移到分別對應(yīng)的空間中去。
之后ARM程序按順序完成的以下事件:
①將ARM設(shè)置為super mode,且初始化對應(yīng)的寄存器和堆棧;
②雙核CPU內(nèi)部寄存器的初始化;
③由ARM通過控制字Wake Up DSP;
④在ARM程序中調(diào)用跳轉(zhuǎn)到相應(yīng)需執(zhí)行的程序地址。
最后DPS程序被喚醒,則執(zhí)行應(yīng)用程序。
Bootloader為自編寫的一段代碼,主要是用來搬運較大的文件,因為OMAP-L138芯片內(nèi)部自帶的load程序只能搬運不能超過16K大小的BIN文件,如果用戶想使用大于這個文件大小的應(yīng)用程序,則需要自己編寫搬運程序,也就是此處介紹的bootloader程序[2]。
Bootloader編寫原則上是簡單,精煉,只需完成一個搬運功能即可,其他復(fù)雜功能都不必實現(xiàn),像芯片初始化等可由后續(xù)應(yīng)用程序去完成。
首先必須編寫一個NorFlashWrite的程序,此程序應(yīng)能初始化OMAP-L138芯片,并能獨立運行,并能操作外部NorFlash。
將bootloader代碼、ARM和DSP對應(yīng)的*.bin二進制文件讀取到電腦內(nèi)存空間且檢驗文件正確,使用NorFlashWrite(用戶自己編寫的寫入NOR Flash的小程序,根據(jù)用戶硬件連接不同,寫入地址和方式也相應(yīng)會改變)將*.bin寫入到NOR Flash對應(yīng)地址內(nèi)[3]。
Bootloader.bin根據(jù)手冊要求需放置在NorFlash頂端位置處,具體的寫入由NorFlashWrite程序完成。
2.3.1 Bootloader載入、執(zhí)行
首先,OMAP-L138芯片被上電,芯片自動執(zhí)行內(nèi)部的loader程序,根據(jù)芯片外部跳線,芯片會自動選擇外部程序載入方式,本文為NorFlash方式。芯片出廠自帶的自啟動程序會搬運NOR Flash頂端地址(0x60000000)的16KB大小的二進制代碼到雙核CPU的共享內(nèi)存的頂端地址處(0x80000000),雙核CPU搬運完成后,雙核系統(tǒng)強制將程序運行PC指針指向0x80000004處運行此處地址的指令。
2.3.2 ARM應(yīng)用程序執(zhí)行
首先,ARM的初始化函數(shù)會更改寄存器CPSR的模式、中斷控制位,使ARM核處于super mode下,如果ARM不處于super mode下,很多ARM硬件資源都不能使用,而且不處于super mode下很多寄存器也不能訪問;之后,關(guān)閉所有中斷允許寄存器,將super mode的堆棧初始化[4];在super mode堆棧的所有初始化結(jié)束后,雙核內(nèi)部的寄存器也需初始化,最后通過wake up命令來喚醒DSP即可,至此ARM基本工作已經(jīng)完成。
2.3.3 DSP應(yīng)用程序執(zhí)行
DSP應(yīng)用程序在ARM對其喚醒時已經(jīng)開始執(zhí)行了,ARM需將wake up DSP的地址寫入到寄存器HOST1CFG中,此地址為DSP即將運行程序的頂端地址。
當(dāng)DSP應(yīng)用程序被執(zhí)行時,OMAP-L138雙核的啟動已經(jīng)完成,ARM和DSP核可以分別運行,它們之間可通過配置系統(tǒng)寄存器CHIPSIG中的SYSCFG_CHIPINTx向DSP發(fā)送系統(tǒng)中斷實現(xiàn)雙核通信,或通過ShareRAM等方式交換數(shù)據(jù)。
本文講解了一種基于NorFlash自啟動開發(fā),實現(xiàn)OMAPL138中ARM和DSP的啟動方案,方案簡易,代碼量少,易于實際應(yīng)用,并詳細(xì)分析了OMAPL138雙核CPU系統(tǒng)的自啟動方式和實現(xiàn)方案,對于OMAPL138雙核CPU系統(tǒng)實際運用有很強的參考價值。