我正在學習關於ARM處理器上的Linux啓動過程,並發現U-boot是從閃存引導的,然後是u-boot代碼初始化RAM以設置執行環境,如堆棧設置以及所有的 並重新定位。誰初始化了閃存?
現在我的問題是誰初始化閃存,以便u-boot代碼可以執行?
從NOR閃存或NAND閃存啓動它有什麼不同嗎?
從NOR閃存啓動比從NAND閃存啓動要快嗎?
我正在學習關於ARM處理器上的Linux啓動過程,並發現U-boot是從閃存引導的,然後是u-boot代碼初始化RAM以設置執行環境,如堆棧設置以及所有的 並重新定位。誰初始化了閃存?
現在我的問題是誰初始化閃存,以便u-boot代碼可以執行?
從NOR閃存或NAND閃存啓動它有什麼不同嗎?
從NOR閃存啓動比從NAND閃存啓動要快嗎?
自然有人必須首次編程閃存。每塊電路板的設計決定了實際情況的發生,有時零件在被焊接之前被編程,有時會有一個後門,一個可以編程的連接器,等等。有時,主板上的處理器或其他硬件有一些其他類型的引導加載程序,您可以使用它來編程正常的引導閃存等。
NOR或NAND通常很不相同,我對較新閃爍的最大問題是擔心讀取干擾。 Flash的閱讀速度比寫作要快,許多努力至少需要寫入速度,密度和成本,所以我認爲這是努力的方向,而不是讀取速度和寫入速度。如果您有讀取速度問題,那麼只需將bootloader儘快複製到ram並從那裏運行,然後再關閉prom。
感謝@dwelch對它的迴應,是否就像我們開啓電路板之後,閃存已準備就緒,處理器和閃存之間的通信通過地址和數據總線發生,而且我通過NOR閃存中的單元放置使其更好選擇啓動uboot.Is不是這種情況嗎? –
我有董事會與nand基地和基地,他們都只是工作,我沒有(還)有理由關心另一個人。它取決於芯片和電路板的設計以及接口是如何工作的,是的,能夠從芯片和電路板上引導,芯片和電路板必須設計成能夠通電並工作。一旦你經歷了第一次編程閃存的雞和雞蛋問題(無錯代碼,不會崩潰的代碼)。 –
在我的日常工作中,我們會與每塊電路板上的電路板工程師一起工作,以確保閃光燈是我們想要的,並且磚塊電路板不需要烙鐵。我沒有花時間去看看ti和marvell和calvium以及其他uboot芯片的工作原理,以及如何設置beagles,open-rd和panda以及其他板子,更不用說如果您將閃存廢棄或否則磚板。 –
我不會將此作爲* off-topic *關閉,但是它*太寬泛*。具體的芯片有這樣做的機制。最低的共同點是焊接已經編程的。然而,這在10年前就失寵了。真的這取決於芯片。 –
*「我正在學習ARM處理器上的Linux啓動過程,並發現......」* - 您只是描述了ARM處理器所使用的許多啓動方案之一。有ARM系統將U-Boot加載到SDRAM中,並且U-Boot從不重新定位自己。在Linux(或任何OS)被加載之前,這樣的系統(例如Atmel SAM9)可能具有多達三級的引導加載程序。 – sawdust
我正在重讀這個問題,並同意鋸屑有很多方案和引導程序。我認爲我們可能會同意所涉及的各種步驟,比如準備ram,如果你有dram,那麼它可能需要提出並應該在linux之前提出,但這並不意味着你必須在uboot中完成。在設備樹之前,啓動linux是相當平凡的,並且爲了啓動linux絕對沒有任何理由像uboot那樣複雜和大小,我們的解決方案(帶或不帶設備樹)都不需要uboot類型的加載器,我們可以啓動沒有。 –