www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式系統(tǒng)的SD控制器設(shè)計(jì)實(shí)現(xiàn)

引言

  在目前的掌上電腦等嵌入式系統(tǒng)中,SD(securedigital)卡以其體積小和引腳數(shù)少的優(yōu)勢(shì),提供了比CF更好的外部設(shè)備擴(kuò)展解決方案。因此,如何在系統(tǒng)中集成SDHost控制模塊,以及在嵌入式操作系統(tǒng)里面實(shí)現(xiàn)其驅(qū)動(dòng)程序,都是目前嵌入式系統(tǒng)設(shè)計(jì)者要考慮的問(wèn)題。
 

        本文實(shí)現(xiàn)所采用的開發(fā)平臺(tái)是基于SAMSUNG公司的S3C2410AARM微處理器,利用處理內(nèi)部的SD控制模塊,采用GPIO擴(kuò)展的方法實(shí)現(xiàn)SDHost控制器。

        使用S3C2410A的SD控制模塊,通過(guò)對(duì)GPIO功能的擴(kuò)展來(lái)完成SD的檢測(cè)和寫保護(hù)的功能,實(shí)現(xiàn)SDHost控制器相對(duì)比較靈活。在進(jìn)行驅(qū)動(dòng)程序開發(fā)過(guò)程中,對(duì)SD卡檢測(cè)進(jìn)行防抖動(dòng)處理是必要的,必須根據(jù)系統(tǒng)電路特性來(lái)確定合適的檢測(cè)時(shí)機(jī),在驅(qū)動(dòng)程序里面實(shí)現(xiàn)防抖動(dòng)處理,保證整個(gè)系統(tǒng)的效率。

  1 SDHost硬件設(shè)計(jì)

  SCDA1A0100是ALPS公司生產(chǎn)的SD卡連接插槽,采用高可用的滑動(dòng)觸點(diǎn)開關(guān),能夠準(zhǔn)確地檢測(cè)到卡插入的時(shí)機(jī)。

  通過(guò)小型化和薄型化設(shè)計(jì),已經(jīng)廣泛應(yīng)用于PDA,數(shù)碼相機(jī)和個(gè)人電腦。當(dāng)插槽有SD卡插入時(shí),SD卡會(huì)觸動(dòng)槽內(nèi)的觸點(diǎn)開關(guān),引起卡的檢測(cè)引腳和寫保護(hù)引腳的相應(yīng)電平變化。

  Samsung的S3C2410A內(nèi)部支持SDHost的控制模塊,有SDHost控制寄存器和可以用于SDHost控制器的IO引腳,可用編程的方法對(duì)其功能進(jìn)行選擇;但對(duì)于SD卡的檢測(cè),寫保護(hù)和插槽的電源使能等功能沒(méi)有專門的引腳。在本文實(shí)現(xiàn)中,對(duì)于卡檢測(cè)、電源引腳,通過(guò)GPIO擴(kuò)展來(lái)實(shí)現(xiàn)。部分引腳定義如表1所示。

  表1 S3C2410A部分GPIO引腳功能定義

  

 

  S3C2410A的GPIO引腳分為GPA,GPB等8組,每組的IO引腳有控制寄存器(GPxCON),數(shù)據(jù)寄存器(GPxDAT),Pull-Up寄存器(GPxUP)進(jìn)行控制。每根引腳所在的GPxCON里有對(duì)應(yīng)位控制其功能,通過(guò)對(duì)GPxCON編程來(lái)控制其功能,某一時(shí)刻,該引腳只能使用一種功能。

  對(duì)于SD卡檢測(cè)引腳,需要配置成外部中斷源(EINTx),對(duì)應(yīng)的EXTINT0,EXTINT1和EXTINT2寄存器控制該中斷源的觸發(fā)模式:低電平觸發(fā),高電平觸發(fā),前沿觸發(fā),后沿觸發(fā)或是前后沿觸發(fā)。

  S3C2410A時(shí)鐘控制邏輯有兩個(gè)鎖相環(huán)路PLL(phaselockedloop):UPLL專用于USB時(shí)鐘;MPLL能夠產(chǎn)生系統(tǒng)要求的3種時(shí)鐘信號(hào):FCLK供CPU內(nèi)核使用,HCLK供系統(tǒng)總線使用,PCLK供外部總線使用。通過(guò)對(duì)MPLL控制寄存器MPLLCON配置,可以產(chǎn)生需要的時(shí)鐘頻率。

  在時(shí)鐘控制邏輯里,寄存器CLKCON用來(lái)控制如USB,LCD,UART,SD等接口模塊的時(shí)鐘使能。其中bit[9]用于控制SD/MMC接口的時(shí)鐘。SDHost控制器不能直接使用PCLK信號(hào)。正常工作模式下,F(xiàn)CLK為266MHz,PCLK為66.5MHz,而SD卡的最高時(shí)鐘為25MHz,MMC卡最高為20MHz。通過(guò)對(duì)SDIPRE寄存器的bit[0-7]設(shè)置可以對(duì)PCLK進(jìn)行分頻,選擇合適SD/MMC卡的工作頻率。分頻公式為:

  Clockrate=PCLK/2/(SDIPRE[0-7]+1)

  2 驅(qū)動(dòng)程序的實(shí)現(xiàn)

  2.1 驅(qū)動(dòng)程序體系結(jié)構(gòu)

  我們?yōu)殚_發(fā)平臺(tái)上運(yùn)行的WindowsCE系統(tǒng)開發(fā)了SDHost控制器的驅(qū)動(dòng)程序。WindowsCE下,驅(qū)動(dòng)程序是用戶態(tài)的DLL,這些DLL向內(nèi)核提供一些接口函數(shù),這樣設(shè)備管理模塊就可以通過(guò)這些函數(shù)與具體的硬件設(shè)備進(jìn)行通信。

  WindowsCE的驅(qū)動(dòng)程序模型主要有兩種類型:流式接口驅(qū)動(dòng)和本地設(shè)備驅(qū)動(dòng)。流式設(shè)備驅(qū)動(dòng)向上層提供統(tǒng)一的流式設(shè)備接口,而本地設(shè)備驅(qū)動(dòng)可根據(jù)具體設(shè)備要求提供相應(yīng)接口。[!--empirenews.page--]本文實(shí)現(xiàn)中SDHost的驅(qū)動(dòng)程序采用流式接口驅(qū)動(dòng)模型。

 

  驅(qū)動(dòng)程序要實(shí)現(xiàn)相應(yīng)的XXX_Open(),XXX_Close(),XXX_Init(),XXX_Deinit(),XXX_IOControl(),XXX_Read(),XXX_Write(),XXX_Seek(),XXX_PowerUp(),XXX_PowerDown()等接口函數(shù),其中XXX為設(shè)備驅(qū)動(dòng)的前綴,應(yīng)用程序可以通過(guò)文件操作來(lái)控制設(shè)備。

  為了減少了SDHost驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,使其具有較好的可移植性,采用SDHostDDK,它在BSQUARESD協(xié)議棧的基礎(chǔ)上,提供了平臺(tái)獨(dú)立的總線和客戶端驅(qū)動(dòng)和一組標(biāo)準(zhǔn)化的API供使用。BSQUARESD卡的協(xié)議棧結(jié)構(gòu)如圖1所示。

  

 

  圖1 SD卡協(xié)議棧體系結(jié)構(gòu)

  該結(jié)構(gòu)的設(shè)計(jì)很大程度上減少了SDHost驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,使SDHost控制器驅(qū)動(dòng)程序設(shè)計(jì)可以專著于硬件相關(guān)的部分??偩€驅(qū)動(dòng)是SD卡客戶端驅(qū)動(dòng)程序和SDHost驅(qū)動(dòng)程序之間的一個(gè)抽象層,它為SD卡客戶端驅(qū)動(dòng)提供平臺(tái)獨(dú)立的服務(wù)接口。SDHost驅(qū)動(dòng)程序需要完成處理器和硬件平臺(tái)相關(guān)的處理,向上層驅(qū)動(dòng)提供統(tǒng)一的服務(wù)接口。

  2.2 中斷控制

  中斷控制是設(shè)備驅(qū)動(dòng)程序里的關(guān)鍵部分,它關(guān)系到操作系統(tǒng)的實(shí)時(shí)相應(yīng)速度和系統(tǒng)的整體性能。WindowsCE是通用的嵌入式系統(tǒng),它在中斷處理方面也有一定實(shí)時(shí)能力。

  WindowsCE處理中斷的過(guò)程分為兩部分實(shí)現(xiàn):核心的ISR和用戶線程IST。ISR實(shí)現(xiàn)一般要求短小精悍、效率很高,它只實(shí)現(xiàn)簡(jiǎn)單的功能:響應(yīng)設(shè)備中斷并返回一個(gè)中斷標(biāo)識(shí)碼。IST是用戶態(tài)線程,負(fù)責(zé)處理具體的中斷事務(wù)。

  當(dāng)有硬件設(shè)備產(chǎn)生中斷時(shí),系統(tǒng)進(jìn)入核心ISR執(zhí)行,響應(yīng)設(shè)備中斷并返回一個(gè)中斷標(biāo)識(shí)碼,核心根據(jù)返回的中斷標(biāo)識(shí)碼設(shè)置相應(yīng)的事件,該事件將引起IST的執(zhí)行,處理具體的中斷事務(wù)。處理過(guò)程如圖2所示。

  

 

  圖2 WindowsCE中斷處理過(guò)程

  本實(shí)現(xiàn)中用到了下列中斷:SD卡檢測(cè)中斷,SDIO中斷和DMA0中斷(DMA0專用于SDHost的DMA數(shù)據(jù)傳輸)。SD卡檢測(cè)中斷IST負(fù)責(zé)檢測(cè)SD卡的插入和拔出,通知上層應(yīng)用SD插槽的狀態(tài);SDIO中斷IST只是簡(jiǎn)單的通知總線驅(qū)動(dòng)有SDIO中斷產(chǎn)生,具體處理交給SDIO卡的驅(qū)動(dòng)程序;DMA0中斷IST負(fù)責(zé)處理SD的DMA數(shù)據(jù)傳送。

  在WindowsCE中,由于驅(qū)動(dòng)程序DLL運(yùn)行在用戶態(tài),因此驅(qū)動(dòng)程序要訪問(wèn)硬件寄存器,必須在驅(qū)動(dòng)程序的進(jìn)程空間分配一段虛擬空間,然后將這段虛擬空間映射到硬件寄存器所映射到內(nèi)核的虛擬地址才能夠完成相應(yīng)的訪問(wèn)。SDHost驅(qū)動(dòng)程序在初始化的時(shí)候,必須進(jìn)行資源分配和地址映射,配置好各個(gè)GPIO引腳的功能;然后需要?jiǎng)?chuàng)建事件和相應(yīng)的中斷標(biāo)識(shí)碼的關(guān)聯(lián),創(chuàng)建中斷服務(wù)線程IST,準(zhǔn)備進(jìn)行中斷響應(yīng)服務(wù)。[!--empirenews.page--]3 卡檢測(cè)與防抖動(dòng)

 

  系統(tǒng)初始化時(shí),SD_nCD檢測(cè)引腳被設(shè)置為上升沿和下降沿觸發(fā),因此引腳電平發(fā)生變化時(shí),都會(huì)有中斷產(chǎn)生。當(dāng)硬件產(chǎn)生中斷時(shí),系統(tǒng)進(jìn)入核心ISR,對(duì)SD_nCD進(jìn)行檢測(cè),返回相應(yīng)的中斷標(biāo)識(shí)碼,對(duì)于是SD插入還是拔出,則由驅(qū)動(dòng)程序的IST來(lái)處理。

  由于SD卡插槽采用的是機(jī)械式開關(guān),在插拔卡的時(shí)候,機(jī)械開關(guān)斷開、閉合時(shí)會(huì)有抖動(dòng),導(dǎo)致SD卡檢測(cè)引腳的電平不穩(wěn)定,從而有可能引起對(duì)卡的狀態(tài)的誤判。這樣會(huì)導(dǎo)致加載上層驅(qū)動(dòng),初始化失敗造成系統(tǒng)宕機(jī)。為了使每次插拔只響應(yīng)一次,必須要采用相應(yīng)的方法來(lái)防止抖動(dòng),避開按鍵按下的抖動(dòng)時(shí)間。

  在驅(qū)動(dòng)程序IST里采用延時(shí)采樣的方法來(lái)避免抖動(dòng),同時(shí)也嘗試了多次采樣的檢測(cè)方法來(lái)避開用戶按鍵的抖動(dòng)時(shí)間。

  延時(shí)采樣是IST在收到SD卡檢測(cè)事件以后,并不是立刻進(jìn)行引腳信號(hào)判斷,而是延時(shí)一段時(shí)間采樣,延遲時(shí)間要根據(jù)系統(tǒng)電路特性而定,然后檢測(cè)引腳信號(hào),判斷插槽的狀態(tài)是卡插入還是拔出。多次采樣方法是IST在收到SD卡檢測(cè)事件以后,要對(duì)引腳進(jìn)行多次等間隔采樣,根據(jù)采樣出的多數(shù)電平信號(hào)的值來(lái)決定插槽卡的狀態(tài)。多次采樣的方法可以有更短的響應(yīng)時(shí)間,當(dāng)采樣出的電平信號(hào)多數(shù)值不能決定卡的狀態(tài)時(shí),需要進(jìn)行重新采樣判斷。

  對(duì)于延時(shí)采樣的防抖動(dòng)方法,必須考慮到實(shí)現(xiàn)的效率。

  ISR運(yùn)行于系統(tǒng)核心態(tài),它的延時(shí)會(huì)影響整個(gè)系統(tǒng),導(dǎo)致用戶的輸入響應(yīng)時(shí)間過(guò)長(zhǎng),造成整體性能的下降。而WindowsCE的驅(qū)動(dòng)程序是用戶態(tài)的DLL,作為用戶進(jìn)程來(lái)調(diào)度,因此在SDHost的驅(qū)動(dòng)程序里實(shí)現(xiàn)防抖動(dòng),可保證系統(tǒng)整體性能不下降。

  對(duì)于上述兩種防抖動(dòng)方法,我們進(jìn)行了連續(xù)插拔的測(cè)試,結(jié)果如圖3所示。測(cè)試結(jié)果表明,這兩種方法都取得了較好的效果,基本上解決了SD卡檢測(cè)的抖動(dòng)問(wèn)題。

  

 

  圖3 SD卡插拔宕機(jī)次數(shù)測(cè)試

  4 結(jié)語(yǔ)

  本文介紹的SDHost控制器已經(jīng)應(yīng)用在工程實(shí)踐中,結(jié)果表明設(shè)計(jì)是靈活有效的,防抖動(dòng)設(shè)計(jì)對(duì)于類似的設(shè)計(jì)也具有一定的借鑒意義。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉