欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
一種SD/MMC存儲器啟動(dòng)方案在SoC中的設計與實(shí)現
作者:葛偉 劉新寧    來(lái)源:電子設計應用2009年第2期
引言
SD/MMC存儲器以其成本低廉、存儲容量大、性能優(yōu)良、安全性高等特點(diǎn)越來(lái)越廣泛地應用于便攜式設備和家用電子設備。目前很多移動(dòng)嵌入式產(chǎn)品采用了外置Nor Flash作為Boot Flash外加SD存儲器作為擴展存儲容量的系統方案,或者利用芯片的管理與非器件和MMC存儲器進(jìn)行啟動(dòng)的方法,這些傳統的啟動(dòng)方案都會(huì )使用到兩種或以上的存儲介質(zhì),大大增加了芯片互聯(lián)的不穩定性,增大了系統面積和成本。本文全面考慮嵌入式芯片啟動(dòng)過(guò)程中涉及到的軟、硬件問(wèn)題,基于A(yíng)MBA總線(xiàn)架構,通過(guò)硬件語(yǔ)言設計、軟件仿真,以及FPGA驗證,設計實(shí)現了一種基于SD/MMC存儲器的直接啟動(dòng)方案,使得設計者可以使用SD/MMC作為單一的、非易失性的存儲介質(zhì),使系統的成本更低、性能更優(yōu)、擴展性更強。
系統架構及軟、硬件設計
SoC的啟動(dòng)設計是一個(gè)系統且復雜的過(guò)程,需要根據總線(xiàn)技術(shù)綜合考慮構建整個(gè)系統架構。本文中SD/MMC存儲器的直接啟動(dòng)方案基于A(yíng)MBA總線(xiàn)架構,除了設計SD/MMC啟動(dòng)控制器,還需要協(xié)調內核、ESRAM(片上存儲器)、EMI(外部存儲器接口)、PMU(功耗管理單元)、DMA(直接存儲器存取)等完成整個(gè)啟動(dòng)過(guò)程。如圖1所示,內核、ESRAM、EMI連接在高速AHB總線(xiàn)上,DMA模塊實(shí)現數據在外設和存儲器之間的直接傳輸,PMU和INTC(中斷控制器)連接在A(yíng)PB總線(xiàn)上,SD/MMC控制器實(shí)現對SD/MMC存儲介質(zhì)的操作。
圖1    SD/MMC直接啟動(dòng)系統架構框圖
直接啟動(dòng)方案由軟、硬件兩部分組成,對SD/MMC存儲介質(zhì)完成初始化之后由DMA控制器將啟動(dòng)代碼載入到芯片內置存儲空間ESRAM,并且將ESRAM映射到零地址,內核開(kāi)始執行指令;軟件代碼實(shí)現系統的啟動(dòng)配置,完成硬件初始化,設置中斷向量表,配置系統時(shí)鐘、中斷控制器、內存控制器、DMA控制器等,并且完成堆棧設置以及地址重映射等功能。
系統架構的設計
為了成功實(shí)現從SD/MMC存儲器的啟動(dòng),在整個(gè)硬件系統中考慮以下幾個(gè)方面的實(shí)現:
1. 對于不同的啟動(dòng)模式,在上電復位以后,需要對AMBA總線(xiàn)的地址譯碼電路進(jìn)行不同的設計,實(shí)現不同的零地址映射。
2. 在功耗管理模塊中應保證系統啟動(dòng)時(shí)與啟動(dòng)相關(guān)的功能模塊如ESRAM、DMA、SD/MMC控制器的時(shí)鐘是默認打開(kāi)的。
3. SD/MMC存儲器在上電之后需要進(jìn)行初始化配置,因而在上電之后,默認由DMA控制總線(xiàn),直到完成數據載入的傳輸之后釋放總線(xiàn),CPU核從零地址開(kāi)始執行程序。
4. 由于啟動(dòng)過(guò)程中涉及到通過(guò)DMA實(shí)現代碼的搬運,因而DMA的初始參數配置和時(shí)序配置應滿(mǎn)足完成代碼傳輸的需要。
5. 由于SD/MMC啟動(dòng)對于程序員的設計而言是一個(gè)黑盒子,因而在保證啟動(dòng)控制器設計穩定性的同時(shí),應該考慮設計中友善的接口,在啟動(dòng)失敗時(shí)應有指示信號以便于程序員調試。
啟動(dòng)方案的硬件設計
SD/MMC控制器的頂層設計如圖2所示,為了實(shí)現上電啟動(dòng)以后,SD/MMC控制器模塊對SD/MMC存儲器的初始化以及數據載入,在已有的代碼基礎上加入SD/MMC啟動(dòng)控制器,新建SD/MMC_頂層設計實(shí)現兩個(gè)模塊的連接。作為整個(gè)芯片設計的啟動(dòng)方案之一,模塊設計中采用Boot_en信號作為使能信號,并在啟動(dòng)失敗時(shí)輸出Boot_error信號作為芯片調試信號。
圖2    SD/MMC控制器的頂層設計
硬件設計的啟動(dòng)控制器對存儲卡進(jìn)行初始化,并且通過(guò)初始化過(guò)程中存儲卡對初始化命令的不同響應,判斷存儲卡的種類(lèi),完成單線(xiàn)多塊(4K)數據的傳輸。
圖3     硬件啟動(dòng)控制器的狀態(tài)轉換圖
硬件啟動(dòng)控制器的狀態(tài)轉換如圖3所示,在系統上電復位和時(shí)鐘穩定之后,硬件啟動(dòng)控制器進(jìn)入BOOT_IDLE狀態(tài)對Boot_en信號采樣,當信號有效則進(jìn)入START狀態(tài),否則進(jìn)入IDLE狀態(tài);在START狀態(tài)首先檢查是否有SD/MMC卡連接在卡槽上,之后完成模塊輸入時(shí)鐘配置、清除狀態(tài)寄存器、更新輸出時(shí)鐘等操作,此時(shí)應注意將初始化過(guò)程中的輸出時(shí)鐘頻率設定在低于400kHz;在完成以上設置之后發(fā)送CMD0命令,應考慮到在上電后存儲卡需要初始化延時(shí)(74個(gè)輸出時(shí)鐘周期,最大時(shí)間不超過(guò)1ms),因而在CMD0發(fā)送之前等待80個(gè)時(shí)鐘時(shí)鐘周期;由于CMD0沒(méi)有返回值,因而在命令發(fā)送完成后需要等待至少8個(gè)輸出時(shí)鐘周期,進(jìn)入CRESET_SDAPPCMD狀態(tài),發(fā)送CMD55命令,如果接收到響應,則表示SD卡連接在卡槽上,進(jìn)入CRESET_SDOPCOND狀態(tài),繼續完成ACMD41命令的發(fā)送,倘若命令發(fā)送超時(shí),說(shuō)明卡槽中連接的是MMC卡,進(jìn)入CRESET_MMC狀態(tài)發(fā)送CMD1命令;對ACMD41或者CMD1在命令線(xiàn)上返回的OCR寄存器值,如果包含Busy位(置0),表示顯示卡仍然在上電啟動(dòng)或者重啟過(guò)程,還沒(méi)有為后面的初始化準備好通信,需要重新發(fā)送命令,直到Busy位被清除(置1),進(jìn)入READY狀態(tài)。
對于單張卡,上電啟動(dòng)過(guò)程的最大周期不可以超過(guò)1s,所以當命令返回錯誤的時(shí)間或者Busy未被清除的時(shí)間超過(guò)1s時(shí),則判定啟動(dòng)過(guò)程失敗,進(jìn)入IDLE狀態(tài)并且顯示Boot_error;在READY狀態(tài)發(fā)送CMD2命令,獲取存儲卡的CID信息,之后進(jìn)入IDENT狀態(tài),針對已經(jīng)判定的存儲卡類(lèi)型,對SD存儲卡發(fā)送CMD3命令獲取RCA,對MMC存儲卡則通過(guò)CMD3命令指定RCA;當完成CMD3的發(fā)送后,狀態(tài)機進(jìn)入STANDBY狀態(tài),此時(shí)可以更新輸出時(shí)鐘,使存儲卡工作于更高的工作頻率,并發(fā)送CMD7命令將存儲卡的狀態(tài)由等待(stand_by)轉換到傳輸(transfer);在TRANS狀態(tài),設置SD/MMC控制器的發(fā)送FIFO和接收FIFO閾值、發(fā)送數據的大小,并發(fā)送CMD17及CMD12用于傳輸4K數據,如果數據傳輸過(guò)程中出現數據CRC校驗錯誤或讀數據超時(shí),將會(huì )顯示Boot_error。
表1    SD/MMC啟動(dòng)控制器的發(fā)送命令
整個(gè)啟動(dòng)過(guò)程中涉及到的SD/MMC命令如表1所示。
圖4     軟件啟動(dòng)流程
啟動(dòng)方案的軟件流程
方案的軟件啟動(dòng)流程如圖4所示,在SD/MMC控制器完成數據的載入之后,CPU核獲得AMBA總線(xiàn)的控制權,開(kāi)始執行啟動(dòng)程序。首先在零地址讀取中斷向量異常表,顯示切換到SVC模式,這時(shí)應該禁止所有中斷,包括中斷控制器的IRQ和FIQ中斷,以及屏蔽CPU核中的中斷使能位。由于啟動(dòng)數據載入之后,SD/MMC控制器和DMA控制器會(huì )指示出相應中斷狀態(tài),此時(shí)應先清除中斷狀態(tài),再配置PMU和EMI控制器,使系統切換到正常工作狀態(tài)。此時(shí)可以從SD/MMC存儲器將體積更大的可執行鏡像文件載入到速度和容量更大的DDRAM中,配置重映射寄存器之后,在新的存儲介質(zhì)DDRAM中運行可執行文件。
仿真結果及FPGA驗證
用RTL級的Verilog HDL實(shí)現硬件代碼,并完成啟動(dòng)軟件的設計后,采用兩種方式對設計進(jìn)行了功能和時(shí)序的驗證。一是使用Synopsys公司的EDA工具VCS進(jìn)行了模擬測試,二是在FPGA上進(jìn)行物理驗證測試。
圖5    硬件初始化及數據載入仿真波形圖
軟件模擬
進(jìn)行模擬時(shí),采用系統級仿真,通過(guò)加載可執行的二進(jìn)制代碼,仿真整個(gè)系統啟動(dòng)過(guò)程的實(shí)際環(huán)境。由于受仿真模型的限制,在測試過(guò)程中需要將可執行的代碼寫(xiě)入SD/MMC Model,然后重新啟動(dòng)系統。在重置RESET信號的同時(shí),更改系統啟動(dòng)模式,如圖5所示, 在15000000ns時(shí)刻,系統重置,SD/MMC啟動(dòng)控制器在完成對卡的初始化之后,在18000000ns時(shí),DMA開(kāi)始數據載入。
圖6    軟件啟動(dòng)仿真波形圖
圖6所示,在30400000ns,數據傳輸完成,AMBA的控制權由DMA(圖6中hgrant_m8)轉交給CPU內核(圖6中hgrant_m1),在完成系統的初始化配置之后,再次從SD/MMC存儲器中讀出可執行的工程鏡像或內核操作代碼。由仿真波形可見(jiàn),模擬結果正確,滿(mǎn)足設計要求。
物理驗證
受實(shí)驗條件所限,在FPGA驗證過(guò)程中采用Altera公司Nios II嵌入式處理器,通過(guò)Avalon-AHB模塊將處理器接口的Avalon總線(xiàn)信號轉換到AHB總線(xiàn),盡可能保證物理實(shí)驗與仿真環(huán)境的一致性。去掉功耗控制器而簡(jiǎn)單的采用PLL倍頻提供系統時(shí)鐘,另外由于EMI控制模塊涉及到FPGA中不可實(shí)現的專(zhuān)用時(shí)鐘電路,因而實(shí)驗中省略了外部存儲器模塊和地址重映射過(guò)程,主要側重于數據傳輸和Boot Loader的驗證。
圖7     FPGA驗證平臺構架框圖
FPGA驗證平臺采用Altera Stratix II FPGA和外接SD/MMC卡槽,存儲卡采用Kingston公司的SD卡和Kingmax公司的MMC卡,如圖7所示。采用Synplify Pro綜合,Quartus II 作為下載工具。
表2      Quartus綜合報告
如表2所示,原始控制器中增加SD/MMC啟動(dòng)控制器所占用的資源不超過(guò)20%,即可獲得一種高效的啟動(dòng)方式。
FPGA調試中采用8MHz系統時(shí)鐘,在9ms內完成載入4KB啟動(dòng)代碼,通過(guò)向監視寄存器中寫(xiě)入標志位,判定系統啟動(dòng)負載過(guò)程運行正常,通過(guò)對比載入前后的啟動(dòng)代碼,可以判定整個(gè)硬件啟動(dòng)代碼載入正確。通過(guò)FPGA板級硬件調試證明,設計啟動(dòng)方案功能正確,驗證結果滿(mǎn)足設計需求。
結語(yǔ)
通過(guò)軟件仿真和FPGA驗證,基于SD/MMC單一存儲器的啟動(dòng)方案能夠正確的實(shí)現代碼載入和程序啟動(dòng),啟動(dòng)速度和效率都能滿(mǎn)足工程需求,在SoC中實(shí)現了低成本、高效率的直接啟動(dòng)。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux設備驅動(dòng)子系統SD
linux sd卡驅動(dòng)分析,基于mini2440,sdio mmc sd卡驅動(dòng)編寫(xiě)(轉)
嵌入式Linux之我行——S3C2440上MMC/SD卡驅動(dòng)實(shí)例開(kāi)發(fā)講解(一) - 內核、驅動(dòng)開(kāi)發(fā)篇 -
SD/MMC/SDIO 概念區分
深入理解SD卡基礎原理以及內部結構的總結
TransFlash存儲卡在嵌入式系統調試中的應用http://www.21ic.com/app/embed/201304/179983.htm
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久