將CompactECC移植到愛特梅爾新型SAM3S控制器
SAM3S包括兩個(gè)獨(dú)立的PLL模塊,對(duì)那些需要提供48 MHz USB時(shí)鐘,卻又很難從主時(shí)鐘頻率獲得的應(yīng)用程序十分有利。除了32KHz RC振蕩器之外,SAM3S 還提供更快的內(nèi)部 RC振蕩器,有4、8或12 MHz 的輸出頻率選項(xiàng)。該振蕩器從一開始就激活,提供初始4 MHz主時(shí)鐘頻率。它的主要作用是根據(jù)系統(tǒng)時(shí)鐘來配置快閃的等待狀態(tài)。愛特梅爾已經(jīng)簡化了嵌入式快閃控制器接口。使用前幾代產(chǎn)品時(shí)必須注意主時(shí)鐘頻率的快閃控制器,至少當(dāng)應(yīng)用程序在快閃存儲(chǔ)器頁面執(zhí)行寫操作時(shí)應(yīng)該如此。而SAM3S則不需要。
本文引用地址:http://m.butianyuan.cn/article/116952.htm有好些外設(shè)模塊,包括功率管理控制器,都具有保護(hù)功能,幫助其避免對(duì)任務(wù)關(guān)鍵型寄存器(例如時(shí)鐘頻率設(shè)置)的無意寫入訪問。為了把新數(shù)值寫入具有這種保護(hù)方式的寄存器,密鑰必須與預(yù)設(shè)置一起寫入。如果密鑰匹配硬編碼參考值,則只有新數(shù)值被接受。
NVIC的引進(jìn)也帶來一個(gè)副作用,就是結(jié)合了系統(tǒng)外設(shè)(如PIT、RTT、WDT 和 DBGU)中斷請(qǐng)求線的共享系統(tǒng)中斷也變得多余了。在前幾代成品中,系統(tǒng)中斷服務(wù)程序首先必須確定負(fù)責(zé)當(dāng)前中斷請(qǐng)求的中斷源。 但在SAM3S的情況下,每個(gè)系統(tǒng)外設(shè)都已接收到了它自己的中斷向量,而相關(guān)的服務(wù)程序能夠利用其內(nèi)部關(guān)于中斷源的知識(shí)對(duì)正確的中斷提供服務(wù)。中斷控制器的配置也自然相應(yīng)改變。 在設(shè)置了處理器的內(nèi)核異常(IRQs 0 - 15)和初始堆棧之后,外設(shè)的中斷向量就被存儲(chǔ)。 激活/禁用單個(gè)中斷、定義它們的優(yōu)先級(jí)、通過軟件觸發(fā)中斷等功能,由一個(gè)統(tǒng)一的軟件界面,即Cortex微控制器軟件界面標(biāo)準(zhǔn)(CMSIS)來提供。 更甚者,中斷服務(wù)程序不再需要專門的序言和結(jié)語(prologues and epilogues),因?yàn)榉?wù)程序作為普通函數(shù)被執(zhí)行。中斷控制器與內(nèi)核的集成還具有一個(gè)優(yōu)勢,即不同于ARM7和ARM9器件,SAM3S沒有偽中斷。當(dāng)中斷線激活時(shí)間很長,足以觸發(fā)一個(gè)中斷時(shí),就有可能發(fā)生偽中斷。但若激活時(shí)間過短,在中斷來源被確定之前中斷就消失了,中斷控制器就無法為內(nèi)核提供正確的中斷向量。
周期性間隔定時(shí)器(PIT)也不再存在,因?yàn)镃ortex-M3將自己的SysTick定時(shí)器嵌入在了內(nèi)核中。 只要PIT原來是通過其相關(guān)ISR用于增量計(jì)數(shù)器的,移植到SAM3S就十分容易:完全能夠把ISR分配給適當(dāng)?shù)闹袛嘞蛄?,確保選擇正確的時(shí)鐘源,并選擇所期望的重載值。 這將適用于99%的應(yīng)用。
關(guān)于PIO控制器,需要進(jìn)一步的修改,因?yàn)榉庋b引腳多路復(fù)用現(xiàn)在支持4個(gè)而不是2個(gè)可發(fā)送到每個(gè)引腳的外設(shè)信號(hào)。 另外,每個(gè)引腳可作為帶可編程極性的邊沿敏感或電平敏感中斷源。
調(diào)試單元(DBGU)也消失了。這個(gè)外設(shè)整合了幾個(gè)功能:一個(gè)用于消息跟蹤的串行端口;一個(gè)芯片ID寄存器,用于通過軟件或JTAG識(shí)別確切的控制器特性;一個(gè)連接ARM7TDMI調(diào)試數(shù)據(jù)通道,并訪問愛特梅爾的快閃編程解決方案的接口。這些功能現(xiàn)在都由一個(gè)自包含CHIPID模塊和一個(gè)UART提供。
在做了所有這些修改之后,用于SAM3S的CompactECC樣本應(yīng)用程序就算最終完成。
評(píng)論