RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用高速微控制器作為自舉加載程序

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-03-01 13:57 ? 次閱讀

概述

高速微控制器系列的一些成員集成了內(nèi)部EPROM或ROM用于程序存儲。但是,某些應(yīng)用需要程序存儲器的系統(tǒng)內(nèi)重新編程。使用帶有內(nèi)部程序存儲器的Maxim高速微控制器重新加載閃存或NV RAM等外部非易失性存儲器,可以輕松實現(xiàn)這種系統(tǒng)。與使用具有內(nèi)部NV RAM程序存儲器或昂貴的引導塊閃存的設(shè)備相比,使用內(nèi)部程序存儲器作為引導加載程序可以獲得的低成本解決方案。

最常見的引導加載程序配置包含兩個元素:使用引導加載程序或引導加載程序編程的微控制器,以及用于保存用戶應(yīng)用軟件的外部存儲設(shè)備(如NV RAM或閃存)。當系統(tǒng)在上電或外部復位后復位時,它將開始從微控制器的內(nèi)部程序存儲器中執(zhí)行指令。微控制器內(nèi)的引導加載程序代碼首先檢查“加載器/無加載程序”;激勵,例如特定端口引腳上的邏輯低電平、串行端口字符等。這允許系統(tǒng)決定是否應(yīng)加載新的用戶程序,或者是否應(yīng)使用現(xiàn)有用戶程序開始執(zhí)行。如果未收到激勵,表示不需要負載,則器件將通過ROMSIZE功能禁用內(nèi)部程序存儲器,并從外部存儲器開始執(zhí)行。如果存在刺激,器件將執(zhí)行引導加載程序例程并開始重新編程外部存儲器。

本應(yīng)用筆記將舉例說明設(shè)計人員如何使用外部閃存或NV RAM為基于高速微控制器的設(shè)計增加系統(tǒng)內(nèi)可重編程性。介紹了一般的硬件和軟件設(shè)計指南。支持本文所述技術(shù)的軟件示例可通過Maxim的匿名FTP站點(互聯(lián)網(wǎng))或BBS以電子格式提供。

調(diào)用引導加載程序

有幾種方法可以調(diào)用加載程序。最簡單的方法是專用于一個通用I/O引腳,作為高速微控制器內(nèi)部復位例程的一部分進行采樣。本應(yīng)用筆記中的示例使用P1.7和INT5,因為它對現(xiàn)有8051代碼設(shè)計的干擾最小。復位后,器件將開始從內(nèi)部 EPROM 執(zhí)行代碼。內(nèi)部程序?qū)σ_執(zhí)行快速測試,以確定是否應(yīng)調(diào)用加載程序。由于此引腳在重置后默認為高狀態(tài),因此建議將此引腳上的低條件用作調(diào)用加載器的信號。使用中斷引腳還允許器件在通過中斷服務(wù)例程重置以外的時間調(diào)用加載程序。用于斷位邏輯低電平的方法可以像專用開關(guān)一樣簡單,也可以通過RS-232電纜從主機進行更復雜的連接,在連接時將引腳拉低。

另一種方法是使用串行端口調(diào)用引導加載程序。重置后,設(shè)備可以連續(xù)輪詢串行端口以查找字符。如果在指定的時間段內(nèi)未收到字符,程序?qū)⑼顺黾虞d程序并開始從外部存儲器執(zhí)行。這種方法的優(yōu)點是不需要通用端口引腳。它的主要缺點是,設(shè)備在運行用戶應(yīng)用程序之前每次重置時都會遇到固定的延遲。

退出引導加載程序

將新軟件加載到外部存儲器后,或者如果不需要加載程序操作,系統(tǒng)將需要退出加載程序并開始從外部程序存儲器執(zhí)行。ROMSIZE 功能提供了一種快速方便的方法。ROMSIZE 寄存器允許軟件“關(guān)閉”;內(nèi)部程序存儲器并強制所有程序在外部執(zhí)行,類似于將/EA引腳拉低。然后,軟件應(yīng)在 0000h 對復位矢量執(zhí)行 LJMP。

必須從內(nèi)部存儲器存儲器范圍之外的外部存儲器位置修改ROMSIZE寄存器。例如,DS87C520包含16kB的EPROM。修改ROMsize寄存器的指令應(yīng)位于外部存儲器中4000h或更大的地址。如果不這樣做,如果內(nèi)存映射在指令中間切換,則可能導致代碼執(zhí)行失敗。

最簡單的方法是在內(nèi)存的高端映射一個短例程(~16 字節(jié))。如果使用 64kB 的內(nèi)存空間,則可能是 FFF0h。這提供了干擾用戶應(yīng)用程序代碼的最小機會。完成加載程序例程后,軟件將跳轉(zhuǎn)到外部存儲器(本例中位置FFF0h),修改ROMsize寄存器以禁用內(nèi)部程序存儲器,然后跳轉(zhuǎn)到位置0000h。這將模擬用戶應(yīng)用程序代碼的重置。在修改ROMSIZE寄存器之后,必須包括NOP或其他虛擬指令,以允許存儲器選擇電路的一個機器周期來禁用內(nèi)部程序存儲器。建議使用以下例程:

CSEG at 0FFF0h MOV TA, #0AAh MOV TA, #55h MOV ROMSIZE, #0h NOP LJMP 0000h

引導加載程序軟件

引導加載程序可以包含許多不同的功能,這些功能因使用的特定存儲設(shè)備而異。通常,這些應(yīng)包括加載、驗證和 CRC 命令。閃存設(shè)備將需要芯片擦除命令,NV RAM可能會發(fā)現(xiàn)填充命令很有用。

圖 1 說明了引導加載程序的基本操作。軟件首先檢查啟動加載器的信號。如果存在,設(shè)備將執(zhí)行用戶請求的引導加載程序功能。完成后,或者如果未檢測到加載器激勵,器件將跳轉(zhuǎn)到位置FFF0h,修改ROMsize寄存器以禁用內(nèi)部EPROM,然后跳回到重新啟動矢量。這模擬設(shè)備在重置后在地址 0000h 開始執(zhí)行。

pYYBAGP-6UqAVx_kAAAlAHJSTeU696.gif

圖1.引導加載程序流程圖。

Maxim提供高速微控制器系列的引導加載程序示例。本應(yīng)用筆記中引用的所有軟件均可下載(ZIP)。程序集語言源文件HSM_LOAD。ASM 包含可選的包含文件,以支持多種不同的內(nèi)存類型,包括閃存和 NV RAM。以下是支持的一些命令的列表:

英特爾十六進制文件加載到內(nèi)存?

根據(jù)內(nèi)存驗證十六進制文件

擦除芯片(僅限閃存)

用數(shù)據(jù)填充內(nèi)存范圍(僅限 NV RAM)

計算CRC

修改和讀取端口值

轉(zhuǎn)儲英特爾十六進制格式的內(nèi)存內(nèi)容

出口裝載機

硬件

圖 2 說明了在引導加載程序設(shè)計中使用 29F010 5.0V 閃存。盡管此配置旨在與文件HSM_LOAD中顯示的軟件兼容。ASM,它可以很容易地適應(yīng)其他閃存或NV RAM設(shè)備。某些閃存設(shè)備(如 28Fxxx 系列)需要外部 12V V聚丙烯用于編程。包含這些器件的設(shè)計需要包括電壓源。

poYBAGP-6UuAXXXgAAAWJHj5iTo754.gif

圖2.引導加載程序硬件。

盡管 29F010 是 128kB 設(shè)備,但此示例僅通過將 A64 地址線設(shè)置為低電平來使用 16kB。這不會影響閃存命令功能,因為大多數(shù)設(shè)備在其編程算法期間設(shè)計為忽略A16。要使用 A16,請將其連接到未使用的通用端口引腳。請注意,端口引腳將默認為邏輯高電平狀態(tài),選擇閃存的上限 64kB??梢栽陂W存器件的端口引腳和A16之間使用逆變器,使其在上電時選擇較低的64kB。這將簡化代碼放置?!癙”;引導加載程序的命令可用于在加載過程中操縱閃存的 A16 引腳,以加載器件的上部和下部 64kB 組。有關(guān)組切換的更多信息,請參見應(yīng)用筆記81:“高速微控制器系列的存儲器擴展”。

DS87C520和DS87C530器件版本A4及更早版本包含與/PSEN信號有關(guān)的勘誤表,需要對上述硬件進行細微更改。在這些器件上,無論器件是使用內(nèi)部還是外部程序存儲器工作,/PSEN信號都會切換。這將在寫入閃存設(shè)備期間導致沖突。圖 3 說明了一種臨時解決方法。此配置限制在從外部存儲器開始操作之前必須刪除 P1.7 上的負載信號。這是一個小問題,因為大多數(shù)應(yīng)用程序?qū)⒃趩为毜牟襟E中對閃存進行編程,重置設(shè)備,然后開始操作。此錯誤將在設(shè)備的后續(xù)修訂版中得到糾正。

pYYBAGP-6UyAEOvNAAAZ-tzUp-g994.gif

圖3.DS87C520/DS87C530 修訂版 A4 的引導加載程序硬件。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151314
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7484

    瀏覽量

    163761
  • EPROM
    +關(guān)注

    關(guān)注

    3

    文章

    124

    瀏覽量

    54406
收藏 人收藏

    評論

    相關(guān)推薦

    如何在I2C上從外部微控制器運行引導加載程序?

    編程部分。我還沒有找到任何關(guān)于如何使用外部微控制器作為引導加載程序的文檔。我只能在HSSP編程接口上找到文檔,如果它壞了,可能會擦除引導加載
    發(fā)表于 07-12 09:09

    高速8位微控制器的用武之地

    本文主要介紹的是高速8位微控制器的用武之地。
    發(fā)表于 04-23 14:05 ?13次下載

    高速微控制器系列向超高速閃存微控制器的升級

    高速微控制器系列向超高速閃存微控制器的升級 Porting Applications from the High-Speed Micro Family to
    發(fā)表于 07-27 23:26 ?957次閱讀

    高速微控制器系列向超高速閃存微控制器的升級

    高速微控制器系列向超高速閃存微控制器的升級 摘要:多種原
    發(fā)表于 08-13 13:29 ?731次閱讀

    高速微控制器系列向超高速閃存微控制器的升級

    摘要:多種原因會促使我們把以前使用高速微控制器(DS80C310/DS80C320/DS80C323/DS8xC520)的8051設(shè)計升級到新的超高速閃存微控制器(DS89C430/D
    發(fā)表于 04-23 10:32 ?523次閱讀

    實現(xiàn)MAXQ2000微控制器的JTAG加載主機

    摘要:MAXQ®微控制器提供的JTAG啟動加載程序使外部JTAG主機能夠利用一組標準命令,輕松地識別MAXQ微控制器,并對其進行編程。本應(yīng)用筆記中的代碼可以用作構(gòu)建全功能JTA
    發(fā)表于 04-23 16:22 ?1529次閱讀
    實現(xiàn)MAXQ2000<b class='flag-5'>微控制器</b>的JTAG<b class='flag-5'>加載</b>主機

    如何在STM32微控制器引導加載中使用USART協(xié)議的詳細資料說明

    本應(yīng)用程序說明描述了STM32微控制器引導加載中使用的USART協(xié)議。它詳細描述了每個支持的命令。有關(guān)USART硬件資源和設(shè)備引導加載
    發(fā)表于 12-13 15:20 ?4次下載
    如何在STM32<b class='flag-5'>微控制器</b>引導<b class='flag-5'>加載</b><b class='flag-5'>器</b>中使用USART協(xié)議的詳細資料說明

    什么是微控制器?如何編程微控制器?

    微控制器進行編程或刻錄意味著“將程序從編譯傳輸?shù)?b class='flag-5'>微控制器的存儲”。微控制器
    的頭像 發(fā)表于 08-21 15:40 ?1w次閱讀

    如何使用NYASM微控制器應(yīng)用程序

    這份文件主要介紹如何使用NYASM來開發(fā)九齊科技的微控制器應(yīng)用程序
    發(fā)表于 06-15 16:13 ?4次下載
    如何使用NYASM<b class='flag-5'>微控制器</b>應(yīng)用<b class='flag-5'>程序</b>

    AN5405_STM32H7和STM32L5系列微控制器加載程序時使用的FDCAN協(xié)議

    AN5405_STM32H7和STM32L5系列微控制器加載程序時使用的FDCAN協(xié)議
    發(fā)表于 11-21 17:06 ?1次下載
    AN5405_STM32H7和STM32L5系列<b class='flag-5'>微控制器</b><b class='flag-5'>加載</b><b class='flag-5'>程序</b>時使用的FDCAN協(xié)議

    為MAXQ2000微控制器實現(xiàn)JTAG自舉加載程序主控

    通過使用一組標準化命令,MAXQ微控制器提供的JTAG引導加載程序允許外部JTAG主機輕松識別和編程任何MAXQ微控制器
    的頭像 發(fā)表于 02-21 11:22 ?1126次閱讀
    為MAXQ2000<b class='flag-5'>微控制器</b>實現(xiàn)JTAG<b class='flag-5'>自舉</b><b class='flag-5'>加載</b><b class='flag-5'>程序</b>主控

    使用高速微控制器系列進行內(nèi)存擴展

    高速微控制器系列的所有成員都設(shè)計用于直接處理高達 64kB 的 程序和數(shù)據(jù)存儲。但是,有時應(yīng)用程序需要比現(xiàn)在更多的內(nèi)存 可在片上使用,也可
    的頭像 發(fā)表于 03-01 13:51 ?897次閱讀
    使用<b class='flag-5'>高速</b><b class='flag-5'>微控制器</b>系列進行內(nèi)存擴展

    使用微控制器上的引導加載程序使您的嵌入式設(shè)計面向未來

    引導加載程序是一個程序,允許您通過許多方便的接口加載應(yīng)用程序固件,如UART,CAN/CAN FD,LIN,I 2C等。當您打開或重置
    的頭像 發(fā)表于 05-06 10:55 ?1341次閱讀

    用于Hercules微控制器的CAN總線引導加載程序

    電子發(fā)燒友網(wǎng)站提供《用于Hercules微控制器的CAN總線引導加載程序.pdf》資料免費下載
    發(fā)表于 09-19 10:52 ?0次下載
    用于Hercules<b class='flag-5'>微控制器</b>的CAN總線引導<b class='flag-5'>加載</b><b class='flag-5'>程序</b>

    用于Hercules微控制器的CAN總線引導加載程序

    電子發(fā)燒友網(wǎng)站提供《用于Hercules微控制器的CAN總線引導加載程序.pdf》資料免費下載
    發(fā)表于 09-19 10:55 ?0次下載
    用于Hercules<b class='flag-5'>微控制器</b>的CAN總線引導<b class='flag-5'>加載</b><b class='flag-5'>程序</b>
    RM新时代网站-首页