国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

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

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

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

聯(lián)系客服