付雪飛 張滔 路婷婷
【摘 要】論文介紹NorFlash啟動雙核系統的辦法,詳細介紹啟動過程中需要的工作流程,包括程序的存放、燒寫、載入、跳轉、執行等。
【Abstract】The paper introduces the methods of NorFlash to start dinuclear system, and introduce the working process needed during startupm, including the programme storage, programming, loading, jumping and executing and so on.
【關鍵詞】雙核;啟動;NorFlash
【Keywords】dual core; startup; NorFlash
【中圖分類號】TP333;TP274.2 【文獻標志碼】A 【文章編號】1673-1069(2018)06-0185-02
1 雙核啟動介紹
1.1 OMAP-L138介紹
德州儀器推出具有無與倫比連接選項與定點和浮點功能的全新處理器 OMAP-L138,同時這款產品也是業界功耗最低的浮點數字信號處理器,可充分滿足高能效、連通性設計對高集成度外設、更低熱量耗散以及更長電池使用壽命的需求。
該器件結合了一系列獨特的應用優化特性和外設,能顯著降低工業、通信、醫療診斷和音頻等多種產品的總體系統成本。
此芯片,可通過動態電壓與頻率縮放及多種省電模式管理片上電源。若配合電源管理軟件和配套模擬解決方案,開發人員無需成為節能技術專家即可優化系統,提高性能,降低功耗。
OMAPL138雙CPU內核高性能處理器是由德州儀器公司生產的雙CPU處理器,內部包含DSP和ARM兩個CPU內核。本文介紹了一種基于Flash實現雙核啟動,并分別加載ARM和DSP程序的方法,介紹了OMAPL138雙CPU核的自啟動和開發方法,對于OMAPL138的應用有非常強的參考價值。
1.2 OMAP-L138程序映射介紹
本文介紹ARM啟動后,喚醒DSP自啟動系統,這種自啟動系統需編寫bootloader程序、應用程序段,其中ARM包含bootloader、應用程序,DSP包含應用程序。
所有程序的代碼放置在外部NOR Flash內,外部Flash與雙核CPU通過EMIF總線連接。程序放置位置的中的地址映射如圖1所示,其中,bootloader.bin通過雙核CPU出廠自帶的搬運程序到共享shareRAM中,shareRAM起始地址為0x80000000,出廠自帶的搬運程序不能搬運超過16 KB的二進制文件;ARM應用程序arm.bin放在DDR2,起始地址為0xC0000000和DSP應用程序代碼段放在L2,起始地址為0x11800000,最后,ARM中斷向量表存放在ARM_LOCAL_RAM地址空間,位于0xFFFF0000處。
1.3 OMAP-L138程序啟動流程介紹
首先是所有目標碼(*.bin)寫入外部NORFlash的程序實現。寫入外部NORFlash程序是由用戶獨立編寫,運行在ccs5.4中的一個額外的仿真程序,用于將應用程序寫入到外部NORFlash中,當然寫入地址除bootloader.bin必須在NOR Flash頂端外[1],其他*bin程序都可以由用戶自由定義。
其次bootloader只完成一項工作,就是將ARM程序、DSP程序、中斷向量表搬移到分別對應的空間中去。
之后ARM程序按順序完成的以下事件:
①將ARM設置為super mode,且初始化對應的寄存器和堆棧;
②雙核CPU內部寄存器的初始化;
③由ARM通過控制字Wake Up DSP;
④在ARM程序中調用跳轉到相應需執行的程序地址。
最后DPS程序被喚醒,則執行應用程序。
2 雙核程序啟動詳細介紹
2.1 bootloader介紹
Bootloader為自編寫的一段代碼,主要是用來搬運較大的文件,因為OMAP-L138芯片內部自帶的load程序只能搬運不能超過16K大小的BIN文件,如果用戶想使用大于這個文件大小的應用程序,則需要自己編寫搬運程序,也就是此處介紹的bootloader程序[2]。
Bootloader編寫原則上是簡單,精煉,只需完成一個搬運功能即可,其他復雜功能都不必實現,像芯片初始化等可由后續應用程序去完成。
2.2 將bootloader代碼、ARM和DSP應用程序寫入Nor Flash中
首先必須編寫一個NorFlashWrite的程序,此程序應能初始化OMAP-L138芯片,并能獨立運行,并能操作外部NorFlash。
將bootloader代碼、ARM和DSP對應的*.bin二進制文件讀取到電腦內存空間且檢驗文件正確,使用NorFlashWrite(用戶自己編寫的寫入NOR Flash的小程序,根據用戶硬件連接不同,寫入地址和方式也相應會改變)將*.bin寫入到NOR Flash對應地址內[3]。
Bootloader.bin根據手冊要求需放置在NorFlash頂端位置處,具體的寫入由NorFlashWrite程序完成。
2.3 執行流程
2.3.1 Bootloader載入、執行
首先,OMAP-L138芯片被上電,芯片自動執行內部的loader程序,根據芯片外部跳線,芯片會自動選擇外部程序載入方式,本文為NorFlash方式。芯片出廠自帶的自啟動程序會搬運NOR Flash頂端地址(0x60000000)的16KB大小的二進制代碼到雙核CPU的共享內存的頂端地址處(0x80000000),雙核CPU搬運完成后,雙核系統強制將程序運行PC指針指向0x80000004處運行此處地址的指令。
2.3.2 ARM應用程序執行
首先,ARM的初始化函數會更改寄存器CPSR的模式、中斷控制位,使ARM核處于super mode下,如果ARM不處于super mode下,很多ARM硬件資源都不能使用,而且不處于super mode下很多寄存器也不能訪問;之后,關閉所有中斷允許寄存器,將super mode的堆棧初始化[4];在super mode堆棧的所有初始化結束后,雙核內部的寄存器也需初始化,最后通過wake up命令來喚醒DSP即可,至此ARM基本工作已經完成。
2.3.3 DSP應用程序執行
DSP應用程序在ARM對其喚醒時已經開始執行了,ARM需將wake up DSP的地址寫入到寄存器HOST1CFG中,此地址為DSP即將運行程序的頂端地址。
2.4 執行結束
當DSP應用程序被執行時,OMAP-L138雙核的啟動已經完成,ARM和DSP核可以分別運行,它們之間可通過配置系統寄存器CHIPSIG中的SYSCFG_CHIPINTx向DSP發送系統中斷實現雙核通信,或通過ShareRAM等方式交換數據。
3 結語
本文講解了一種基于NorFlash自啟動開發,實現OMAPL138中ARM和DSP的啟動方案,方案簡易,代碼量少,易于實際應用,并詳細分析了OMAPL138雙核CPU系統的自啟動方式和實現方案,對于OMAPL138雙核CPU系統實際運用有很強的參考價值。
【參考文獻】
【1】劉遠峰,陳志華.一種新的基于TMS320C6000 DSP的Flash引導自啟動方法[J].電視技術,2011,21(35):54-57.
【2】王潔,蘇東林,姜鐵華.基于TMS320C6000系列DSP的二次Bootl oader研究[J].電子工程師,2005,8(31):53-55.
【3】劉濤,倪江生,王丹丹.基于DSP的Flash自啟動設計[J].儀表技術,2009(9):44-45.
【4】王鵬,簡秦勤,范俊鋒.基于TMS320C6000 DSP及DSP/BIOS系統的Flash引導自啟動設計[J].電子元器件應用,2012,12(14):35-39.