PowerPC P2010 SylixOS啓動方式分析

1. QorIQ P系列處理器簡介

  QorIQ P系列處理器基於Power Architecture e500系列內核。其中P10xx系列、P2010和P2020基於e500v2內核,P204x、P30xx和P40xx基於e500mc內核,P50xx基於e5500內核。

  其中,P2系列專爲網絡、電信、軍工等各種市場提供高品質部件。P2010包含一個1.2GHz內核,512KB二級高速緩存等等。

2. mkimage工具介紹 

  mkimage工具可以用來製作不壓縮或者壓縮的多種可啓動鏡像文件。

  mkimage在製作鏡像文件的時候,是在原來的可執行鏡像文件的前面加上一個64字節的頭,記錄參數所指定的信息,這樣uboot才能識別這個鏡像是針對哪個CPU體系結構的,哪個OS的,哪種類型,加載內存中的哪個位置,入口點在內存的哪個位置以及鏡像名是什麼等等。

  mkimage工具用法如下:

-A:設定架構類型;

-O:設定操作系統類型;

-T:鏡像類型;

-a:指定鏡像在內存中的加載地址;

-e:指定鏡像運行的入口點地址;

-C:指定壓縮方式;

-n:指定鏡像名;

-d:指定製作鏡像的源文件。

  P2010的BSP源碼中,使用命令$(TOOLCHAIN_PREFIX)mkimage -A PowerPC -O linux -a 0x1000000 -e 0x1000000 -d $(OUTDIR)/bspp2010.bin -T kernel -C none -n "SylixOS" $(OUTDIR)/uImage來製作鏡像文件uImage。

  指定架構類型爲PowerPC,操作系統類型爲linux,內存加載地址爲0x1000000,鏡像運行地址爲0x1000000,無壓縮方式,鏡像類型爲kernel,鏡像名爲SylixOS,生成的文件名爲uImage。

3. uboot使用bootm引導內核

由於P2010使用了Linux的fdt,所以需要使用bootm命令加載kernel和fdt。

P2010使用命令tftp 0x2000000 uImage;bootm 0x2000000 - 0xefe80000引導內核。通過tftp加載mkimage命令製作的鏡像文件uImage到內存0x2000000地址處,然後通過bootm命令啓動系統。其中0x2000000爲tftp下載到內存中的鏡像的地址,-表示不讀取ramdisk,0xefe80000爲fdt所在的內存地址。

bootm命令解析鏡像文件格式,按Linux方式啓動系統,獲取到fdt內存地址。隨後將其獲取的fdt地址傳入SylixOS。

4. 啓動SylixOS

文件startup.s中,在SylixOS進入halPrimaryCpuMain函數之前,通過從FDT_REGISTER寄存器暫存dts內存地址,如圖 4.1所示。

 1.png

圖 4.1 暫存FDT

然後將暫存的dts內存地址傳入啓動函數,即halPrimaryCpuMain函數中,如圖 4.2所示,由此完成了uboot到SylixOS的fdt參數傳遞。

2.png

圖 4.2 讀取FDT

halPrimaryCpuMain函數根據獲取到的fdt地址,獲取設備信息,完成設備相關初始化工作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章