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

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 把32位微控制器性能帶入工業(yè)和汽車應(yīng)用

          把32位微控制器性能帶入工業(yè)和汽車應(yīng)用

          作者: 時(shí)間:2011-04-19 來源:網(wǎng)絡(luò) 收藏

          圖2表示了外設(shè)事件系統(tǒng)允許外設(shè)自我管理,無需主處理器干預(yù)。例如,若無外設(shè)事件系統(tǒng),定時(shí)器會(huì)在一個(gè)ADC上觸發(fā)一個(gè)轉(zhuǎn)換,然后把結(jié)果傳送給DMA,再存儲(chǔ)到存儲(chǔ)器里,所有這些都無需CPU的任何干預(yù)。若帶有外設(shè)事件系統(tǒng),沒有抖動(dòng),且當(dāng)愛特梅爾AVR工作在66MHz時(shí),響應(yīng)延時(shí)固定在三個(gè)周期僅33ns。

          2.jpg
          圖2 外設(shè)事件系統(tǒng)允許外設(shè)自我管理

          相比基于CPU的中斷驅(qū)動(dòng)式事件控制器,外設(shè)事件控制器的響應(yīng)還具有更大的確定性。當(dāng)32位AVR UC3C工作在66MHz時(shí),延時(shí)固定在三個(gè)周期或僅33ns,從而實(shí)現(xiàn)無抖動(dòng)的精確事件時(shí)序,使ADC和DAC上的數(shù)據(jù)讀取和傳輸更準(zhǔn)確。這種延時(shí)可預(yù)測(cè)以及無需CPU開銷的特性還可防止事件遺漏或數(shù)據(jù)丟失。

          為了全面地觀察外設(shè)事件系統(tǒng)的功能,考慮管理單個(gè)SPI端口所需的CPU負(fù)荷。如果外設(shè)與SRAM之間的數(shù)據(jù)傳輸是基于中斷的,SPI端口在接收到數(shù)據(jù)時(shí)會(huì)觸發(fā)一個(gè)中斷,然后CPU保存應(yīng)用環(huán)境(application context),把數(shù)據(jù)傳送到SRAM的適當(dāng)數(shù)據(jù)緩沖器中,再恢復(fù)應(yīng)用環(huán)境。即使在1.2Mbps的低數(shù)據(jù)率之下,管理SPI端口也需要53%的處理器能力。

          反之,若采用外設(shè)事件系統(tǒng),USB端口會(huì)自動(dòng)把接收到的數(shù)據(jù)傳輸?shù)紻MA。DMA再自動(dòng)把該數(shù)據(jù)存儲(chǔ)在適當(dāng)?shù)拇鎯?chǔ)緩沖器中,所有這些操作都無需CPU的任何干預(yù)。實(shí)質(zhì)上,采用外設(shè)事件系統(tǒng)可省去與外設(shè)管理有關(guān)的所有中斷,從而能把更多的CPU能力留給應(yīng)用。

          外設(shè)事件系統(tǒng)還能減低實(shí)時(shí)系統(tǒng)管理的總體復(fù)雜性。以一個(gè)典型的三相馬達(dá)控制應(yīng)用為例,這種應(yīng)用需要一個(gè)PWM利用開/關(guān)脈沖發(fā)送來驅(qū)動(dòng)電流。在開環(huán)架構(gòu)中必須同時(shí)測(cè)量?jī)蓚€(gè)電流,才能確定反電動(dòng)勢(shì)(back-EMF),以計(jì)算轉(zhuǎn)子的位置。閉環(huán)架構(gòu)也需要測(cè)量?jī)蓚€(gè)電流,以讀取增量式編碼器返回的位置和方向數(shù)據(jù)。在緊急狀態(tài)下,系統(tǒng)還需要執(zhí)行硬件故障機(jī)制來中止馬達(dá)。而利用愛特梅爾AVR® UC3C 32位,所有這些輸入和輸出都可以通過外設(shè)事件系統(tǒng)在后臺(tái)進(jìn)行管理。

          需要大量不同的時(shí)鐘來實(shí)現(xiàn)這些系統(tǒng)支持的眾多功能。AVR UC3C架構(gòu)提供有多個(gè)時(shí)鐘選擇,從而可省去系統(tǒng)原本可能需要的多個(gè)外部時(shí)鐘源。AVR UC3C提供的時(shí)鐘選擇包括3個(gè)內(nèi)部RC振蕩器(115kHz、8MHz及120MHz)和1個(gè)用于生成頻率范圍從80MHz到240MHz的高速系統(tǒng)時(shí)鐘的鎖相環(huán)(PLL)。任何一個(gè)振蕩器都可作為系統(tǒng)的實(shí)時(shí)時(shí)鐘(RTC)源,外部振蕩器可用于提供額外的時(shí)鐘頻率。

          IP保護(hù)

          由于目前制造業(yè)常常將業(yè)務(wù)外包和離岸外包,加上軟件所包含的知識(shí)產(chǎn)權(quán)(IP)越來越多,代碼保護(hù)成為關(guān)鍵的設(shè)計(jì)考慮事項(xiàng)。有關(guān)IP保護(hù)的三大主要因素包括:

          源代碼和目標(biāo)代碼的保護(hù):存儲(chǔ)程序代碼的Flash必須具有鎖定功能,以保護(hù)代碼不被讀取或拷貝。這不僅可以防止競(jìng)爭(zhēng)對(duì)手竊取應(yīng)用代碼,還能防止欠考慮的離岸制造商復(fù)制代碼,私下制造產(chǎn)品在當(dāng)?shù)劁N售。

          代碼的部分鎖定:利用第三方開發(fā)商提供的應(yīng)用代碼,可以顯著加快系統(tǒng)開發(fā)進(jìn)程,尤其是對(duì)依賴專用算法的應(yīng)用而言。傳統(tǒng)的保護(hù)機(jī)制,比如只提供目標(biāo)代碼的方案,因?yàn)闊o法檢驗(yàn)代碼被使用的次數(shù),故不足以保護(hù)第三方的投資。而部分鎖定Flash的功能讓第三方開發(fā)商能夠放心地提供專有的代碼,因?yàn)榇a已經(jīng)編程在上了。

          器件編程成本:的編程必須在安裝在電路板上之前進(jìn)行,或者是采用器件內(nèi)編程的方式。預(yù)編程技術(shù)給物流帶來挑戰(zhàn),因?yàn)槠骷仨毾仍诳煽康脑O(shè)施上編程,再運(yùn)送到制造廠房。器件內(nèi)編程技術(shù)則可以在制造階段添加最新代碼。器件編程常用的一種方法是利用微控制器的JTAG端口。這種方法的缺點(diǎn)是需要指定4個(gè)I/O引腳專用于此目的,而且二進(jìn)制代碼在微控制器和電路板之間傳送時(shí)會(huì)被暴露。替代方案是讓器件在工廠裝載啟動(dòng)加載程序代碼,而這些代碼擁有足以支持一個(gè)接口(如USB端口)的功能。AVR UC3C 就附帶有USB驅(qū)動(dòng)器,能夠支持器件固件升級(jí)(DFU),允許器件通過系統(tǒng)的USB端口進(jìn)行編程。這就釋放了I/O引腳,并從系統(tǒng)BOM中刪去了JTAG標(biāo)頭。

          愛特梅爾AVR® UC3C 32位微控制器架構(gòu)還包含了愛特梅爾FlashVault™代碼保護(hù)技術(shù)。FlashVault允許片上Flash進(jìn)行部分編程和鎖定,創(chuàng)建安全的片上存儲(chǔ)空間,用以保護(hù)軟件IP。Flash上的鎖定部分不能被讀取、拷貝或調(diào)試。在開發(fā)和調(diào)試期間,F(xiàn)lashVault還可以采用一種部分未保護(hù)模式工作,以訪問存儲(chǔ)在Flash中的應(yīng)用程序代碼,同時(shí)仍然能夠保護(hù)第三方代碼。啟動(dòng)加載程序代碼也可以被鎖定,以確保器件在出現(xiàn)災(zāi)難性軟件故障的情況下總是能夠重載應(yīng)用代碼。



          評(píng)論


          相關(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); })();