在DS80C400之前,TINI?系統被限制在最大40MHz下運行,受到DS80C390處理器最高速度的限制。DS80C400承諾提供75MHz的信號,因此在TINI固件中增加了支持,使系統能夠以允許的最快晶體倍增器運行。然而,為了使系統經濟實惠,TINI參考設計(TINIm400和TINIs400)并非設計用于在這些高速下運行。許多開發人員嘗試在 x4 晶體乘數設置下運行他們的 TINI,每個人都最終注意到他們的 TINI 只是停止了。原因不是DS80C400處理器不能支持這個速度,而是閃存不能支持這個速度。因此,高速TINI系統需要一個帶有RAM的定制板,用于固件存儲和執行。本應用筆記將討論如何初始化這種高速TINI系統。
閃存限制
閃光通常是高速TINI設計中的限制因素。最好的商用閃光燈的訪問時間為55ns。下圖顯示了這與DS80C400 CPU速度和AM29LV081閃存的關系。
額定閃光速度 | 最大中央處理器速度 |
55ns | 40兆赫 |
70ns | 33兆赫 |
90ns | 27.5兆赫 |
120ns | 21兆赫 |
150ns | 17兆赫 |
此處提供的數據留給開發人員一個選擇:用完閃存并限制為 40MHz 執行速度,或者從 RAM 中執行并運行高達 75MHz。為了實現使用DS80C400和TINI OS的高速設計,必須改變正常的TINI存儲器映射(如TINIm400)。
天宇操作系統內存要求
要在DS80C400上運行TINI Java?運行時(TINI OS),CE0(地址0)上必須至少有512K RAM,CE2(地址400000h)上必須有另外512K的代碼空間。在TINIm400上,代碼空間以閃存的形式實現,但它可以很容易地實現為RAM。
應用程序代碼的 RAM 的問題在于它最初是空白的,如果電源斷開、電池耗盡或某些其他外部事件擦除其內容,則會擦除它。TINI應用程序通常用于遠程監測和控制,如果設備丟失其代碼,現場更新將非常不方便。解決方案是從位于正常 TINI 內存映射之外的閃存將應用程序的映像復制到 RAM 中。
備用內存映射
考慮以下高速 TINI 的內存映射。
圖1.高速 TINI 系統的可能內存映射。
此內存映射在 TINI OS 所需的位置顯示兩個 512K RAM(一個位于地址 0,一個位于地址 400000h)。它還在地址 600000h 處包含一個額外的閃存。此閃存包含一個初始化應用程序,該應用程序負責:
初始化堆
將固件和應用程序映像復制到地址 400000h
將控制權移交給TINIOS
當 DS80C400 引導加載程序啟動時,它會從內存頂部啟動并搜索要運行的可執行文件。當它找到有效的 TINI 應用程序簽名時,它會將控制權轉移到該地址。我們將啟動代碼放在地址 6F0000h 處,確保它是找到的第一個應用程序代碼。有效的 TINI 簽名由 64K 內存庫地址 0 處的以下結構組成:
SJMP 聲明 | 字符串“TINI” | 銀行號碼(或 0) |
2 字節 | 4 字節 | 1 字節 |
參見DS80C400數據資料中的“查找用戶代碼”部分2有關此過程的更多信息。
使固件運行得更快
現在我們已經設計了定制的TINI硬件,我們需要更改固件以更快的速度運行。
TINI軟件開發套件附帶的TINI固件經過預編程,可在14MHz晶體上以晶體乘法器2運行。高速TINI系統通常在14MHz或18MHz晶體上以2或4的倍數運行??梢允褂肨BINFixer工具針對不同的晶體速度和乘法器更改TINI固件。運行此應用程序,不帶參數以查看命令行選項。通常,只需要更改晶體乘數(-m 選項)和晶體值(-c 選項)。使用 TINI SDK 中的文件 tini400.tbin 作為此應用程序的輸入文件。
啟動應用程序
隨著固件更改為以更快的晶體乘法器運行,我們現在可以將注意力轉向初始化 TINI 系統以在 RAM 外執行的程序。這里介紹的典型啟動應用程序是用匯編編寫的,并使用 TINI 軟件開發工具包附帶的免費工具(宏和 a390)構建。
對于此啟動應用程序,我們選擇將TINI固件和Slush應用程序存儲為TBIN3閃存中的文件。因此,我們的啟動應用程序將需要處理 TBIN 文件格式的解析。這樣做的好處是TBIN格式存儲其數據的所有地址信息,使啟動應用程序具有更通用的用途。
文件 init.a514顯示一個初始化應用程序,該應用程序讀取存儲在閃存中的一些TBIN文件并將其復制到RAM,然后將執行傳輸到RAM。該代碼是通用的,盡管三個位置可能需要針對不同的內存配置進行一些調整:
TBIN_GLOB_ADDRESS equ 600000h
這是存儲 TBIN 文件的地址。駐留在此處的映像應使用 BuildTBIN 應用程序生成(請參閱下一部分)。
EXECUTE_ADDRESS equ 400000h 對于 TINI Java 運行時,此地址應保持 400000h
(對于用 C 編寫的應用程序,它可以更改)。初始化應用程序完成后,將執行到此位置的 LJMP 以轉移應用程序控制權。
org 6F0000h
應用程序的 org 語句指定代碼的位置。
使用初始化應用程序的默認配置,存儲在地址 600000h 的 TBIN 文件將被復制到 RAM 中(在 TBIN 文件本身中指定的地址處)。復制后,程序執行將轉移到地址400000h。
開發人員應考慮當前 init 代碼中的幾個問題:
串行調試:初始化應用程序配置計時器 2 以生成串行端口 0 的波特率。(該應用程序包含一些用于調整波特率的等價物。它輸出有關正在復制到RAM的每個TBIN記錄的信息。可以刪除所有串行例程,而不會影響 init 代碼的功能。
展開的副本:函數 Copy256 包含一個部分展開的 256 字節副本(展開為 16 個循環,每個循環 16 個單字節副本)。這對性能有好處,但會增加代碼大小。如果代碼大小比啟動延遲更重要,那么這是首先查看的好地方。
POR 檢查:初始化代碼在復制 TINI 固件和應用程序之前不會檢查 POR。但是,如果 TINI 應用程序故意復位而不循環電源,則可能需要這樣做。在這種情況下,應用程序可以跳過復制并直接執行代碼。請注意,建議區分有意和無意的監視器重置。無意的看門狗重置可能意味著 TINI 功能不正常,在這種情況下,重新加載應用程序代碼值得考慮。
RAM 擦除:啟動代碼還會擦除前 64 KB 的 RAM,以確保系統干凈啟動。如果 CE0 上的 RAM 是電池供電的,則可以刪除此操作。之所以包含此啟動代碼,是因為在通電時,許多 TINI 系統假定文件系統需要重新初始化。
宏(宏預處理器)和 a390(匯編器)用于構建啟動代碼,使用以下命令: 生成的文件稱為 init.tbin,應與 BuildTBIN 應用程序的輸出一起加載到 TINI 系統上,詳見下一節。 macro init.a51 a390 -l -Ftbin -d -p 400 init.mpp
構建TBIN應用程序
BuildTBIN 應用程序是一個 Java 應用程序,它采用一個或多個 TBIN 文件并將它們格式化為一個文件,可由上一節中介紹的啟動應用程序使用。由于我們的高速應用程序會將 Slush 和 TINI 固件從地址 600000h 復制到其正確位置,因此 BuildTBIN 的命令行如下所示:
java BuildTBIN 600000h file_to_load.tbin slush400.tbin tini400.tbin 在這種情況下,文件 slush400.tbin 和 tini400.tbin 將合并為文件file_to_load.tbin,該文件將針對地址 600000h。文件 file_to_load.tbin 應與文件 init.tbin 一起加載到 TINI 系統上。
BuildTBIN 應用程序獲取輸入的 TBIN 圖像并將其視為二進制數據,并將其重新包裝到另一個針對不同地址的 TBIN 文件中。有一個復雜因素:啟動應用程序需要知道包含多少TBIN記錄。對于JavaKit和MTK等加載程序來說,這不是問題,它們會尋找EOF(文件結尾)來確定何時不再有TBIN記錄。為了解決此問題,輸出 TBIN 文件的第一個字節包括文件中 TBIN 記錄數的計數。由于 TBIN 文件可以包含多個 TBIN 記錄,因此 BuildTBIN 應用程序必須分析每個輸入 TBIN 文件以計算它包含的記錄數。
圖2.BuildTBIN 程序接受輸入的 TBIN 文件,添加一個“計數”字節,將整個內容視為二進制流,并輸出一個新的 TBIN 格式文件。由于每個 TBIN 記錄都包含一些開銷,請注意,輸出文件最多可以包含 9 個 TBIN 記錄,盡管輸入文件僅包含 8 個。
TBIN文件格式描述于:http://files.dalsemi.com/tini/ ds80c400/c_libraries/tbinformat.html。BuildTBIN 工具的源代碼可在 http://files.dalsemi.com/tini/ds80c400/tools/buildtbin 中找到。
如果您還想在最終的 TBIN 映像中包含非 TBIN 數據,則可以使用 Bin2TBIN 工具將任何二進制數據轉換為 TBIN 格式。此工具的來源可在以下網址獲得:http://files.dalsemi.com/tini/ds80c400/tools/bin2tbin。
結論
這里介紹的初始化高速TINI系統的方法就是許多可能的解決方案之一。本文及其隨附的代碼既是解決方案,也是解決問題的教育。通過增加一點RAM和閃存,可以實現穩定、高速的TINI,以充分利用DS80C400處理器的功能。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19178瀏覽量
229202 -
cpu
+關注
關注
68文章
10829瀏覽量
211198 -
操作系統
+關注
關注
37文章
6747瀏覽量
123204
發布評論請先 登錄
相關推薦
評論