英文原文:
樹莓派和傳統的pc不同之處在於,樹莓派是soc裝置,cpu和gpu等外設整合在一顆晶元內部,因此,加電後,cpu可以在cpu初始化完成後再進行初始化工作。
bcm2835 soc(不是樹莓派3)如下圖:
樹莓派的soc內部整合了arm cpu,gpu,rom,sdram,以及其他裝置,所以可以把樹莓派想象成一股arm系統結構的pc。當給樹莓派加電後,最先執行儲存在rom中的**,這些**是晶元出廠的時候就設定的,通常被稱為first-stage bootloader,這些**固化硬體內部,可以認為是soc硬體的一部分。
first-stage bootloader的主要工作是載入位於sd卡上第乙個分割槽的bootloader(稱為second-stage bootloader),第乙個分割槽必須是fat32格式。second-stage bootloader主要是bootloader.bin。可以把sd卡取出,放到windows或linux系統中,就可以看到bootloader.bin檔案。需要說明的是,上電或者重啟後,cpu和ram都沒有初始化,因此,執行second-stage bootloader的實體是gpu,bootcode.bin是載入到gpu的128kb大小的l2cache中,再執行的。bootcode.bin的主要工作是初始化ram,並把start.elf(也位於sd卡的第一分區)載入到記憶體中。start.elf就是third-stage bootloader,start.efl從第乙個分割槽中載入config.txt,可以把config.txt想象成bios配置資訊,內部的配置都可以改變。例如:
arm_freq: frequency of arm in mhz. default 700.
gpu_freq: sets core_freq, h264_freq, isp_freq, v3d_freq together.
core_freq: frequency of gpu processor core in mhz. default 250.
h264_freq: frequency of hardware video block in mhz. default 250.
isp_freq:frequency of image sensor pipeline block in mhz. default 250.
v3d_freq:frequency of 3d block in mhz. default 250.
sdram_freq:frequency of sdram in mhz. default 400.
start.elf把ram空間劃分為2部分:cpu訪問空間和gpu訪問空間。soc晶元只訪問屬於gpu位址空間的記憶體區,例如,gpu的物理記憶體位址空間為0x000f000 – 0x0000ffff,cpu的物理記憶體位址空間為0x00000000 – 0x0000efff,如果gpu訪問0x0000008,那麼它訪問的實體地址為0x000f008。(實際上,arm處理器的mmu部件把gpu的記憶體空間對映到0xc0000000開始)。config.txt在記憶體位址空間分配完成後才載入,因此,不可以在config.txt中更改記憶體位址的配置。然而,可以通過配置多個elf檔案來讓start.elf和config.txt支援多種配置空間。start.elf還從sd卡的第乙個分割槽中載入cmdline.txt(如果cmdline.txt存在的話)。該檔案儲存的是啟動kernel(不一定是linux的核心)的引數。至此,soc進入了boot的最後階段,start.efl把kernel.img,ramdisk,dtb載入到記憶體的預定位址,然後向cpu發出重啟訊號,因此cpu就可以從記憶體的預定位址執行kernel的**,就進入了軟體定義的系統啟動流程。
after starting the operating system, the gpu code is not unloaded. in fact, start.elf is not just firmware for the gpu, it is a proprietary operating system called videocore os. when the normal os (linux) requires an element not directly accessible to it, linux communicates with vcos using the mailbox messaging system.
第1章 樹莓派4B啟動過程
首先上樹莓派的github 裡面能找到關於rpi 4b板卡的資源 玩一顆soc首先要了解啟動過程,做到知彼,1 當pri 4b上電啟動時,arm cortex a72 core處於standby狀態,videocore iv gpu core負責啟動系統。boot的啟動都是由gpu code來完成。...
樹莓派學習 一 啟動樹莓派
格式化選擇碟符時務必謹慎,千萬不要選錯!在sd卡的boot根目錄下新建乙個txt檔案,修改名稱為ssh 沒有字尾 插入網線 插入sd卡 給樹莓派供電。共享網際網路。開啟網路和internet共享設定 更改介面卡選項 右鍵wlan屬性 共享 允許其他網路使用者通過此計算機的internet連線 家庭網...
mysql啟動過程長 mysql啟動過程
mysql啟動過程經過以下順序 1.mysql讀取配置檔案的順序 讀取順序 etc my.cnf etc mysql my.cnf usr etc my.cnf my.cnf 2.mysql啟動方式 mysql啟動方式有三種 mysqld mysqld safe mysqld multi 主要用於多...