MA差模電感器XQ8913及其它MAXQ®微控制器采用的Harvard存儲器映射架構為用戶提供了極大的靈活性,可根據需要將不同的物理內存(例如數據SRAM)映射為程序或數據內存空間。在特定環境下,從數據SRAM執行一個程序的部分代碼能夠提升性能并降低功耗。這些優勢都是以應用程序的更加復雜為代價。
概述
MAXQ8913和其它許多MAXQ微控制器一樣,也包含了一個基于SRAM的內置數據存儲區域,該存儲區域可被映射為數據內存空間,或者選擇映射為程序內存空間。內置SRAM通常用作數據存儲器,而在程序閃存或掩膜ROM中執行大部分程序代碼。然而,在特定環境下,從內部SRAM執行有限的部分代碼非常有用。
本應用筆記介紹如何配置、裝載匯編程序,以便從內部SRAM正確運行,本文還討論了這種方法的優勢和缺點。本應用筆記給出的例程針對MAXQ8913編寫,使用基于匯編的MAX-IDE環境。用戶可下載本文所涉及的應用程序代碼和項目文件。
本文討論的代碼都特別針對MAXQ8913微控制器編寫,所介紹的原理和方法也同樣適合其它含有可映射為程序空間的內部SRAM的MAXQ微控制器。能夠以這種方式執行代碼的其它MAXQ微控制器包括:MAXQ2000、MAXQ2010和MAXQ3210/MAXQ3212。
該代碼能很好地運行在任何基于MAXQ8913片式電感器并為MAXQ8913的串口0提供一路串行接口(RS-232或USB至串口轉換)的硬件。將一個終端模擬器連接到該串口,并設置為9600波特率、8個數據位、1個停止位、無奇偶校驗,即可查看例程的代碼輸出。
用戶可免費下載MAX-IDE環境的最新安裝程序包和文檔資料。
MAX-IDE安裝程序
MAXQ核編譯指南
開發工具指南
在RAM中執行代碼的優勢
通常情況下,MAXQ微控制器的絕大多數應用代碼都被設計為在主程序空間執行,主程序空間通常是利用一片大的內部閃存或(對于掩膜ROM器件)用戶指定的應用ROM來實現。主程序空間為非易失存儲器,所以大多數情況下可用來保存應用程序代碼。內部SRAM被用來存儲變量、軟件棧,以及器件被關閉時不需要保存的類似數據。
然而,對于特定應用,在數據SRAM中執行某些代碼具有一定優勢。
降低功耗
在大多數MAXQ微控制器中,當在內部SRAM (或固定用途ROM)中執行代碼時,相對于程序閃存而言,電源電流會減小。因為閃存在不被存取時可被動態斷電,所以這種情況下就能節省功率。如果某個應用程序通常在大部分活動時間內執行非常小的代碼量,在SRAM中執行就能大大降低總體功耗。
直接訪問主程序空間存儲器
通常,從主程序閃存執行的代碼不能直接讀取保存在主程序閃存中的數據。這種類型的數據可以包括隨應用程序數據一起的常量字符串和數據表。若要讀取該數據,應用程序必須調用固定用途ROM中的專用數據傳遞函數。在RAM中執行代碼則避開了這一限制,允許利用標準的數據指針直接讀取閃存中包含的數據。這就加快了存取操作。若一個小的算法花費大量的時間遍歷閃存中存儲的查找表或其它常量數據,那么在RAM中執行該算法則能夠在非常短的時間內完成運算。
可重寫整個閃存
和大多數基于閃存的MAXQ微控制器一樣,MAXQ8913中的固定用途ROM含有在應用程序控制下擦除和重寫程序閃存的標準函數。該過程能夠使用戶裝載器通過用戶指定接口(例如串口、SPI或I²C)重新裝載部分或全部應用程序。大電流電感然而,若用戶裝載程序位于閃存內,則不能擦除或重寫自身所占用的閃存。在RAM中執行用戶裝載器,可以擦除整個閃存程序空間并重新寫入新的代碼,包括用戶裝載器本身。
在RAM中執行代碼的缺點
在RAM中執行應用程序代碼也存在缺點和限制。有些缺點與具體工作相關,而有些缺點則是MAXQ架構所固有的。
有限繞行電感器的代碼空間
RAM一般比程序閃存小得多,這意味著在任何給定時間只能執行少量代碼。但有可能在RAM中運行一個例程,然后將其擦除并裝載第二個例程,隨后再運行第二個例程,依此類推。
代碼映射
在RAM中執行代碼之前,必須將其復制到RAM。這一過程需要時間和代碼空間。此外,代碼必須從某個位置復制,所以代碼實際上被存儲兩次:一次在閃存或程序ROM,一次在RAM。即使該代碼不是為了在閃存中執行,也必須被存儲于其中,從而消耗了額外的空間。
不可直接存取RAM
當在RAM中執行代碼時,RAM就不再是可見的數據存儲空間。這意味著不能利用數據指針直接從RAM存儲單元讀取或寫入數據。按照在閃存中運行應用代碼相同的方式,有可能避開這種限制。利用固定用途ROM數據傳遞函數(UROM_moveDP0和類似的函數)可對RAM進行讀取,以及通過在閃存中寫入類似的函數,可直接對 大功率電感廠家 |大電流電感工廠