am5728初始化詳解教程_第1頁
am5728初始化詳解教程_第2頁
am5728初始化詳解教程_第3頁
am5728初始化詳解教程_第4頁
am5728初始化詳解教程_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

am5728初始化詳解教程目錄TOC\o"1-2"\h\u249791.1初始化概述 260411.1.1術語 219441.1.2初始化過程 367411.2預初始化 3120601.3通過ROM代碼初始化設備 15272011.3.1開機概述 15274181.3.2內存映射 16137341.3.3總體啟動順序 197471.3.4啟動和配置 2160951.3.5外圍啟動 3063321.3.6快速外部啟動 40302291.3.7內存引導 4184121.3.8圖像格式 75282881.3.9追溯 8162371.4HLOS支持服務 84113531.4.1管理程序 8576441.4.2緩存維護 85231331.4.3CP15寄存器 85259651.4.4喚醒發(fā)生器 861.1初始化概述本章概述了從開機到操作系統(tǒng)(OS)和應用程序執(zhí)行的設備初始化要求、整個初始化過程(包括硬件和軟件相關步驟)、一般ROM代碼操作要求和行為預期。1.1.1術語?Bootstrap:在內存引導階段由ROM代碼啟動的初始軟件?配置頭(CH):初始軟件之前的可選結構,允許重新定義ROM代碼默認設置?下載軟件:在外圍設備啟動階段,通過ROM代碼將初始軟件下載到內部靜態(tài)RAM(SRAM)?eFuse:通常在工廠設置的一次性可編程存儲器位置?閃存加載程序:在預閃存階段由ROM代碼啟動的下載軟件。它還可以在外部存儲器中編程圖像。?初始軟件:由任何ROM代碼機制執(zhí)行的軟件(內存啟動或外圍啟動)。初始軟件是引導和下載軟件的通用術語。?內存引導:ROM代碼機制,包括從外部內存執(zhí)行初始軟件?主CPU:ARM?Cortex?-A15MPCore?CPU-ID為0的CPU。它配置多核平臺并啟動ROM代碼,以確保設備從大容量存儲器(存儲器引導)或外圍接口(外圍設備引導)引導。?外圍啟動:ROM代碼機制,包括輪詢選定的接口、下載和執(zhí)行內部RAM中的初始軟件(在本例中,是下載的軟件)?永久引導設備:默認情況下,包含引導序列中要執(zhí)行的映像的內存設備。它是默認的內存引導設備。如果沒有對軟件引導配置進行編程,則在熱復位后使用永久引導設備。?預閃存:外設啟動的一種特殊情況,使用ROM代碼機制對外部閃存進行編程?ROM代碼:設備ROM中實現(xiàn)引導的片上軟件?ROM代碼控制啟動階段:該階段涵蓋從平臺釋放重置到第一個用戶或客戶擁有的軟件開始執(zhí)行的順序操作。此階段完全由設備ROM代碼控制。?保存和恢復(SAR)RAM內存:在熱復位或從低功耗模式喚醒后未清除的片上RAM內存?從CPU:ARMCortex-A15MPCoreCPU,CPU-ID為1。它被ROM代碼帶入waitforevent(WFE)狀態(tài),等待主CPU喚醒。?軟件啟動配置:存儲在SAR內存中的邏輯結構,允許在熱復位后引導時重新定義ROM代碼默認設置1.1.2初始化過程圖1-1是初始化過程及其步驟的概述:?預初始化:電源、時鐘和控制連接必須存在,并且引導配置引腳必須保持在所需的邏輯級別。?電源、時鐘、復位斜坡序列:電源管理芯片應用的特定序列?ROM代碼:負責使用主CPU查找、下載和執(zhí)行初始軟件?初始軟件:準備并將控制權傳遞給應用軟件或高級操作系統(tǒng)(HLO)的軟件?支持對稱多處理(SMP)的HLO或應用程序(主要用于診斷)圖1-1初始化過程初始化過程中的前兩個步驟是面向硬件的;但是,它們需要了解配置這些具有軟件可配置功能的系統(tǒng)接口引腳(設備上的球)的過程。這種配置是芯片配置的重要組成部分,并且取決于應用程序。本章討論這些系統(tǒng)接口引腳和相關的配置寄存器,它們對設備的正確初始化至關重要。1.2預初始化要成功完成引導操作,必須設置某些硬件配置設置。時鐘、復位和電源連接,以及為主CPU設置引導內存空間所涉及的引腳,必須正確連接并驅動到成功的ini啟動設備。以下各節(jié)描述了預初始化階段的具體要求。1.2.1電源要求該裝置可由外部電源管理集成電路(PMIC)供電。TI提供了一個與電源管理IC配套芯片相連的整體解決方案。有關本設備支持的電源管理IC配套芯片的信息,請參閱數據手冊。圖1-2顯示了設備和PMIC配套芯片之間的典型電源連接。圖1-2。電源連接示例表1-1描述了設備電源球1.2.2與PMIC同伴的相互作用ROM代碼不與PMIC執(zhí)行任何I2C事務。必須滿足以下系統(tǒng)條件才能執(zhí)行設備初始化:?設備內部的USB收發(fā)器(USB2.0)按USB外圍設備引導功能的要求重新通電。?在任何重置進入SD卡引導功能之前,SD卡固定框架必須正確通電。?設備必須適當通電,并在平臺啟動時準備就緒:–eMMC公司–QSPI–GPMC公司–世達1.2.3時鐘、復位和控制概述圖1-3顯示了時鐘和復位環(huán)境,其中時鐘和復位相關信號在系統(tǒng)級、系統(tǒng)擴展信號和晶體振蕩器連接處收集。圖1-3。時鐘、重置和控制環(huán)境概述系統(tǒng)界面的主要特點是:接受連接在XYOOS0和XOYOS0席席之間的晶體,以及XiOSCO1和XOYOSC1焊盤,以產生SysLCLK1和SysYLCK2,并重新連接。接受外部的LVCMOS時鐘源,分別連接到XYOSCO和XYOSCO1席席,分別用于SysSLCK1和SysYLCK2?用于RTC操作的32kHzLVCMOS時鐘輸入?最多四個參考時鐘輸入?最多三個可配置時鐘輸出?sysboot[15:0]輸入信號,用于定義XIP模式下的引導模式、系統(tǒng)時鐘速度和GPMC?兩個復位源–上電復位(冷復位)–熱復位?三條外部中斷線(sys\Uirq1、sys\Uirq2和nmi)?四個外部DMA請求時鐘方案設備操作需要外部輸入時鐘,如下所示:?32k時鐘:一個16MHz的晶體連接到嵌入32k振蕩器的PMIC配套芯片(如果32k晶體連接到系統(tǒng)的另一個設備上,也可以在電源管理IC的OSC16MIN引腳上提供一個方形CMOS32kHz時鐘)。產生的32k時鐘通過兩個輸出傳輸到整個系統(tǒng):–CLK32KGO–CLK32KGO1V8?系統(tǒng)時鐘:設備支持兩個系統(tǒng)時鐘,每個時鐘源有兩個:–系統(tǒng)時鐘1(主系統(tǒng)時鐘):?OSC0引腳上的晶體。使用內置在器件中的內部振蕩器(OSC0)。席上OSC0外部LVCMOS時鐘–系統(tǒng)時鐘(可選系統(tǒng)時鐘):?OSC1引腳上的晶體。使用內置在器件中的內部振蕩器(OSC1)。席上OSC1外部LVCMOS時鐘?該設備可向外圍設備IC提供數字時鐘。該設備提供了多種時鐘選擇,可通過clkout[1:3]焊盤傳送到配套設備。有關更多信息,請參閱第3章“電源、重置和時鐘管理”中的第3.3節(jié)“PRCM子系統(tǒng)環(huán)境”。有關pad多路復用的更多信息,請參見第18章,控制單元。表1-2列出了設備時鐘輸入源的映射。表1-3列出了PMIC時鐘要求。表1-2。輸入源映射表1-3。PMIC時鐘要求復位配置.1開/關互連和上電復位整個系統(tǒng)通常由連接到PMIC芯片的開關按鈕喚醒。該信號屬于VSYS-系統(tǒng)功率域,為低電平有效信號(PMIC內部上拉將其與VSYS相連)。當實現(xiàn)PMIC加電序列時,PMIC加電事件通過其NRESPWRON輸出引腳傳播到設備porzpad(即PRMSYS_PWRON摑RST信號)。在VDD核心和I/O加電期間,設備porz輸入引腳始終保持在低位。.2熱復位熱復位可以由設備、外部按鈕(通常用于開發(fā)平臺)或連接到它的任何其他芯片(通常與PMIC配套的NRESWARM輸出引腳相連)來斷言。devicewarmresetpad(resetn-設備信號系統(tǒng)熱重設)用于觸發(fā)設備上的熱復位,當設備已啟動時,它會重置部分設備(例如,從軟件崩潰中恢復)。當發(fā)生內部設備重置時,SYS\uNRES\uWARM_OUT輸出和devicepadrstoutn變低并重置所有外圍設備在系統(tǒng)解除斷言后,設備釋放系統(tǒng)熱輸出信號。.3GPIO外設復位大多數外設都可以通過GPIO重置和開機或關機。默認情況下,在POR下,大多數設備信號處于安全模式,默認值由I/O單元驅動。該值由內部上拉或下拉驅動。根據外圍設備重置激活級別,用戶必須選擇一個或另一個GPIO(根據重置值)。一旦釋放POR,pad上的值由設備控制模塊的默認配置驅動。大多數情況下,此配置與I/O單元上選擇的默認值對齊。下一步取決于應用程序:用戶必須配置設備寄存器以驗證GPIO的使用以及控制模塊的默認配置。.4熱復位對GPIO的影響當發(fā)生熱復位事件時:?GPIO控制器復位。因此,GPIO在輸入模式下自動打開。?控制模塊未復位。與信號復用模式和上拉或下拉配置相關的信息仍然有效。因此,當發(fā)生熱復位事件時,輸出緩沖區(qū)被禁用。因此,對于平臺所期望的,可以定義兩種不同的行為:?GPIO對熱復位敏感:為了防止浮動焊盤,用戶軟件設計成在軟件熱復位動作之前立即啟用內部焊盤PU和PD電阻器,因為熱復位敏感的GPIO控制器在設備熱復位后會將I/O方向更改為輸入。如果熱復位敏感型GPIO控制器引腳在熱復位之前已配置為輸出,則這是必要的發(fā)生了什么如果用戶已將GPIO配置為輸入,則應默認設置熱復位前啟用的拉入條件,因為在這種情況下,用戶應該在GPIO配置期間啟用內部PU和PD焊盤(除非使用了外部拉電阻)。注:如果PU和PD電阻器在POR(冷復位)后立即通過軟件啟用一種只作為輸出使用的GPIO,然后是不必要的功耗可能發(fā)生。雖然在軟件熱復位期間,在熱復位條件可能出現(xiàn)之前動態(tài)啟用拉入(因為用戶軟件知道熱復位事件發(fā)生的確切時刻),但當硬件觸發(fā)熱復位時(例如,看門狗重置、SYS\NRESWARM信號斷言等),這是不可能的,因為軟件不知道這些熱重置斷言的確切時間。?GPIO對熱復位不敏感:為了避免在熱復位事件期間(和之后)獲得浮動信號,并保持重置前驅動的值不變,每次訪問專用GPIO寄存器時,用戶必須將拉值與驅動器值對齊。注:為避免不必要的消耗,用戶軟件必須保證內部拉阻當GPIO緩沖區(qū)正在驅動時被禁用。有關重置順序的說明和有關設備重置管理的信息,請參閱第3章“電源、重置和時鐘管理”中的第3.5節(jié)“重置管理功能說明”。有關設備重置順序的更多信息,請參閱設備數據手冊。PMIC控制?I2C:設備接口:系統(tǒng)接口I/O和I2C1涉及設備與外部電源、復位和時鐘管理IC伙伴之間的系統(tǒng)交互。設備和PMICcompanion實現(xiàn)基本電源管理接口,如下所示:–32kHz時鐘單輸入–兩個系統(tǒng)復位:通電(冷)復位和熱復位–一次中斷?中斷:PMIC伴隨設備可以在需要設備監(jiān)視其活動的任何時候激活其輸出中斷請求信號(INT)。當接收到這種中斷時,設備通過I2C進行檢查,以確定中斷的來源。INT引腳處于低激活狀態(tài)。PMIC請求PMIC驅動三個外部使能輸出信號,允許在通電序列的不同階段打開一些外部資源:?在啟動任何內部電源之前,REGEN1和REGEN2在通電順序開始時被驅動至高電平。它們屬于VSYS功率域。REGEN1通常可用于降壓升壓控制。?VCORE電源輸出打開后,SYSEN立即被驅動到高電平。SYSEN屬于VIOpower域。PMIC配套芯片可以接收兩個電源資源請求:ENABLE1和NSLEEP。這些引腳允許外部設備請求PMIC內部資源。當管腳被激活時,PMIC的伴隨電源行為必須在第一次引導后進行編程(組分配的資源和啟用管腳,組激活時的資源行為,等等)。當PMIC芯片處于休眠模式時,特別需要使用NSLEEP,因為它不能處理I2C命令。任何需要PMIC伴生資源來喚醒的設備必須首先激活其相關的啟用信號。所有電源管理芯片電源調節(jié)器在休眠模式下關閉或處于休眠模式。1.2.4Sysboot配置該設備在重置sysbootpads上實現(xiàn)了16個采樣。(1)電路板應采用一種機制,以方便地修改上拉/下拉狀態(tài),以便將來進行任何修改。表1-4。系統(tǒng)引導板說明(1)Table1-5.MMC2Configuration(SR2.0)(1)PMIC伴隨設備可以在需要設備監(jiān)視其活動的任何時候激活其輸出中斷請求信號(INT)。當接收到這種中斷時,設備通過I2C進行檢查,以確定中斷的來源。INT引腳處于低激活狀態(tài)。PMIC請求PMIC驅動三個外部使能輸出信號,允許在通電序列的不同階段打開一些外部資源:?在啟動任何內部電源之前,REGEN1和REGEN2在通電順序開始時被驅動至高電平。它們屬于VSYS功率域。REGEN1通??捎糜诮祲荷龎嚎刂?。?VCORE電源輸出打開后,SYSEN立即被驅動到高電平。SYSEN屬于VIOpower域。PMIC配套芯片可以接收兩個電源資源請求:ENABLE1和NSLEEP。這些引腳允許外部設備請求PMIC內部資源。當管腳被激活時,PMIC的伴隨電源行為必須在第一次引導后進行編程(組分配的資源和啟用管腳,組激活時的資源行為,等等)。當PMIC芯片處于休眠模式時,特別需要使用NSLEEP,因為它不能處理I2C命令。任何需要PMIC伴生資源來喚醒的設備必須首先激活其相關的啟用信號。所有電源管理芯片電源調節(jié)器在休眠模式下關閉或處于休眠模式。1.2.4Sysboot配置該設備在重置sysbootpads上實現(xiàn)了16個采樣。(1)電路板應采用一種機制,以方便地修改上拉/下拉狀態(tài),以便將來進行任何修改。表1-4。系統(tǒng)引導板說明(1)系統(tǒng)時鐘速度選擇通過sysboot[9:8]可以選擇三種水晶速度,如表1-7所述。用戶負責根據提供給設備的實際時鐘設置正確的值。表1-7。系統(tǒng)時鐘選擇QSPI冗余SBL圖像偏移有四個選項可用于設置冗余SBL圖像之間的偏移,如表1-8所述。如果不使用冗余SBL功能部件,則不需要更改sysboot管腳,因為只使用主映像,而且扇區(qū)偏移不重要。表1-8。冗余圖像之間的偏移引導設備順序選擇ROM代碼根據從這些位置收集的信息創(chuàng)建設備列表(順序):?第一個位置是在設備中檢測到的sysboot[5:0]外部配置引腳CTRL_CORE_引導寄存器。sysboot[5:0]配置板有兩個主要用途:在POR或冷復位后,根據用于引導和配置硬件的接口和設備配置ROM代碼軟件。?第二個位置是存儲在非易失性SAR存儲器中的軟件引導配置,并在全局熱復位后使用。SYSBOOT引腳用于從具有可能的引導方案的表中索引引導設備列表。被檢查的引導設備的順序是從第一個設備到第三個設備。表中使用了以下名稱:?內存類型:–就地執(zhí)行(XIP):NOR(CFI)閃存或其他XIP設備–NAND:NAND閃存(非XIP)–SD:可移動SD卡設備–eMMC:eMMC公司?存儲設備–QSPI_1:1位SPI閃存–QSPI_4:4位(四位)SPI閃存–SATA:與SATA兼容的設備,如固態(tài)驅動器(SSD)或硬盤驅動器(HDD)?外圍接口:–USB:HSUSB2.0接口–UART:UART接口?表1-9以粗體列出了永久引導設備。以上引導模式在第1.3.5節(jié)外設引導和第1.3.7節(jié)內存引導中詳細描述。根據引導順序,表1所選的ROM-0引腳列表。(1)在設備列表中循環(huán)10次失敗后,ROM代碼立即啟動全局熱復位。表1-9。啟動設備順序引導外設管腳多路復用表1-10列出了由ROM代碼根據所選引導外設完成的碼針復用配置。這些設置不會在ROM代碼退出時恢復為重置默認值。注意:ROM代碼檢查選擇要搜索的接口,直到找到可引導接口或設備。搜索界面上的活動如果出于任何其他目的(為了例如,一個LED連接到一個GPMC焊盤,內部連接到一個GPIO)。表1-10。根據引導外設的管腳多路復用1.3通過ROM代碼初始化設備本節(jié)介紹高級引導概念,并提供在設備上引導的基本知識。1.3.1開機概述引導類型引導是從一個引導設備啟動引導的過程。ROM代碼有兩個引導功能:外設引導和內存引導。?在外設啟動中,ROM代碼輪詢選定的通信接口,如UART或USB,通過接口下載可執(zhí)行代碼,并在內部RAM中執(zhí)行。從外部主機下載的軟件可用于編程連接到設備的閃存。外設引導的這種特殊情況稱為預閃存;為預閃存下載的軟件稱為閃存加載程序。flashloader在外部閃存中刻錄一個新的客戶機應用程序映像。初始軟件是引導程序、下載軟件和閃存加載程序的通用術語。圖像燒錄后,可以執(zhí)行軟件(熱)重置。?在內存引導中,ROM代碼在永久內存(如閃存、存儲卡或SATASSD或HDD存儲設備)中查找引導并執(zhí)行它。此過程通常在冷或熱設備復位后執(zhí)行。ROM代碼通過sysbootpad配置檢測設備是否應該從外圍接口(USB或UART)下載軟件。此機制包括生產中的初始閃存(外部內存為空)和服務中的刷新(外部內存已編程)。ROM代碼架構圖1-4顯示了ROM代碼體系結構。它采用自上而下的方法分為三個主要層:高級驅動程序和硬件抽象層(HAL)。一層通過統(tǒng)一的接口與較低層通信。?高級層執(zhí)行公共ROM代碼的主要任務:多核啟動、看門狗和時鐘配置、中斷管理和主引導程序。?驅動層根據接口規(guī)范實現(xiàn)任何引導設備的邏輯和通信協(xié)議。?HAL實現(xiàn)與硬件基礎設施交互的最低級別代碼模塊。結束引導設備(通常是外部閃存組件)連接到設備I/O板。圖1-4顯示了這三個層及其模塊。圖1-4。ROM代碼體系結構1.3.2內存映射ROM內存映射圖1-5顯示了48kib的ROM內存映射。圖1-5。ROM內存映射?ROM異常向量異常被重定向到ROM異常向量(見表1-11)。重置異常被重定向到公共ROM代碼啟動。其他異常通過將適當的地址加載到PC寄存器來重定向到RAM處理程序。表1-11。ROM異常向量?ROM代碼循環(huán)冗余校驗(CRC)對于地址范圍0x38000–0x43FFF,ROM代碼CRC計算為32位CRC代碼(CRC-32-IEEE802.3)。4字節(jié)CRC代碼存儲在0x38020位置。?死循環(huán)死循環(huán)是在ARM模式下編碼的分支指令。它們有多種用途(見表1-12)。表1-12。死循環(huán)?代碼此空間用于保存代碼和常量數據。?API表此表的目的是允許外部代碼訪問系統(tǒng)維護、實用程序和設備驅動程序功能,這些功能用于確保ROM代碼引導功能。通過調用此表中硬編碼的固定地址,可以在運行時重用這些函數。?ROM代碼版本ROM代碼版本由兩個BCD編號組成:major和minor。在給定的ROM版本中可以用ROM來標識它的版本。ROM代碼版本是地址0x43FFC處的32位十六進制值。ROM代碼版本號為:–0x2601用于SR1.0–0x2602用于SR1.1和SR2.0RAM內存映射圖1-6所示的片上SRAM(L3OCMRAM)的分區(qū)在引導過程中使用。在調用API函數時也可以訪問跟蹤區(qū)域。圖1-6。RAM內存映射??下載的圖像公共ROM代碼使用這個空間來存儲下載的引導映像??赡芨哌_504千磅。?RAM異常向量RAM異常向量提供了一種將異常重定向到自定義處理程序的簡單方法。表1-13列出了為RAM向量保留的RAM空間的內容。前八個地址是ARM指令,將隨后八個地址中的值加載到PC中。這些指令在發(fā)生異常時執(zhí)行,因為它們是從ROM異常向量調用的。未定義、SWI、unused和FIQ異常被重定向到硬編碼死循環(huán)。預取中止、數據中止和IRQ異常被重定向到預定義的ROM處理程序。用戶可以將異常重定向到另一個處理程序,方法是將異常的地址從0x4037F024寫入0x4037F03C,或重寫地址0x4037F004到0x4037F01C之間的分支(加載到PC)指令。(1)預取和數據中止的默認處理程序從CP15調試寄存器執(zhí)行讀取以檢索中止的原因:?預取中止:從CP15讀取IFAR寄存器并將其存儲到R0中。國際單項體育聯(lián)合會寄存器被讀取并存儲到R1寄存器中。然后ROM代碼跳轉到預取中止死環(huán)(38088h)。?在數據中止的情況下:從CP15讀取DFAR寄存器并將其存儲到R0中。DFSR寄存器讀取并存儲到R1寄存器中。然后ROM代碼跳轉到數據中止死循環(huán)(3808章)。表1-13。RAM異常向量?跟蹤數據此區(qū)域包含反映ROM代碼執(zhí)行路徑的跟蹤向量。公共ROM代碼跟蹤數據如表1-14所示。有關ROM代碼跟蹤的更多信息,請參閱第1.3.9節(jié)“跟蹤”。表1-14。跟蹤數據1.3.3總體啟動順序圖1-7顯示了ROM代碼流程圖。圖1-7??傮w啟動順序引導模塊的主循環(huán)遍歷引導設備列表并嘗試從當前選定的引導設備獲取映像。ROM代碼執(zhí)行以下步驟:第1步。基本配置和初始化。讀取SYSBOOT引腳或軟件引導配置。第二步。名為fastexternalboot的路徑是一種特殊的低延遲引導模式。它包括到外部可尋址存儲器的盲目跳轉。見第1.3.6節(jié),快速外部啟動。第三步。將創(chuàng)建引導設備列表(請參閱第節(jié),引導設備列表設置)。該列表包含要搜索啟動映像的所有設備。列表基于SYSBOOT引腳,或第節(jié)“軟件”中描述的軟件引導配置啟動配置。軟件引導配置結構在SAR內存中并且可以在執(zhí)行軟件重置之前由軟件編寫。軟件重置后軟件引導配置優(yōu)先于SYSBOOT配置。第4步。引導過程的主循環(huán)遍歷引導設備列表并嘗試從當前選定的引導設備中搜索映像。如果找到并成功執(zhí)行引導映像,或者當監(jiān)視程序過期時。如果是圖像找到時,ROM代碼根據類型執(zhí)行內存引導或外圍設備引導當前引導設備的:?當引導設備為XIPMemory,NAND,QSPI時,執(zhí)行內存引導,eMMC或SD、SATASSD/HDD。?當引導設備為UART或USB時,執(zhí)行外設引導。第5步。內存引導從內存類型的設備讀取數據。內存引導在第1.3.7節(jié)“內存引導”中有詳細描述。第6步。外設引導從通訊接口下載數據。外設引導在第1.3.5節(jié)“外設引導”中進行了描述。第7步。圖像自動啟動。引導模塊的另一個特性是執(zhí)行配置頭(CH)。CH將系統(tǒng)配置為從所選的永久或外圍引導設備進行更快和更靈活的引導。CH是可選的,在第節(jié)“配置標題”中進行了說明。1.3.4啟動和配置啟動圖1-8顯示了ROM代碼的啟動順序。圖1-8。ROM代碼多處理器啟動序列主CPUL1指令緩存和分支預測機制作為公共引導過程的一部分被激活。公共向量的基址被配置成ROM代碼的重置向量(0x38000)。內存管理單元(MMU)在引導期間保持關閉狀態(tài)(因此,一級數據緩存關閉)。主CPU執(zhí)行公共端的基本初始化。接下來,MMU配置WD_TIMER2(設置為3分鐘),檢測系統(tǒng)時鐘,并配置系統(tǒng)時鐘。最后,MMU跳轉到引導程序。從CPU不執(zhí)行任何特定的配置,在復位后它保持其默認配置(關閉一級指令和數據緩存、關閉分支預測、關閉MMU、不重新映射公共向量的基址)。從CPU被快速保持在等待事件(WFE)狀態(tài)。當主CPU完成公共引導過程,直到跳轉到外部軟件(例如HLOS)時,它一直處于這種狀態(tài)。在這個階段,外部軟件可以通過執(zhí)行SEV命令來喚醒從CPU。操作系統(tǒng)有兩個內存映射寄存器,用于傳輸啟動信息。AUX_CORE_BOOT_0和AUX_CORE_BOOT_1寄存器位于MPUWakeupGen域中。?AUX_CORE_BOOT_0用作狀態(tài)寄存器,以向從CPU發(fā)出信號,表示它必須在之后喚醒由主CPU發(fā)起的發(fā)送事件操作。?AUX_CORE_BOOT_1包含從CPU在喚醒后必須跳轉到的物理地址位置。有關這些寄存器的內存映射,請參閱第4.4.10節(jié),雙Cortex-A15MPU子系統(tǒng)中的MPU_WUGEN寄存器。控制模塊配置表1-15列出了每次ROM代碼啟動時修改的控制模塊寄存器。在修改任何pad控制寄存器之前,必須滿足控制模塊的要求。當ROM代碼完成時,這些寄存器不會恢復到默認值(即鎖狀態(tài))。表1-15。每次啟動時由ROM代碼修改的控制模塊寄存器一旦啟動設備列表完成,ROM代碼將應用第節(jié)“根據引導外圍設備的管腳多路復用”中所述的管腳多路復用設置。PRCM模塊模式配置表1-16列出了每次ROM代碼啟動時修改的PRCM模塊模式、時鐘控制和電源控制寄存器。當ROM代碼完成時,這些寄存器不會恢復到默認值。表1-16。由ROM代碼修改的PRCM模塊模式寄存器時鐘配置ROM代碼從sysboot[9:8]引腳值檢測系統(tǒng)輸入時鐘頻率(SYS_CLK1)。設備中支持的系統(tǒng)頻率為:?19.2兆赫?20兆赫?27兆赫參見第節(jié)“時鐘方案”和第節(jié)“系統(tǒng)時鐘速度配置”。在檢測到輸入時鐘之后,ROM代碼配置ROM代碼執(zhí)行所需的時鐘和dpll。配置的DPLL包括:?DPLL_PER:鎖定以向外圍模塊提供時鐘?DPLL_核心:鎖定以提供L3_主互連、L4互連和EMIF時鐘?DPLLUMPU:鎖定?DPLL_USB_OTG_SS/DPLL_USBDPLLs:僅在USB外設啟動時鎖定。否則,它將保持原樣。?DPL\USATA:僅在SATA內存啟動時鎖定。否則,它將保持原樣。在冷復位或熱復位后,DPLLs和PRCM時鐘分配器配置有ROM代碼的默認值(取決于檢測到的系統(tǒng)輸入時鐘),以便為ROM代碼序列提供相同的工作條件。表1-17總結了默認的ROM代碼時鐘設置。(1)故意將外部DRAM的初始化設置為低頻。表1-17。ROM代碼默認時鐘設置但是,可以覆蓋默認時鐘設置。有三種方法可以在引導期間更改DPLL和所有相關的時鐘分頻器、選通和多路復用器配置:?ROM代碼默認設置,如表1-17所述。它們總是在任何重置時應用。?軟件重置后的軟件引導配置,如第節(jié)“軟件啟動配置”所述?CH,如第節(jié)配置標題所述。CH允許用戶在內存或外設引導后有一個已知的配置(關于GPMC和時鐘寄存器)。此配置可被軟件啟動配置阻止。有關更多信息,請參閱表1-19,軟件引導配置結構。引導設備列表設置ROM代碼基于兩個來源創(chuàng)建設備列表:?軟件引導配置(如果在熱復位后出現(xiàn))。軟件存儲在非易失性存儲器結構中。?鎖定在控制模塊中的sysboot[5:0]信號用于索引從中提取設備列表的設備表。圖1-9顯示了ROM代碼如何根據重置源設置設備列表。注意:只有永久啟動設備在復位未通電且設備從sysboot引腳獲取。用戶可以在軟件后強制外設引導使用啟動軟件重置。圖1-9。設備列表設置軟件啟動配置軟件啟動配置是存儲在SARRAM存儲器中的邏輯結構,在熱復位或從低功耗模式喚醒后不會清除。.1SARRAM的公共使用公共ROM代碼為軟件引導配置結構的位置提供了一些靈活性。PUBLIC_SW_BOOT_CFG_ADDR指針定義SARRAM庫中結構的起始地址(見表1-18)。表1-18。SARRAM的公共使用如前所述,軟件引導配置功能是可選的。因此,公共ROM代碼決定根據在public_SW_BOOT_CFG_ADDR指針指向的地址處熱復位時讀取的值來使用該特性。如果該值與范圍0x4AE26CC8到0x4AE26FFC匹配,ROM代碼將提取該地址處的結構。在冷復位時,PUBLIC_SW_BOOT_CFG_ADDR指向的值始終被覆蓋為0??梢詫⒐睸ARRAM區(qū)域用于任何其他目的,例如存儲跟蹤以供hlo使用。顯然,必須注意不要覆蓋用于低功耗模式和/或軟件引導配置(如果使用)的位置。.2軟件引導配置結構表1-19描述了軟件引導的配置結構。它提供了三個級別的靈活性,可在熱復位后重新定義ROM代碼默認值:?重新定義默認設備引導列表(根據SYSBOOT引腳給出的ROM代碼默認值配置)?重新定義默認時鐘設置?重新定義與外圍啟動機制相關的超時注意:這些部分是作為一個鏈接列表提供的;因此,項目的順序和數量不是相關的。ROM代碼根據上一節(jié)中填充的大小在該位置搜索下一節(jié)。如果在軟件引導的配置結構中設置了適當的位,軟件引導配置中的時鐘配置可以覆蓋CH設置。表1-19。軟件啟動配置結構1.3.5外圍啟動說明ROM代碼可以從這些外圍設備啟動:?USB1:來自USB1內部收發(fā)器的高速和全速USB?UART3:115.2Kbps,8位,偶數奇偶校驗,1個停止位,無流量控制從外設啟動的目的是從外部主機下載閃存加載程序代碼。此引導方法主要用于編程連接到設備的閃存(例如,在初始閃存、固件更新或維護的情況下)。圖1-12顯示了整個外設引導過程。它包括同步階段(主機和設備之間的握手)和傳輸階段。同步階段與UART和USB引導類似。兩個傳輸階段使用相同的過程。從UART啟動時,ROM代碼首先初始化UART3接口。然后ROM代碼發(fā)送ASICID數據塊。默認情況下,它期望在300毫秒內從主機接收引導消息。圖1-10顯示了該過程。圖1-10。UART的同步相位圖1-11顯示了從USB引導時的過程。圖11-1。USB同步階段在同步階段(見圖1-10和圖1-11),設備可以提供稱為ASICID的小數據包(如表1-20所述)。它是一個簡單的結構,包含不同類型的信息,如ROM版本、校驗和和和ID。同步階段涉及的默認超時可以在通過軟件引導配置(在第節(jié)“軟件引導配置”中描述)進行熱復位后重新定義。主機可以通過提供引導消息來決定所需的操作(見表1-24)。此消息可以是:獲取ASICID、外圍設備引導、更改設備或下一個設備。如果設備接收到GetASICID引導消息,它將發(fā)回ASICID內容。如果接收到更改設備或下一設備消息,ROM代碼停止當前外圍設備引導過程并返回到主引導,主引導根據接收到的引導消息來決定下一個引導設備。如果在沒有超時的情況下接收到外圍設備引導消息,則設備正在進入傳輸階段。從那里,flashloader圖像大?。ㄗ鳛橐粋€32位字)和flashloader圖像本身將被接收。ROM代碼最多等待1分鐘以完成圖像大小接收,最多等待1分鐘以下載圖像。如果下載過程在此時間之前沒有完成,外圍設備引導過程將中止。ROM代碼繼續(xù)檢查引導設備列表中包含的設備。如果下載過程通過,則可以執(zhí)行圖像。閃存加載程序映像從地址0x40300000直接下載到內部RAM中,下載的映像的最大大小為504KiB。注意:發(fā)送圖像大小為零將跳過外圍啟動過程。USB或UART連接在傳輸階段結束時保持打開狀態(tài),一旦退出ROM代碼,初始軟件將接管。這意味著初始軟件可以重用當前建立的連接。在USB連接的情況下,端點可以這樣重用,而無需關閉連接并再次執(zhí)行完全枚舉。表1-20。ASICID結構Table1-21.ItemsTable1-22.IDSubblock表1-23。校驗和子塊表1-24總結了從主機發(fā)送的引導消息。表1-24。啟動消息圖1-12顯示了外圍設備引導過程。圖1-12。外圍啟動程序UART引導初始化階段ROM代碼支持從具有以下特征的UART接口引導:?UART3接口?通信參數設置為115.2Kbps,8位,偶校驗,1個停止位,無流量控制?雙針接口:RX/TX?引導消息默認超時為300毫秒(超時引導消息)USB引導初始化階段ROM代碼支持從具有以下特征的USB接口引導:?在USB2.0模式下使用USB1子系統(tǒng)?設備集成USB收發(fā)器(USB2PHY1)?枚舉默認超時為3秒(超時USB)?引導消息默認超時為3秒(超時引導消息)。注意:ROM代碼不處理任何OTG特定的特性。.1初始化程序注意:內部USB2PHY1(HS)收發(fā)器必須在啟動時通電并進行配置。不操作應來自設備ROM代碼,用于其配置。圖1-13顯示了USB初始化過程。圖1-13。USB初始化過程.2SATA外設閃存USB接口在下一個方案中(參見圖1-14),假設新版本的固件閃存加載程序主機位于PC主機中。同樣,加載到設備內部L3片上RAM(使用設備ROM代碼的外圍引導功能)的應用程序稱為flashloaderSecond。圖1-14。USB上的SATA閃存.3USB驅動程序描述符USB設備使用描述符來報告其屬性。描述符是具有定義格式的數據結構。每個描述符以一個字節(jié)寬的字段開頭,該字段包含描述符中的總字節(jié)數,后跟標識描述符類型的字節(jié)寬字段。使用描述符可以簡潔地存儲各個配置的屬性,以便每個配置可以重用具有相同特性的其他配置的描述符或描述符的一部分。在適當的情況下,描述符包含對字符串描述符的引用。字符串描述符包含可顯示、可讀的描述信息。這些描述符詳細信息可用于工具開發(fā)或調試:?設備描述符設備描述符包含有關USB設備的一般信息,包括應用于設備和所有設備配置的全局信息。一個USB設備只有一個設備描述符。設備限定符描述符是必需的,因為ROM代碼使用USB核心的HS特性。表1-25列出了設備描述符。表1-25設備描述符?設備限定符描述符設備限定符描述符包含有關支持HS的設備的信息,如果設備以其他速度運行,該設備將發(fā)生變化。主機使用GetDescriptor()請求(標準設備請求)檢索該描述符。表1-26列出了設備限定符描述符。表1-26。設備限定符描述符?配置描述符此描述符提供有關特定設備配置的信息。它描述了配置支持的接口數量(見表1-27)。表1-27。配置描述符?其他速度配置描述符該描述符描述了一個支持HS的設備的配置,如果它以其他可能的速度運行(見表1-28)。表1-28。其他速度配置描述符?接口描述符此描述符描述配置中的特定接口(見表1-29)。表1-29。接口描述符?端點描述符用于接口的每個端點都有自己的描述符。此描述符包含主機確定每個端點的帶寬需求所需的信息。這個描述符作為GetDescriptor(配置)請求的一部分返回(見表1-30和表1-31)。表1-30。大容量輸入端點描述符Table1-31.BULKOUTEndpointDescriptor?字符串描述符字符串描述符使用UNICODE編碼。USB設備中的字符串可以支持多個語言。當請求者使用所需的語言時,使用一個由請求者定義的語言來指定請求者的ID。所有語言的字符串索引0返回一個字符串描述符,該描述符包含設備支持的2字節(jié)LANGID代碼數組。有關不同字符串描述符的說明,請參閱:–語言ID字符串描述符(表1-32)–制造商ID字符串描述符(表1-1)–產品ID字符串描述符(表1-34)–配置字符串描述符(表1-35)–接口字符串描述符(表1-36)表1-32。語言ID字符串描述符Table1-1.ManufacturerIDStringDescriptorTable1-34.ProductIDStringDescriptorTable1-36.InterfaceStringDescriptor.4USB定制供應商和產品ID當設備ROM代碼通過USB枚舉時,可能需要使用自己的供應商和產品ID,而不是TI默認值。在USB設備枚舉過程中,產品和供應商ID作為USB標準設備描述符的一部分進行傳輸(resp。idProduct和idProduct字段16)。產品ID(PID)和供應商ID(VID)作為設備芯片EFU的一部分存儲,可從控制模塊讀取。無論VID值是未熔合,還是與客戶特定的VID融合,內置USBROM驅動程序的行為都不同。因此,區(qū)分了兩種主要情況:?VID與客戶特定的ID值融合?VID未熔合表1-37列出了標準USBROM設備描述符。表1-38列出了USBROM描述符字符串。(1)VID不是0x0,VID不是0xFFFF,VID不是0x0451(2)VID=0x0或VID=0xFFFF或VID=0x0451表1-37。USBROM標準設備描述符Table1-38.USBROMDescriptorStringsROM代碼作為枚舉過程的一部分傳輸其他描述符:配置描述符、設備限定符、語言ID字符串、配置字符串、接口字符串和函數字符串描述符。這些不依賴于VID或PID值。.5USB驅動程序功能?支持的交易:–控制事務:用于標準設備請求–批量事務:用于圖像下載階段的數據傳輸。ASICID被發(fā)送到大容量輸入端點,圖像通過大容量輸出端點從主機傳輸。設備USB設備首先作為FS設備連接到主機。在復位機制中,USB核心請求HS操作。如果重置階段的HS協(xié)商成功,則進一步的事務處于HS;否則,它們處于FS。復位后,USB驅動程序檢查設備的速度,無論是FS還是HS。根據主機配置的速度,標準USB設備請求將用相應的描述符進行響應。?標準設備請求限制:驅動程序不支持某些標準的設備請求,因為USB驅動程序專用于ROM代碼用于外圍設備引導。表1-39列出了驅動程序支持的標準設備請求。表1-39。支持標準設備請求1.3.6快速外部啟動概述快速外部啟動是一種特殊的內存啟動模式。它包括盲目跳轉到連接到gpmccs0的外部XIP內存設備中的代碼,并讓客戶創(chuàng)建自己的引導代碼。通過SYSBOOT[5:0]引腳選擇快速外部引導。對于快速XIP模式,NOR設備必須滿足以下要求:?非多路復用或地址/數據多路復用模式,通過sysboot[12:11]配置(A/Dmux=0x1)?8位或16位數據總線寬度,通過sysboot[13]配置(16位=1)?CS0芯片選擇?設備等待信號連接到WAIT0GPMC信號(如果使用)?等待監(jiān)視啟用/禁用基于SYSBOOT[10]的值。SYSBOOT[10]值通過硬件方式導出到GPMC。跳轉是用最少的片上ROM代碼執(zhí)行的。快速外部啟動程序圖1-15顯示了快速外部啟動的過程。該代碼不使用任何RAM,是為快速執(zhí)行而設計的。圖1-15??焖偻獠繂映绦?.3.7內存引導概述內存引導過程啟動內存設備中的外部代碼。ROM代碼只能使用內存類型的引導設備作為永久引導設備(也就是說,在冷復位和熱復位之后檢查的設備)。只有在冷復位后才檢查臨時引導設備。支持的永久引導設備包括:?NOR閃存設備?NAND閃存設備?SPI/QSPI閃存?eMMC記憶?SD卡?SATASSD和HDD存儲內存設備代碼跟蹤區(qū)分了兩大類永久引導設備。代碼隱藏是指將代碼從不可直接尋址的設備(非XIP)復制到RAM,在RAM中可以執(zhí)行代碼。可直接尋址的設備是XIP設備。圖1-16顯示了所有類型設備通用的內存引導過程。首先,CH被復制到內部RAM。即使對于XIP設備,也會復制它,因為在CH執(zhí)行期間(例如,在更新接口計時時),設備可能會暫時失去與XIP內存的連接。第二步是對圖像進行陰影處理,如果設備不是XIP。最后一步是圖像執(zhí)行,任何從圖像返回的結果都會導致死循環(huán)。如果CH復制或隱藏失敗,內存引導將返回到主引導過程,主引導過程將選擇下一個設備進行引導。注意:如果扇區(qū)的第一個4字節(jié)字不存在,則認為存在引導映像等于00000000h或FFFFFFFFh。在第一個讀取扇區(qū)(512字節(jié))調用期間,扇區(qū)被復制到臨時設備片上SRAM緩沖區(qū)。一旦找到圖像并且知道目標地址,臨時緩沖區(qū)的內容被移動到目標設備片上SRAM位置,因此需要重新讀取第一圖像扇區(qū)。GP頭沒有復制到目標緩沖區(qū)位置;因此,只有可執(zhí)行代碼在片上設備RAM中,第一個可執(zhí)行指令位于目標地址。SATA、eMMC、SD卡、SPI/QSPI和NAND設備最多可以保存四個啟動映像的副本。因此,ROM代碼通過遍歷大容量存儲空間的第一個塊來搜索四個副本中的一個有效圖像(如果存在的話)。其他XIP設備(NOR)只使用啟動映像的一個副本。圖1-16。內存啟動過程非XIP存儲器圖1-17顯示了使用非XIP內存運行內存引導時使用的過程。著色的過程是特定于每個內存的。ROM代碼在存儲器的前四個物理塊中搜索圖像。其他設備只使用映像的一個副本,塊循環(huán)只運行一次。在圖像跟蹤過程中,CH在初始軟件之前應該在一個單獨的扇區(qū)中。圖1-17。圖像陰影有關GPMC模塊的更多信息,請參閱第15.4節(jié),通用內存控制器。以下各節(jié)介紹支持的設備類型。XIP內存ROM代碼可以直接從XIP設備(如NOR閃存)引導,這些設備具有以下特性:?GPMC是通信接口。?可連接高達1Gbit(128MiB)的存儲器。?8位或16位數據總線寬度,通過sysboot[13]配置(16位=1)?非多路復用或地址/數據多路復用模式,通過sysboot[12:11]配置(A/Dmux=0x1)?GPMC時鐘為11MHz。?設備連接到映射到地址0x08000000的CS0。?等待引腳gpmc_wait0信號根據sysboot[10]配置引腳進行監(jiān)控(=1已啟用)?對于XIP內存引導,不需要用戶干預;下面描述了以下調試步驟。只有非強制性的CH允許用戶更改時鐘設置和GPMC參數。在下一個引導過程中選擇引導設備失敗。從XIP設備啟動包括以下步驟:1配置GPMC以訪問XIP設備。2驗證CH是否存在于地址0x08000000處。如果存在CH,則將整個扇區(qū)(512字節(jié))復制到內部RAM并執(zhí)行CH。三。設置圖像位置:?0x08000000(如果找不到CH)?0x08000200(如果找到CH)4驗證可引導映像是否位于映像位置。5如果找到圖像,請執(zhí)行它。6如果找不到映像,請從XIP引導返回到主引導循環(huán)。.1GPMC初始化表1-40列出了為XIP和其他地址數據可訪問設備設置的GPMC的定時設置。表1-40包含調試信息。(1)一個時鐘周期約為7.5納秒,相當于11兆赫的頻率。表1-40。XIP定時參數在從XIP設備引導之前沒有執(zhí)行特定的標識例程。NANDNAND閃存不是XIP設備;它需要在代碼執(zhí)行之前進行陰影處理。NAND閃存設備的ROM代碼支持具有以下特點:?GPMC是通信接口。?從512兆比特(64兆比特)到64吉比特(8吉比特)的設備?×8和×16總線寬度?支持大頁面大小(2048字節(jié)+64個備用字節(jié))或非常大的頁面大?。?096字節(jié)+128/218備用字節(jié))?僅限CE設備?單級電池(SLC)和多級電池(MLC)設備?基于ONFI或ROM表的設備標識–請注意,不支持完整的ONFI規(guī)范–特別是,NAND幾何標識僅使用第一個參數頁,而不檢查該頁上的CRC?ECC校正:對于大多數設備,每個扇區(qū)8位(對于具有較大備用區(qū)域的設備,每個扇區(qū)16位)–請注意,ECC檢測/校正不用于ONFI參數頁?為NAND訪問調整GPMC計時。?GPMC時鐘為11MHz。?設備連接到CS0。?gpmc_wait0waitpin信號連接到NANDBUSY輸出。?在四個物理塊中搜索圖像。塊大小取決于設備。對于NAND內存引導,不需要用戶干預;以下小節(jié)中的信息用于調試。只有非強制性的CH允許用戶更改時鐘設置和GPMC參數。在下一個引導過程中選擇引導設備失敗。.1初始化和NAND檢測NAND的初始化程序由三部分組成:GPMC初始化、帶參數確定的設備檢測和壞塊檢測。?GPMC初始化GPMC接口配置為可以訪問NAND。因為NAND內存不需要地址總線,所以它被釋放了。數據總線寬度最初設置為8位。如有必要,在確定設備參數后將其更改為16位。表1-41顯示了NAND引導期間使用的GPMC配置。表1-41包含調試信息。表1-41。NAND定時參數?設備檢測和參數ROM代碼首先執(zhí)行設備自動初始化的初始等待(超時250毫秒),并輪詢就緒信息。然后,它必須標識連接到GPMC接口的NAND類型。GPMC使用8位異步模式初始化。NAND設備被重置(命令FFh),其狀態(tài)被輪詢,直到準備好運行(100毫秒超時)。ONFIReadID(命令90h/地址20h)被發(fā)送到NAND設備。如果它用ONFI簽名(4個字節(jié))回復,則發(fā)送一個Readparameters頁面(commandECh)。然后提取表1-42中提供的信息:頁面大小、備用區(qū)域大小、每個塊的頁數、尋址模式和ECC。忽略參數頁流中的其余數據字節(jié)。表1-42。配置參數頁面說明如果ONFIReadID命令失?。ㄈ魏尾恢С諳NFI的設備都會出現(xiàn)這種情況),那么將通過輪詢設備準備就緒(100毫秒超時)再次重置設備。然后,發(fā)送標準的ReadID(命令90h/address00h)。如果設備ID(ID字節(jié)流的第二個字節(jié))被識別為受支持的設備,則從內部ROM代碼表中提取設備參數。表1-43列出了支持的NAND設備。表1-43。支持的NAND設備從表中檢索參數后,頁面大小和塊大小將根據NANDID數據的第四個字節(jié)進行更新。由于制造商之間的不一致性,只有被認為至少為2吉比特的設備才會更新這些參數。因此,ROM代碼支持4-KiB頁設備,但前提是它們的大小,根據表,至少是2吉比特。小于2gib的設備將塊大小參數設置為128KiB(當頁面大小為2KiB時)。表1-44列出了ROM代碼中使用的第四個ID數據字節(jié)編碼。表1-44。第四個NANDID數據字節(jié)圖1-18顯示了檢測程序。當成功檢測到NAND設備時,如果需要,ROM代碼會將GPMC更改為16位總線寬度。圖1-18。NAND設備檢測?壞塊驗證無效塊包含制造商無法保證其可靠性的無效位。這些位在工廠或編程過程中被識別,并在每個塊的第一頁和第二頁的備用區(qū)域的初始無效塊信息中報告。因為ROM代碼在前四個塊中查找圖像,所以它檢測這些塊的有效性狀態(tài)。檢測為無效的塊以后將不被訪問。塊有效性狀態(tài)在塊的前兩頁的空閑區(qū)域進行編碼(對于8位設備,第一字節(jié)等于第一頁和第二頁中的FFh;對于16位設備,第一個字等于第一頁和第二頁中的FFFFh)。圖1-19顯示了無效塊檢測程序。例行程序包括讀取備用區(qū)域和檢查有效性數據模式。圖1-19。錯誤NAND–無效塊檢測.2NAND讀扇區(qū)程序在引導過程中,ROM代碼從NAND設備讀取512字節(jié)扇區(qū)。在兩種情況下讀取失?。?訪問的扇區(qū)位于標記為無效的塊中。?訪問的扇區(qū)包含ECC無法糾正的錯誤。ROM代碼使用正常讀取(命令00h30h)來讀取NAND頁數據。頁數據可能包含內存更改導致的錯誤。ROM代碼使用ECC校正算法來檢測并可能糾正這些錯誤。使用GPMC和ELM硬件應用的默認ECC校正是BCH8b/扇區(qū)。對于設備ID代碼D3h、C3h、D5h、C5h、D7h、C7h、DEh和CEh,當制造商代碼(第一個ID字節(jié))為98h時,在ID數據的第四個字節(jié)中檢查單元類型信息。如果等于10b,則應用的ECC校正為BCH16b/扇區(qū)。BCH數據由GPMC在讀取每個512字節(jié)扇區(qū)時自動計算。計算出的ECC與存儲在相應頁的備用區(qū)域中的ECC進行比較。根據頁面大小,存儲在相應空閑區(qū)域中的ECC數據字節(jié)量是不同的。圖1-20和圖1-21分別顯示了2-KiB和4-KiB設備備用區(qū)域內ECC數據的映射。如果兩個ECC數據相等,readsector函數將無錯誤地返回讀取的512字節(jié)扇區(qū)。否則,ROM代碼會嘗試更正相應扇區(qū)中的錯誤(此過程由ELM硬件協(xié)助,如果成功,則返回數據。如果錯誤不可更正,則函數返回FAIL。圖1-20。2-KiB頁和8bBCH編碼的ECC數據映射圖1-21。4-KiB頁和16bBCH編碼的ECC數據映射SPI/QSPI閃存設備SPI/QSPI閃存為空間、引腳和功率有限的系統(tǒng)提供了一種存儲解決方案。SPI/QSPI設備的ROM代碼支持具有以下特點:?24位尋址,高達128Mbit(16MiB),無銀行業(yè)務?CS0上的QSPI1是通信接口?使用模式3:–時鐘非活動狀態(tài)=高–在時鐘上升沿捕獲數據輸入–時鐘下降沿產生的數據輸出?配置端口模式下48MHz的QSPI4位數據讀取模式–Read命令為0x6B(快速四重讀?。?,3個地址字節(jié),1個虛擬字節(jié),讀取類型為QuadRead–ROM將不執(zhí)行任何四元啟用序列或組寄存器更新?配置端口模式下12MHz下的SPI1位數據讀取模式–讀取命令為0x03(單次讀?。?個地址字節(jié),0個虛擬字節(jié),讀取類型為正常讀取。?SPI/QSPI閃存上最多可存儲四個冗余圖像。它們之間的偏移量在sysboot[7:6]中設置,如表1-8所述。如果不使用冗余的SBL特性,sysboot[7:6]中設置的偏移量是不重要的。當第一個4字節(jié)字不等于00000000h或FFFFFFFFh時,認為存在引導映像。注:ROM代碼不執(zhí)行任何特定的動作來檢測、重置或通電QSPI設備。假設QSPI正確通電,并在每次嘗試用ROM代碼引導。eMMC存儲器和SD卡該設備允許從分別連接到設備嵌入式MMC2或MMC1控制器I/o的eMMC嵌入式存儲器或SD卡引導。引導接口是通過配置SYSBOOT管腳來選擇的。設備高速MMC/SD/SDIO主機控制器處理物理層,而ROM代碼處理簡化的邏輯協(xié)議層(只讀協(xié)議)。在ROM代碼中實現(xiàn)了有限范圍的命令。SD卡接口支持1.8V/3V數字I/O。I/O電壓電平的選擇使用PBIAS電路完成。在與SD卡設備進行任何通信之前,由ROM代碼和PBIAS單元電壓設置感測PBIAS基準電平。eMMC接口也支持1.8V/3V數字I/O,但區(qū)別在于沒有PBIAS電路來選擇I/O電壓電平。此電壓僅取決于提供給eMMC相關電源板的電壓。設備支持三種啟動模式:?Raw(引導):在Raw模式下從一個可選分區(qū)讀取引導映像(此模式也稱為備用引導操作模式,僅適用于eMMC)。?Raw(UDA):從用戶數據區(qū)(eMMC和SD)讀取引導映像。?文件系統(tǒng)(帶或不帶主引導記錄的FAT12/16/32):從用戶數據區(qū)(eMMC和SD)文件系統(tǒng)內的引導文件讀取映像數據。注意:只有在eMMC用戶區(qū)引導時才支持文件系統(tǒng)模式。不支持在eMMC引導區(qū)。.1eMMC存儲器ROM代碼支持從eMMC內存引導,條件如下:?符合嵌入式多媒體卡(eMMC)eMMC/卡產品標準的eMMC存儲設備,高容量,包括可靠的寫入引導和休眠模式,雙數據速率,多分區(qū)支持,以及MMCA技術委員會的安全增強v4.5。例外情況是硬件重置功能。例如,如果用戶軟件需要eMMC設備硬件重置,則可以使用GPIO來完成。為了在使用替代引導操作模式時正確地從eMMC引導,建議將eMMC設備的RST_N信號與平臺熱復位綁定。?eMMC設備連接到設備MMC2控制器I/O接口(只有一個設備可以連接到總線)。?eMMC存儲設備由PMIC或其他電源外部供電。?從用戶區(qū)引導時:初始(默認)1位SDR模式,可選的4位和8位SDR-和DDR模式,使用配置頭?支持初始SDR和DDR模式?從用戶區(qū)啟動時的時鐘頻率:–識別模式:400kHz–數據傳輸模式:10兆赫,可根據配置報頭選擇高達48兆赫–支持eMMC引導分區(qū)。從引導分區(qū)(BPs)引導eMMC,這是在可選引導操作模式下引導的典型方式,它總是在8位、48mhz、DDR下完成。.1.1系統(tǒng)條件和限制在使用帶電平移位器的MMC接口2的情況下,ROM代碼不提供總線方向控制信令。注:ROM代碼不支持最新標準中定義的大型4-KiB扇區(qū)。ROM代碼要求eMMC設備由外部供電,在進入引導過程時電源已設置并穩(wěn)定。ROM代碼支持特定于eMMC設備的可選引導操作模式,如eMMC標準的分區(qū)管理和引導操作模式部分所述。它不支持同一文檔中描述的硬件引導操作模式(命令行在74個emmc時鐘周期內保持低位)。.1.2eMMC內存連接eMMC設備通常需要兩個電源:一個用于核心內存陣列(VCC),另一個用于設備接口I/O和控制器(典型VCCQ=1.8V)。兩個存儲設備電源引腳可以合并為一個,因此只需要一個電源。圖1-22顯示了PMIC、內存設備和設備之間的系統(tǒng)連接示例。圖1-22。eMMC連接注意:為了在使用替代引導操作模式時正確處理eMMC引導分區(qū),它建議將eMMCRST?N信號與表示平臺溫度的信號相連重置(nRESWARM)。ROM代碼根據所選的系統(tǒng)引導配置,執(zhí)行必要的I/O引腳復用配置,以路由eMMC焊盤上的MMC2I/O信號。.2SD卡ROM代碼支持在以下情況下從SD卡引導:?SD卡符合SD協(xié)會的SD規(guī)范第1部分物理層規(guī)范版本4.00和SD規(guī)范第2部分文件系統(tǒng)規(guī)范版本3.00。這些包括低(SDSC)和大容量(SDHC)卡。?SD卡連接到MMC1控制器I/O??偩€上只允許連接一張卡。?3VVCC電源?3-V或1.8-V輸入/輸出電壓?初始1位MMC模式,可選4位模式?時鐘頻率:–識別模式:400kHz–數據傳輸模式:10MHz(根據配置頭,可選擇高達19.2MHz).2.1系統(tǒng)條件和限制盡管ROM代碼標識SDXC卡,但它不處理其特殊性,例如exFAT支持。它既不支持UHS-I也不支持UHS-II速度等級。.2.2SD卡連接SD卡可以連接到SD卡接口,通常是通過卡盒。圖1-23顯示了電源IC、卡和設備之間的典型連接。圖1-23。存儲卡/SD卡連接.2.3引導程序如果所選的引導設備是eMMC,則嘗試第一次嘗試觸發(fā)替代引導操作模式。如果eMMC設備在固定的超時內響應,則直接從本地EXT中指定的一個可能的分區(qū)檢索引導映像_CSD.BOOT_分區(qū)啟用eMMC設備的位字段(這稱為原始(引導)模式)。Raw(引導)模式通過避免常規(guī)的eMMC/SD識別階段(通常在低速下完成)來縮短引導時間。啟動映像時被檢索時,ROM代碼繼續(xù)引導過程。如果超時時間過去了,則ROM代碼繼續(xù)正常識別。SD卡不支持可選的引導操作模式,因此總是經過正常的識別。如果正常識別成功,則它接下來確定SD卡或eMMC設備是否包含已知的文件系統(tǒng)。如果文件系統(tǒng)已知,則從文件系統(tǒng)層次結構中提取引導映像。如果未檢測到文件系統(tǒng),則假定為原始(UDA)模式。圖1-24是eMMC和SD引導過程的高級流程圖。圖1-24。eMMC和SD引導.2.4可選引導操作模式下的eMMC分區(qū)處理為了觸發(fā)替代啟動操作模式,ROM代碼發(fā)送一個特定的CMD0+參數0xFFFFFFFA。然后,ROM代碼等待長達50毫秒,等待eMMC設備返回引導確認信號。如果超時時間過去,那么ROM代碼將跳過可選的引導操作模式。從eMMC分區(qū)引導可以在48mhz,DDR的8位模式下完成。此配置是靜態(tài)的,無法更改。.2.4.1eMMC設備預飛為了在可選引導操作模式下正確處理eMMC分區(qū),有必要在閃爍時間準備eMMC設備,并將以下設置應用于設備EXT_CSD寄存器:?啟動確認和啟動分區(qū)啟用字段必須相應更新(EXT_CSD[179],位6和位[5:3]),激活引導確認信號并選擇從中引導的分區(qū)。中有多個啟動選項可供選擇啟動分區(qū)啟用位字段,如下所示:–從引導分區(qū)1(BP1)引導–從引導分區(qū)2(BP2)引導–從用戶區(qū)啟動有關更多詳細信息,請參閱eMMC標準文檔。?必須啟用RST_N以正確處理熱復位情況(EXT_CSD[162]位[1:0]=0x1)。?啟動總線寬度字段(EXT_CSD[177])必須根據設備備用引導操作進行正確更新:8位,48MHz,DDR模式。?可選地,可以更新BOOT_CONFIG_PROT(EXT_CSD[178])以更改訪問對所選分區(qū)的權限。注意:雖然可以從用戶區(qū)域進行其他引導,但是可以從BP1或BP2進行替代引導推薦。注意:可以通過使用永久或臨時鎖定引導配置啟動配置保護寄存器。有關更多詳細信息,請參閱eMMC標準文檔。注:?強烈建議參考eMMC標準,了解EXT_CSD處理的詳細信息。?使用eMMC標準中詳述的開關命令更新EXT_CSD。?上述EXT_CSD字段在斷電后保留,因此只需要一個“閃爍”階段.2.4.2ROM代碼執(zhí)行后eMMC設備狀態(tài)如果備用引導操作模式成功,并且正確檢索了引導映像,那么即使在執(zhí)行已傳遞給初始軟件之后,eMMC設備狀態(tài)仍保持在引導狀態(tài)。初始軟件必須使設備脫離引導狀態(tài)。.2.4.3設備全局熱復位考慮一旦系統(tǒng)啟動并在設備級觸發(fā)熱復位(可通過熱復位按鈕、定時器、看門狗等觸發(fā)),重要的是eMMC設備應正確進入預空閑狀態(tài),以便下一次替代引導操作成功。這是由要連接到設備rstoutn引腳(熱復位)的eMMCRST_N引腳來保證的。不這樣做會使引導過程在熱復位后失敗。.2.4.4引導映像大小在Raw(引導)模式下,引導映像的大小是在第一個扇區(qū)讀取訪問之后確定的。引導映像大小包含在GP頭文件中。這可以確保ROM代碼只檢索所需大小的數據,而不是分區(qū)的全部內容。.2.4.5引導映像布局在Raw(引導)模式下,只保留一個引導映像的副本,而在Raw(UDA)模式下最多保留四個副本。.3初始化和檢測如果eMMC備用引導操作超時失敗,或者請求的引導設備是SD卡,則ROM代碼將使用eMMC的1.8V和SD卡I/O的標準高壓范圍(3.0V)初始化eMMC和SD卡接口上連接的存儲設備或卡。如果沒有檢測到卡或存儲設備,ROM代碼將移動到下一個引導設備。執(zhí)行標準識別過程和相關卡地址(RCA)分配。ROM代碼假定總線上只連接了一個存儲器或卡。這是通過使用SD和eMMC內存設備的命令行來完成的。eMMC和SD標準將此階段描述為初始化階段。它們所涉及的命令不同,如圖1-26所示。ROM代碼使用CMD55區(qū)分eMMC和SD卡;也就是說,CMD55僅受SD標準支持。取決于是否收到響應,發(fā)送ACMD41(用于SD的CMD55和CMD41的組合)或CMD1(用于MMC)。如果這次沒有收到響應,則沒有連接任何設備,并且ROM代碼退出eMMC/SD引導失敗。圖1-25顯示了eMMC/SD檢測程序。圖1-25。SD/eMMC檢測程序(第1部分)圖1-26顯示了eMMC/SD檢測程序。圖1-26。SD/eMMC檢測程序(第2部分)圖1-27顯示了eMMC/SD檢測程序。圖27-1。SD/eMMC檢測程序(第3部分).4讀取扇區(qū)程序eMMC或SD卡的內容可以格式化為原始二進制(稱為raw(UDA))或在FAT文件系統(tǒng)中。ROM代碼從原始映像或文件系統(tǒng)中的引導文件中讀取扇區(qū)并從中引導。?原始模式在Raw(UDA)模式下,圖像可以位于主區(qū)域中的四個連續(xù)位置之一:偏移量0x0(0KiB)/0x20000(128KiB)/0x40000(256KiB)/0x60000(384KiB)。因此,啟動映像的大小不能超過128kib。然而,具有大于128kib的圖像的設備可以從上述位置之一開始閃光。因此,ROM代碼不檢查圖像大小。唯一的缺點是圖像跨越了后續(xù)的圖像邊界。通過讀取扇區(qū)0、256、512和768來檢測原始模式。對這些部門的內容進行驗證,以確定是否存在目錄結構。GP頭必須位于引導映像的開頭,如第節(jié)配置標題所述。圖像數據直接從卡的連續(xù)扇區(qū)讀取。如果未檢測到原始模式,則假定為文件系統(tǒng)模式。?文件系統(tǒng)處理讀取扇區(qū)過程使用標準SD/eMMC讀取數據過程。扇區(qū)地址是根據初始化期間收集的引導內存文件映射生成的。因此,ROM代碼可以自由地尋址引導文件空間中的扇區(qū)。.5文件系統(tǒng)處理eMMC/SD卡可以保存ROM代碼讀取的文件系統(tǒng)。引導過程使用的映像來自名為MLO的引導文件。此文件必須位于FAT12/16或FAT32類型的活動主分區(qū)的根目錄中。eMMC/SD卡可以配置為軟盤式或硬盤式:?當作為軟盤時,卡的內容是一個單一的FAT12/16/32文件系統(tǒng),沒有MBR保存分區(qū)表。?當充當硬盤驅動器時,MBR出現(xiàn)在卡的第一個扇區(qū)中。這個MBR保存一個分區(qū)表,其中一個分區(qū)必須是FAT12/16/32,primary和active。根據MMCA技術委員會的多媒體卡FAT16文件系統(tǒng)規(guī)范,該卡必須始終具有MBR,除非使用類似軟盤的文件系統(tǒng)。但是,根據所使用的操作系統(tǒng),eMMC/SD卡的格式有無分區(qū)(使用MBR)。ROM代碼支持兩種類型:軟盤式或硬盤式。ROM代碼從FAT檢索引導文件的映射。引導文件映射是與引導文件相關的所有FAT條目的集合(FAT條目指向包含該文件一部分的集群)。引導過程使用這個映射來訪問引導文件中的任何512字節(jié)扇區(qū),而不涉及ROM代碼FAT模塊。圖1-28顯示整個過程。圖1-28。SD/MMC獲取引導文件.5.1MBR和FAT文件系統(tǒng)本段描述了ROM代碼用來識別是否使用帶有FAT的MBR的函數。它并不打算完全描述MBR和FAT文件系統(tǒng)的檢測和讀取過程。ROM代碼可以檢測FAT12/16/32分配表類型。它無法在具有NTFS或Linux?FS分區(qū)的設備上啟動。一些支持文件系統(tǒng)的存儲設備可以使用或不使用MBR進行格式化;因此,ROM代碼的第一個任務是檢測設備是否在第一個扇區(qū)中保存MBR。MBR是內存設備的第一個扇區(qū)。它由可執(zhí)行代碼、四個分區(qū)條目和一個簽名組成。這種結構的目的是將硬盤劃分為主要用于引導不同系統(tǒng)(例如,MicrosoftWindows?)的分區(qū)。表1-45描述了這種結構,表1-46描述了分區(qū)表條目。表1-45。主引導記錄結構Table1-46.PartitionTableEntrySD/eMMC引導包括以下步驟:1MBR檢測ROM代碼首先檢查MBR簽名是否存在,然后根據Type字段在所有四個MBR分區(qū)條目中搜索一個活動的FAT12/16/32分區(qū)。如果MBR條目無效,或者沒有找到可用的分區(qū),ROM代碼將返回到引導過程失敗了未選中擴展分區(qū);引導文件必須位于主分區(qū)中。檢查每個分區(qū)條目以確定以下內容:a、如果分區(qū)類型設置為00h,則條目中的所有字段都必須為00h。b、分區(qū)在物理邊界內(也就是說,分區(qū)在里面,它適合整個物理扇區(qū))。有關MBR檢測的更多信息,請參見圖1-29。圖1-29。MBR檢測程序2獲取MBR分區(qū)。一旦識別出來,ROM代碼使用圖1-29中描述的過程獲得分區(qū)。分區(qū)類型檢查為FAT12/16或FAT32。其狀態(tài)必須為00h(非活動)或80h(活動)。如果沒有找到活動的主FAT12/16/32,ROM代碼返回FAIL;如果有多個活動分區(qū),則測試失敗。如果找到一個活動分區(qū),它的第一個扇區(qū)將被讀取并在以后使用。如果不存在MBR(對于類似軟盤的系統(tǒng)),將讀取設備的第一個扇區(qū)并在以后使用。讀取扇區(qū)被檢查為有效的FAT12/16或FAT32分區(qū)。如果失敗,如果使用另一個分區(qū)類型(例如,LinuxFS)或分區(qū)無效,ROM代碼將返回FAIL。FAT文件系統(tǒng)由幾個部分組成:?引導扇區(qū),保存BIOS參數塊(BPB)。不是所有的都被ROM代碼使用。?FAT,描述了每個分區(qū)簇的使用情況?數據區(qū),保存文件、目錄和根目錄(對于FAT12/16,根目錄有一個特定的固定位置)為了檢查扇區(qū)是否擁有有效的FAT12/16/32分區(qū),需要檢查引導扇區(qū)(所有FAT類型都使用)中需要特定值的許多字段。圖1-30顯示了獲取分區(qū)的更多信息。圖1-30。MBR,獲取分區(qū)三。找到引導文件。當找到分區(qū)時,將在根目錄條目中搜索FAT12/16/32文件系統(tǒng)根目錄中名為MLO的引導文件。不會在任何其他位置搜索該文件。對于FAT12/16文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論