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