<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > USB開發(fā)中易混淆的概念剖析

          USB開發(fā)中易混淆的概念剖析

          作者: 時(shí)間:2012-12-15 來源:網(wǎng)絡(luò) 收藏

          1.3 固件程序?qū)γ杜e和重牧舉的不同控制方式
          固件程序是CPU要執(zhí)行的程序代碼,是芯片的核心部分,它不僅控制著設(shè)備的數(shù)據(jù)傳輸,同時(shí)控制著重枚舉的實(shí)現(xiàn)。Cypress公司的EZ-系列芯片是使用RAM來存儲固件程序的第一批芯片,也是目前市場上使用最廣泛的一種功能芯片。在此,我們以這種芯片為例深入研究芯片對于不同的啟動(dòng)方式下重枚舉與枚舉的控制方法。

          本文引用地址:http://www.ex-cimer.com/article/202022.htm

          c.JPG


          如圖3流程圖所示,固件程序的一個(gè)重要工作在于對重枚舉的控制,在EZ-USB芯片的固件程序中,都需要以下代碼來控制芯片的重枚舉:
          d.JPG
          重枚舉的控制主要依靠USBCS寄存器中的RENUM位和DISCON位,這兩位的功能與作用分別如下:
          1)RENUM位代表的是EZ-USB芯片使用默認(rèn)狀態(tài)或者固件程序來處理枚舉過程,可用于判斷這一位的值,來確定是否需要重枚舉,RENUM位為0時(shí),使用默認(rèn)方式進(jìn)行枚舉,等待固件程序的下載,這一位為1時(shí),使用固件程序與下載的設(shè)備描述符處理枚舉過程;
          2)DISCON位用來控制USB的斷開與再連接,每次DISCON位的值變化為1時(shí),芯片會自動(dòng)與主機(jī)斷開連接(其實(shí)是一種模擬斷開的狀態(tài)),這一位變成0的時(shí)候,芯片又會與主機(jī)進(jìn)行重新連接。
          這些RAM存儲固件程序的芯片,包括EZ-USB,除了使用RAM外,也都是可以使用其他程序內(nèi)存的,這種特性在芯片的開發(fā)過程與工程應(yīng)用中非常完美的起到了互補(bǔ)作用。開發(fā)中,我們使用RAM每次下載固件程序便于調(diào)試,而應(yīng)用中,又可將固件程序固化到例如Flash EPROM或者EEPROM等存儲器。
          然而,這種模式下,兩種不同的下載固件程序方法對于固件程序的調(diào)用卻不完全一樣,許多開發(fā)人員很長一段時(shí)間內(nèi)都沒有理解清楚它們之間的區(qū)別,導(dǎo)致程序編寫和運(yùn)行中有時(shí)會出現(xiàn)各式錯(cuò)誤,例如在重枚舉的時(shí)候讀取設(shè)備描述符的位置錯(cuò)誤,或者多次通電、斷電重復(fù)操作后部分控制重枚舉的寄存器的值沒有按照預(yù)期變化,導(dǎo)致突發(fā)狀況。
          了解固件程序?qū)τ诿杜e、重枚舉的控制方式,有利于我們追蹤錯(cuò)誤并解決這些問題。在EZ-USB系列芯片中,固件程序?qū)闹鳈C(jī)下載固件程序和EEPROM存儲程序的兩種方式的控制區(qū)別,就主要體現(xiàn)在RENUM位的控制上;
          1)從主機(jī)下載固件程序時(shí),芯片通電后因?yàn)闆]有從任何方式讀取到固件程序,所以RENUM位默認(rèn)為0,使用默認(rèn)方式進(jìn)行枚舉,然后通過主機(jī)下載固件程序,運(yùn)行后,上述代碼控制芯片與主機(jī)的模擬斷開與再連接實(shí)現(xiàn)重枚舉;
          2)而EEPBOM存儲程序時(shí),芯片通電后從它的SCL與SDA兩個(gè)管腳讀取到存儲在EEPROM中的固件程序,觸發(fā)USBCS寄存器中的RENUM位由默認(rèn)值變化為1,在執(zhí)行上述程序時(shí),不滿足判斷條件,不執(zhí)行EZUSB_Discon()的模擬斷開部分,并直接由現(xiàn)有固件程序和設(shè)備描述符進(jìn)行枚舉,一次枚舉即可識別設(shè)備然后正常工作,此時(shí)不需要重枚舉。
          正是通過控制這些寄存器的值,各式USB功能芯片利用固件程序?qū)崿F(xiàn)了對枚舉或者重枚舉的管理。開發(fā)者在固件程序的編寫中,需要特別留意對于這樣一些寄存器的控制,深刻理解USB功能芯片啟動(dòng)以及工作方式,這樣才能避免或者解決在USB通信中出現(xiàn)的一些錯(cuò)誤和缺陷。

          2 結(jié)束語
          文中深入探討了USB傳輸當(dāng)中幾個(gè)非常重要而又容易被人忽視或者混淆的,針對枚舉和重枚舉的區(qū)別,重枚舉和重置的區(qū)別進(jìn)行了對比分析,并詳細(xì)講述了枚舉與重枚舉的流程和控制,有助于開發(fā)人員在USB項(xiàng)目中更好的理解并掌握開發(fā)流程。大量應(yīng)用結(jié)果表明,USB傳輸?shù)牡讓釉砼c,對于解決傳輸中的問題以及提升數(shù)據(jù)系統(tǒng)的效率有很大的幫助,值得開發(fā)者真正的重視。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: USB 概念

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();