《電子技術應用》
您所在的位置:首頁 > 微波|射頻 > 設計應用 > 嵌入式系統的SD控制器設計實現
嵌入式系統的SD控制器設計實現
摘要: 使用S3C2410A的SD控制模塊,通過對GPIO功能的擴展來完成SD的檢測和寫保護的功能,實現SDHost控制器相對比較靈活。在進行驅動程序開發過程中,對SD卡檢測進行防抖動處理是必要的,必須根據系統電路特性來確定合適的檢測時機,在驅動程序里面實現防抖動處理,保證整個系統的效率。
Abstract:
Key words :
  在目前的掌上電腦等嵌入式系統中,SD(securedigital)卡以其體積小和引腳數少的優勢,提供了比CF更好的外部設備擴展解決方案。因此,如何在系統中集成SDHost控制模塊,以及在嵌入式操作系統里面實現其驅動程序,都是目前嵌入式系統設計者要考慮的問題。

  本文實現所采用的開發平臺是基于SAMSUNG公司的S3C2410AARM微處理器,利用處理內部的SD控制模塊,采用GPIO擴展的方法實現SDHost控制器。

  使用S3C2410A的SD控制模塊,通過對GPIO功能的擴展來完成SD的檢測和寫保護的功能,實現SDHost控制器相對比較靈活。在進行驅動程序開發過程中,對SD卡檢測進行防抖動處理是必要的,必須根據系統電路特性來確定合適的檢測時機,在驅動程序里面實現防抖動處理,保證整個系統的效率。

  1 SDHost硬件設計

  SCDA1A0100是ALPS公司生產的SD卡連接插槽,采用高可用的滑動觸點開關,能夠準確地檢測到卡插入的時機。

  通過小型化和薄型化設計,已經廣泛應用于PDA,數碼相機和個人電腦。當插槽有SD卡插入時,SD卡會觸動槽內的觸點開關,引起卡的檢測引腳和寫保護引腳的相應電平變化。

  Samsung的S3C2410A內部支持SDHost的控制模塊,有SDHost控制寄存器和可以用于SDHost控制器的IO引腳,可用編程的方法對其功能進行選擇;但對于SD卡的檢測,寫保護和插槽的電源使能等功能沒有專門的引腳。在本文實現中,對于卡檢測、電源引腳,通過GPIO擴展來實現。部分引腳定義如表1所示。

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

S3C2410A部分GPIO引腳功能定義

  S3C2410A的GPIO引腳分為GPA,GPB等8組,每組的IO引腳有控制寄存器(GPxCON),數據寄存器(GPxDAT),Pull-Up寄存器(GPxUP)進行控制。每根引腳所在的GPxCON里有對應位控制其功能,通過對GPxCON編程來控制其功能,某一時刻,該引腳只能使用一種功能。

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

  S3C2410A時鐘控制邏輯有兩個鎖相環路PLL(phaselockedloop):UPLL專用于USB時鐘;MPLL能夠產生系統要求的3種時鐘信號:FCLK供CPU內核使用,HCLK供系統總線使用,PCLK供外部總線使用。通過對MPLL控制寄存器MPLLCON配置,可以產生需要的時鐘頻率。

  在時鐘控制邏輯里,寄存器CLKCON用來控制如USB,LCD,UART,SD等接口模塊的時鐘使能。其中bit[9]用于控制SD/MMC接口的時鐘。SDHost控制器不能直接使用PCLK信號。正常工作模式下,FCLK為266MHz,PCLK為66.5MHz,而SD卡的最高時鐘為25MHz,MMC卡最高為20MHz。通過對SDIPRE寄存器的bit[0-7]設置可以對PCLK進行分頻,選擇合適SD/MMC卡的工作頻率。分頻公式為:

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

  2 驅動程序的實現

  2.1 驅動程序體系結構

  我們為開發平臺上運行的WindowsCE系統開發了SDHost控制器的驅動程序。WindowsCE下,驅動程序是用戶態的DLL,這些DLL向內核提供一些接口函數,這樣設備管理模塊就可以通過這些函數與具體的硬件設備進行通信。

  WindowsCE的驅動程序模型主要有兩種類型:流式接口驅動和本地設備驅動。流式設備驅動向上層提供統一的流式設備接口,而本地設備驅動可根據具體設備要求提供相應接口。

  本文實現中SDHost的驅動程序采用流式接口驅動模型。

  驅動程序要實現相應的XXX_Open(),XXX_Close(),XXX_Init(),XXX_Deinit(),XXX_IOControl(),XXX_Read(),XXX_Write(),XXX_Seek(),XXX_PowerUp(),XXX_PowerDown()等接口函數,其中XXX為設備驅動的前綴,應用程序可以通過文件操作來控制設備。

  為了減少了SDHost驅動程序設計的復雜性,使其具有較好的可移植性,采用SDHostDDK,它在BSQUARESD協議棧的基礎上,提供了平臺獨立的總線和客戶端驅動和一組標準化的API供使用。BSQUARESD卡的協議棧結構如圖1所示。

SD卡協議棧體系結構

圖1 SD卡協議棧體系結構

  該結構的設計很大程度上減少了SDHost驅動程序設計的復雜性,使SDHost控制器驅動程序設計可以專著于硬件相關的部分。總線驅動是SD卡客戶端驅動程序和SDHost驅動程序之間的一個抽象層,它為SD卡客戶端驅動提供平臺獨立的服務接口。SDHost驅動程序需要完成處理器和硬件平臺相關的處理,向上層驅動提供統一的服務接口。

  2.2 中斷控制

  中斷控制是設備驅動程序里的關鍵部分,它關系到操作系統的實時相應速度和系統的整體性能。WindowsCE是通用的嵌入式系統,它在中斷處理方面也有一定實時能力。

  WindowsCE處理中斷的過程分為兩部分實現:核心的ISR和用戶線程IST。ISR實現一般要求短小精悍、效率很高,它只實現簡單的功能:響應設備中斷并返回一個中斷標識碼。IST是用戶態線程,負責處理具體的中斷事務。

  當有硬件設備產生中斷時,系統進入核心ISR執行,響應設備中斷并返回一個中斷標識碼,核心根據返回的中斷標識碼設置相應的事件,該事件將引起IST的執行,處理具體的中斷事務。處理過程如圖2所示。

WindowsCE中斷處理過程

圖2 WindowsCE中斷處理過程

  本實現中用到了下列中斷:SD卡檢測中斷,SDIO中斷和DMA0中斷(DMA0專用于SDHost的DMA數據傳輸)。SD卡檢測中斷IST負責檢測SD卡的插入和拔出,通知上層應用SD插槽的狀態;SDIO中斷IST只是簡單的通知總線驅動有SDIO中斷產生,具體處理交給SDIO卡的驅動程序;DMA0中斷IST負責處理SD的DMA數據傳送。

  在WindowsCE中,由于驅動程序DLL運行在用戶態,因此驅動程序要訪問硬件寄存器,必須在驅動程序的進程空間分配一段虛擬空間,然后將這段虛擬空間映射到硬件寄存器所映射到內核的虛擬地址才能夠完成相應的訪問。SDHost驅動程序在初始化的時候,必須進行資源分配和地址映射,配置好各個GPIO引腳的功能;然后需要創建事件和相應的中斷標識碼的關聯,創建中斷服務線程IST,準備進行中斷響應服務。

  3 卡檢測與防抖動

  系統初始化時,SD_nCD檢測引腳被設置為上升沿和下降沿觸發,因此引腳電平發生變化時,都會有中斷產生。當硬件產生中斷時,系統進入核心ISR,對SD_nCD進行檢測,返回相應的中斷標識碼,對于是SD插入還是拔出,則由驅動程序的IST來處理。

  由于SD卡插槽采用的是機械式開關,在插拔卡的時候,機械開關斷開、閉合時會有抖動,導致SD卡檢測引腳的電平不穩定,從而有可能引起對卡的狀態的誤判。這樣會導致加載上層驅動,初始化失敗造成系統宕機。為了使每次插拔只響應一次,必須要采用相應的方法來防止抖動,避開按鍵按下的抖動時間。

  在驅動程序IST里采用延時采樣的方法來避免抖動,同時也嘗試了多次采樣的檢測方法來避開用戶按鍵的抖動時間。

  延時采樣是IST在收到SD卡檢測事件以后,并不是立刻進行引腳信號判斷,而是延時一段時間采樣,延遲時間要根據系統電路特性而定,然后檢測引腳信號,判斷插槽的狀態是卡插入還是拔出。多次采樣方法是IST在收到SD卡檢測事件以后,要對引腳進行多次等間隔采樣,根據采樣出的多數電平信號的值來決定插槽卡的狀態。多次采樣的方法可以有更短的響應時間,當采樣出的電平信號多數值不能決定卡的狀態時,需要進行重新采樣判斷。

  對于延時采樣的防抖動方法,必須考慮到實現的效率。

  ISR運行于系統核心態,它的延時會影響整個系統,導致用戶的輸入響應時間過長,造成整體性能的下降。而WindowsCE的驅動程序是用戶態的DLL,作為用戶進程來調度,因此在SDHost的驅動程序里實現防抖動,可保證系統整體性能不下降。

  對于上述兩種防抖動方法,我們進行了連續插拔的測試,結果如圖3所示。測試結果表明,這兩種方法都取得了較好的效果,基本上解決了SD卡檢測的抖動問題。  

SD卡插拔宕機次數測試

圖3 SD卡插拔宕機次數測試

  4 結語

  本文介紹的SDHost控制器已經應用在工程實踐中,結果表明設計是靈活有效的,防抖動設計對于類似的設計也具有一定的借鑒意義。



 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区在线视频| 亚洲深夜激情| 国产精品久久国产精品99gif | 欧美伊久线香蕉线新在线| 亚洲午夜精品国产| 在线视频欧美精品| 制服丝袜激情欧洲亚洲| 日韩午夜在线视频| 91久久线看在观草草青青| 欧美一级成年大片在线观看| 亚洲欧美成人一区二区三区| 亚洲一区不卡| 亚洲一区二区三区乱码aⅴ| 夜夜嗨av一区二区三区免费区| 亚洲日本理论电影| 亚洲人在线视频| 日韩午夜三级在线| 一区二区精品在线观看| 国产精品99久久久久久有的能看| 中文精品视频一区二区在线观看| 亚洲视频在线看| 亚洲一级片在线看| 亚欧成人在线| 亚洲成色777777在线观看影院| 久久精品国产亚洲一区二区三区| 久久国产精品99精品国产| 久久精品国产2020观看福利| 久久国产视频网站| 亚洲高清在线播放| 亚洲另类在线一区| 在线视频一区观看| 亚洲女同同性videoxma| 欧美尤物一区| 快射av在线播放一区| 欧美激情bt| 欧美日韩在线视频一区二区| 国产精品久久久久一区二区三区| 国产精品亚发布| 国内精品久久久久伊人av| 亚洲高清资源综合久久精品| 亚洲精品美女在线观看| 亚洲天堂成人在线观看| 欧美一级久久久| 亚洲精品1234| 亚洲性感激情| 久久免费99精品久久久久久| 欧美福利网址| 国产精品成人av性教育| 国产在线高清精品| 亚洲精品视频在线观看网站| 亚洲性感美女99在线| 久久国产精品亚洲77777| 亚洲精品资源美女情侣酒店| 亚洲性xxxx| 久久久www成人免费无遮挡大片 | 美女精品自拍一二三四| 欧美日韩国产色站一区二区三区| 国产精品毛片| 亚洲高清资源综合久久精品| 在线一区日本视频| 欧美资源在线观看| 在线中文字幕日韩| 久久精品人人爽| 欧美伦理一区二区| 国产乱人伦精品一区二区| 激情欧美一区二区三区| 99成人在线| 亚洲国产日韩一级| 亚洲综合首页| 欧美成人久久| 国产精品网站在线播放| 亚洲国产成人精品视频| 在线午夜精品自拍| 亚洲欧洲精品一区二区| 性欧美videos另类喷潮| 欧美精品国产一区| 国产午夜亚洲精品羞羞网站| 亚洲精品少妇30p| 欧美在线高清视频| 亚洲午夜视频在线观看| 美女在线一区二区| 国产精品一区二区三区四区| 亚洲国内高清视频| 欧美一区二区三区精品 | 免费亚洲一区| 国产欧美日韩亚洲| 亚洲免费高清视频| 亚洲国产成人久久综合| 午夜性色一区二区三区免费视频| 欧美激情2020午夜免费观看| 国内一区二区三区| 亚洲影视中文字幕| 一区二区免费在线视频| 你懂的国产精品永久在线| 国产亚洲观看| 亚洲午夜视频| 亚洲视频中文| 欧美伦理一区二区| 亚洲高清视频中文字幕| 久久精品人人做人人综合| 午夜伦欧美伦电影理论片| 欧美日韩伦理在线| 亚洲福利视频三区| 亚洲国产精品精华液2区45| 久久精品亚洲乱码伦伦中文| 国产精品人人做人人爽| 亚洲视频久久| 亚洲色图综合久久| 欧美国产第一页| 亚洲第一偷拍| 亚洲精品1区| 另类av一区二区| 国产专区一区| 欧美一区二区视频97| 久久国产福利国产秒拍| 国产精品久久久久久久一区探花 | 国内自拍亚洲| 欧美亚洲在线播放| 久久国产精品一区二区三区四区| 国产精品美女主播在线观看纯欲| 99v久久综合狠狠综合久久| 日韩亚洲欧美中文三级| 欧美成人在线免费观看| 亚洲国产1区| 日韩一级黄色大片| 欧美日韩一区二区三区在线视频 | 一本高清dvd不卡在线观看| 99ri日韩精品视频| 欧美精品九九99久久| 亚洲精品一级| 亚洲无吗在线| 国产精品久久午夜| 亚洲伊人久久综合| 欧美主播一区二区三区| 国产日韩综合一区二区性色av| 午夜精品久久久久久久99樱桃| 久久国产欧美精品| 黄色日韩网站视频| 亚洲国产中文字幕在线观看| 欧美高清在线观看| 99riav1国产精品视频| 亚洲欧美日韩精品久久久| 国产精品一区免费观看| 欧美中文在线免费| 欧美凹凸一区二区三区视频| 亚洲日本在线视频观看| 亚洲一区二区在| 国产日韩欧美一二三区| 久久精品一区二区三区中文字幕| 欧美成人中文字幕在线| 99国产精品久久久| 欧美一区二区在线看| 国产在线拍揄自揄视频不卡99| 91久久夜色精品国产九色| 欧美国产日韩xxxxx| 一区二区三区成人| 久久精品国产久精国产思思| 在线精品视频一区二区三四| 99精品视频一区| 国产精品区一区| 久久福利资源站| 欧美日韩成人精品| 亚洲影视中文字幕| 免费观看30秒视频久久| 妖精成人www高清在线观看| 久久精品99国产精品日本| 亚洲电影在线| 亚洲欧美另类在线| 在线观看中文字幕亚洲| 亚洲视频久久| 激情综合色丁香一区二区| 亚洲视频观看| 韩国三级在线一区| 一区二区三区欧美成人| 国产日韩亚洲欧美| 亚洲精品系列| 国产精品男女猛烈高潮激情 | 亚洲深夜av| 久久综合久久综合久久综合| 99精品热6080yy久久| 久久精品亚洲国产奇米99| 亚洲精品国产拍免费91在线| 午夜免费久久久久| 亚洲国产一区视频| 久久国产精品毛片| 亚洲美女av黄| 久久午夜av| 亚洲一区在线观看免费观看电影高清| 久久亚洲精品一区二区| 夜夜嗨av一区二区三区| 玖玖在线精品| 亚洲女女女同性video| 欧美高清视频免费观看| 亚洲欧美日韩精品| 欧美激情一区三区| 久久精品国产久精国产思思| 国产精品www色诱视频| 亚洲欧洲精品一区| 国产中文一区| 午夜精品影院在线观看|