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

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

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

AN-2058: ADuCM355用戶引導(dǎo)加載程序

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-06-16 16:31 ? 次閱讀

已擦除的ADuCM355 閃存由于沒有內(nèi)核引導(dǎo)加載程序,必須首先由用戶應(yīng)用程序通過串行線進行編程。

用戶應(yīng)用程序可以實現(xiàn)自己的引導(dǎo)加載程序,提供一個用于現(xiàn)場自我更新的機制。實現(xiàn)自己的用戶引導(dǎo)加載程序要求以適當(dāng)?shù)姆绞綐?gòu)建用戶應(yīng)用程序,使其適合用戶引導(dǎo)加載程序。

本應(yīng)用筆記介紹了一種實現(xiàn)用引導(dǎo)加載程序的方法(以下稱為"用戶引導(dǎo)加載程序"):將用戶閃存劃分為兩個單獨的區(qū)域,并在一個區(qū)域中實現(xiàn)與CrossCore ^?^ 串行閃存編程器兼容的引導(dǎo)加載程序。

ADUCM355背景

用戶引導(dǎo)加載程序的實現(xiàn)利用了ADuCM355的以下特性。

ADuCM355具有128 kB的用戶閃存,為了擦除和寫保護目的,用戶閃存被分為多個單獨的8 kB塊。

復(fù)位后,片上內(nèi)核立即執(zhí)行以下操作:

  • 利用制造商數(shù)據(jù)引導(dǎo)器件。
  • 評估用戶閃存元數(shù)據(jù),以確定是切換到運行用戶應(yīng)用程序還是留在片上內(nèi)核中。
  • 評估用戶閃存元數(shù)據(jù),以確定是否對用戶閃存空間內(nèi)的閃存塊進行寫保護。如果用戶應(yīng)用程序有效,它將應(yīng)用塊寫保護并退出用戶應(yīng)用程序。如果用戶應(yīng)用程序無效或BM/P1.1引腳被置為有效,則它不會應(yīng)用塊寫保護,而是留在片上內(nèi)核中(內(nèi)核執(zhí)行圖參見圖7)。

留在片上內(nèi)核中具有以下優(yōu)點:

  • 恢復(fù)。禁止用戶代碼運行和執(zhí)行可能阻止對器件進行所需訪問的操作。
  • 避免寫保護。無法擦除寫保護塊,即使批量擦除也不行。這樣就避免了通過用戶閃存元數(shù)據(jù)間接應(yīng)用于用戶閃存或通過用戶應(yīng)用程序執(zhí)行直接應(yīng)用于用戶閃存的寫保護。由于代碼執(zhí)行仍在內(nèi)核中,因此可以進行用戶閃存批量擦除。

用戶引導(dǎo)加載程序的實現(xiàn)

用戶引導(dǎo)加載程序放置在用戶閃存的前8 kB中。剩余的120 kB可用于用戶應(yīng)用程序開發(fā)(見圖1)。微信截圖_20200307100422.png

圖1.內(nèi)存布局

用戶引導(dǎo)加載程序是一個獨立的應(yīng)用程序,位于用戶閃存的前8 kB中。用戶應(yīng)用程序必須從0x2000(即8 kB)開始執(zhí)行,這需要對標(biāo)準(zhǔn)應(yīng)用程序進行一些細微修改。

為了進行修改,需要使用自定義鏈接器配置文件,以將用戶應(yīng)用程序放置在用戶閃存的適當(dāng)區(qū)域。

自定義鏈接器文件的加載可以在IAR Embedded Workbench ^?^ 環(huán)境中通過訪問鏈接器 > 配置選項卡來實現(xiàn),如圖5所示。完整過程參見"轉(zhuǎn)換步驟"部分。

將.icf鏈接器腳本文件與GitHub上提供的ADuCM355標(biāo)準(zhǔn)文件進行比較,圖2突出顯示了一些不同之處。
微信截圖_20200312083258.png

圖2.鏈接器配置文件修改

引導(dǎo)加載程序的放置

用戶引導(dǎo)加載程序駐留在用戶閃存的前8 kB中。用戶引導(dǎo)加載程序的構(gòu)建與任何其他ADuCM355應(yīng)用程序一樣,帶有異常向量表、校驗和放置以及用戶閃存元數(shù)據(jù)。

用戶應(yīng)用程序的放置

用戶應(yīng)用程序從0x2000開始放置,應(yīng)用程序可用空間減少0x2000。Cortex ^?^ -M3中斷向量表位于0x2000。用戶引導(dǎo)加載程序會更新Cortex-M3向量表偏移寄存器(VTOR)以匹配該位置。

用戶閃存元數(shù)據(jù)偏移0x2000。

用戶引導(dǎo)加載程序元數(shù)據(jù)

用戶引導(dǎo)加載程序元數(shù)據(jù)由片上內(nèi)核檢查并執(zhí)行相應(yīng)操作。片上內(nèi)核首先確保用戶引導(dǎo)加載程序區(qū)域的有效性,然后轉(zhuǎn)移控制權(quán)并將用戶閃存寫保護應(yīng)用于用戶閃存的用戶引導(dǎo)加載程序區(qū)域。

用戶應(yīng)用程序元數(shù)據(jù)

用戶應(yīng)用程序元數(shù)據(jù)由用戶引導(dǎo)加載程序檢查并執(zhí)行相應(yīng)操作。用戶引導(dǎo)加載程序首先確保用戶應(yīng)用程序區(qū)域的有效性,然后轉(zhuǎn)移控制權(quán)并將用戶閃存寫保護應(yīng)用于用戶閃存的用戶應(yīng)用程序區(qū)域。

用戶引導(dǎo)加載程序?qū)τ脩魬?yīng)用程序元數(shù)據(jù)執(zhí)行的檢查和操作,與片上內(nèi)核對用戶引導(dǎo)加載程序元數(shù)據(jù)(或標(biāo)準(zhǔn)應(yīng)用程序元數(shù)據(jù))執(zhí)行的檢查和操作類型相同,僅更改所使用的地址和范圍。這樣,標(biāo)準(zhǔn)應(yīng)用程序只需偏移0x2000便可輕松轉(zhuǎn)換為由用戶引導(dǎo)加載程序進行操作。

桌面應(yīng)用程序

該協(xié)議與ADI公司CrossCore串行閃存編程器工具兼容,后者可從www.analog.com/crosscore-utilities下載。

CrossCore串行閃存編程器工具支持幾種不同的協(xié)議變體。用戶引導(dǎo)加載程序的這種實現(xiàn)支持 ADuCM3027ADuCM3029所實現(xiàn)的版本。選擇Target下的ADuCM302x選項,如圖3所示。

操作(Action) 支持的選項有 編程(Program)擦除(Erase) 。

點擊 瀏覽(Browse) 按鈕,從 要下載的文件(File to download) 中加載用戶應(yīng)用程序Intel十六進制文件,然后點擊 開始(Start) 按鈕。

微信截圖_20200307100422.png

圖3.CrossCore串行閃存編程器窗口

轉(zhuǎn)換步驟

轉(zhuǎn)換現(xiàn)有應(yīng)用程序以與用戶引導(dǎo)加載程序或用戶應(yīng)用程序模型一起使用時,需要執(zhí)行如下步驟。

  1. 從GitHub下載或克隆ADuCM355軟件開發(fā)套件(SDK)文件。在GitHub上搜索ADuCM355,找到aducm355-examples SDK文件。
  2. 在SDK中,導(dǎo)航至examples > DigitalDie > M355_Bootloader 。將 BootloaderConstantArray .c文件以及iar文件夾中的 user-bootloader-sample-application.icf文件復(fù)制并粘貼到要實現(xiàn)引導(dǎo)加載程序的活動項目目錄中。
  3. 在IAR Embedded Workbench中打開所需的項目,然后在項目瀏覽器中右鍵點擊應(yīng)用程序文件夾,將BootloaderConstantArray.c文件添加到項目中。然后轉(zhuǎn)到添加(Add) > 添加文件(Add Files) ,選擇BootloaderConstantArray.c文件。用戶引導(dǎo)加載程序以C文件提供,該C文件包含一個用來實現(xiàn)用戶引導(dǎo)加載程序的C指令代碼數(shù)組。還有一個自定義鏈接器配置文件,用以確保將此數(shù)組正確放置在0x0000 0000處。!微信截圖_20200312083258.png

圖4.添加引導(dǎo)加載程序
4. 在IAR Embedded Workbench中訪問鏈接器 (Linker) 配置(Config) 選項卡,選擇自定義鏈接器配置文件,如圖5所示。選擇覆蓋 默認(rèn)值(Override default) 框,然后瀏覽查找user-bootloader-sample-application.icf文件。
此更改的鏈接器配置文件確保用戶引導(dǎo)加載程序和用戶應(yīng)用程序根據(jù)用戶引導(dǎo)加載程序或用戶應(yīng)用程序模型正確放置。
微信截圖_20200312083305.png

圖5.指定自定義鏈接器配置文件
5. 用戶應(yīng)用程序校驗和的計算范圍必須根據(jù)更改的內(nèi)存布局加以調(diào)整。要在IAR Embedded Workbench中調(diào)整校驗和計算,請轉(zhuǎn)到鏈接器(Linker) > 校驗和(Checksum) 選項卡,如圖6所示。在 起始地址(Start address) 框中輸入 0x2000 ,在 結(jié)束地址(End address) 框中輸入 0x27FB 。
在標(biāo)準(zhǔn)應(yīng)用程序中,片上內(nèi)核使用此計算來檢查用戶閃存中應(yīng)用程序的完整性。
在用戶引導(dǎo)加載程序或用戶應(yīng)用程序模型中,片上內(nèi)核在切換到用戶引導(dǎo)加載程序之前先檢查其完整性,用戶引導(dǎo)加載程序在切換到用戶應(yīng)用程序之前先檢查其完整性。微信截圖_20200314102235.png

圖6.校驗和計算
6. 修改startup_ADuCM355.c文件。

  1. 添加以下代碼行:

    /* Linker provided symbols */

    extern uint32_t FINAL_CRC_PAGE;

  2. 搜索NumOfCRCPages并將以下行:

    __root const uint32_t NumOfCRCPages=0;

    替換為以下行:

    __root const uint32_t NumOfCRCPages=(uint32_t)&FINAL_CRC_PAGE;

  3. 最后一步是向主程序添加一個函數(shù)。

    void __iar_init_core (void)

    {

    SCB->VTOR = (uint32_t)

    &__vector_table;

    }
    此函數(shù)的作用是將VTOR指向用戶固件異常表。引導(dǎo)加載程序已經(jīng)執(zhí)行此步驟,但在調(diào)試模式下,IAR Embedded Workbench會繞過運行引導(dǎo)加載程序的步驟。IAR Embedded Workbench調(diào)試器執(zhí)行Type 0復(fù)位(硬件復(fù)位),然后將PC設(shè)置到它認(rèn)為的復(fù)位向量。因此,為使中斷在調(diào)試模式下工作,此函數(shù)是必需的。

現(xiàn)在可以正常下載和調(diào)試此應(yīng)用程序。

引導(dǎo)模式引腳

片上內(nèi)核和用戶引導(dǎo)加載程序具有不同的引導(dǎo)模式引腳,這些引腳會改變各自的執(zhí)行流程。

片上內(nèi)核引導(dǎo)模式引腳的優(yōu)先級高于用戶引導(dǎo)加載程序引導(dǎo)模式引腳的優(yōu)先級。

片上內(nèi)核BM/P1.1引腳

BM/P1.1繞過用戶閃存中所有軟件的執(zhí)行。

BM/P1.1引腳連接到EVAL-ADucM355QSPZ評估板上的開關(guān)S3。按住開關(guān)S3,隨后執(zhí)行復(fù)位操作(按下再釋放開關(guān)S1),就會將片上內(nèi)核置于引導(dǎo)模式。

用戶引導(dǎo)加載程序引導(dǎo)模式P1.0/SYS_WAKE引腳

P1.0/SYS_WAKE引腳繞過用戶閃存中可能存在的用戶應(yīng)用程序的執(zhí)行。如果置為有效,則用戶引導(dǎo)加載程序不檢查是否存在有效的用戶應(yīng)用程序,而立即進入下載模式。

P1.0/SYS_WAKE引腳連接到EVAL-ADucM355QSPZ評估板上的開關(guān)S2。按住開關(guān)S2,隨后執(zhí)行復(fù)位操作(按下再釋放開關(guān)S1),就會將用戶引導(dǎo)加載程序置于引導(dǎo)模式。

微信截圖_20200314102240.png

圖7.引導(dǎo)加載程序流程圖

審核編輯:郭婷

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

    關(guān)注

    9

    文章

    393

    瀏覽量

    42239
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3237

    瀏覽量

    57546
收藏 人收藏

    評論

    相關(guān)推薦

    ADI推出新型智能電子化學(xué)傳感器接口IC—ADuCM355

    ADI近日宣布推出一款可實現(xiàn)新一代智能電子化學(xué)傳感器的新型傳感器接口IC。ADuCM355精密模擬微控制器帶有生物傳感器和化學(xué)傳感器接口,是目前能夠在單個芯片上同時實現(xiàn)恒電位儀和電化學(xué)阻抗頻譜分析儀(EIS)功能的唯一解決方案。
    的頭像 發(fā)表于 06-28 10:42 ?1.1w次閱讀

    aducm355內(nèi)部的溫度傳感器怎么使用?p2.1口的中斷是怎么產(chǎn)生的?

    aducm355內(nèi)部的溫度傳感器怎么使用?p2.1口的中斷是怎么產(chǎn)生的?
    發(fā)表于 01-11 08:15

    請問ADUCM355的阻抗測量范圍是多少?

    我想請問ADUCM355的阻抗測量范圍,因為我在文檔開頭的介紹中看到是<1-10M歐,而在下面的參數(shù)表里寫的確是只到10000歐,也就是10k歐,我想請問哪個是對的呢?英文文檔里也是這樣。
    發(fā)表于 01-11 07:49

    ADUCM355 ADC是否可以設(shè)為差動輸入模式?

    ADUCM355 ADC 是否可以設(shè)為差動輸入模式?
    發(fā)表于 01-11 07:48

    設(shè)計的PCB使用了ADuCm355作為主控,在Keil中識別不到芯片的ID號是什么原因?qū)е碌哪兀?/a>

    設(shè)計的PCB使用了ADuCm355作為主控,打算使用四線SWD下載程序。但是,在Keil中識別不到芯片的ID號,請問是什么原因?qū)е碌哪亍?我用的連接方式為測試Pin與下載針,用手按住連接的。電路板上的供能芯片的模擬電源和數(shù)字電源的電壓都是3.3v。
    發(fā)表于 01-24 08:30

    請問ADuCM355序列器如何控制模擬前端和如何使用DAC輸出交流電?

    您好,我現(xiàn)在正使用ADuCM355測試板測試電導(dǎo)率 參考的例程為M355_4WireZ 目前我遇到了兩個問題不能參考手冊和例程的注釋中解決 1.例程通過序列器控制模擬前端進行操作,但是在例程中寫入
    發(fā)表于 05-20 08:15

    請問ADuCM355序列器如何控制模擬前端和如何使用DAC輸出交流電?

    您好,我現(xiàn)在正使用ADuCM355測試板測試電導(dǎo)率 參考的例程為M355_4WireZ 目前我遇到了兩個問題不能參考手冊和例程的注釋中解決 1.例程通過序列器控制模擬前端進行操作,但是在例程中寫入
    發(fā)表于 05-29 06:27

    ADuCM355和SmartMesh IP技術(shù)的無線水質(zhì)監(jiān)測系統(tǒng)介紹

    本文介紹使用ADI的ADuCM355和SmartMesh IP技術(shù)的無線水質(zhì)監(jiān)測系統(tǒng)。
    發(fā)表于 06-17 06:52

    新一代智能電子化學(xué)傳感器的新型傳感器接口IC ADuCM355詳解

    本文介紹了ADuCM355主要特性,功能框圖,應(yīng)用電路以及評估板EVAL-ADuCM355QSPZ主要特性和應(yīng)用連接圖。
    的頭像 發(fā)表于 07-22 05:24 ?7950次閱讀
    新一代智能電子化學(xué)傳感器的新型傳感器接口IC <b class='flag-5'>ADuCM355</b>詳解

    ADUCM355 具有化學(xué)傳感器接口的精密模擬微控制器

    電子發(fā)燒友網(wǎng)為你提供ADI(ti)ADUCM355相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ADUCM355的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ADUCM355真值表,ADUCM355
    發(fā)表于 02-22 15:02
    <b class='flag-5'>ADUCM355</b> 具有化學(xué)傳感器接口的精密模擬微控制器

    ADuCM355和LTC6078解決方案

    在便攜式連續(xù)水質(zhì)監(jiān)測應(yīng)用中,需要小型的低功耗和平臺化測量解決方案。本視頻演示的ADuCM355和LTC6078解決方案能夠進行常見傳感器測量和診斷測試。
    的頭像 發(fā)表于 06-28 06:12 ?2162次閱讀

    ADuCM355如何提升電化學(xué)氣體傳感器的性能

    本視頻展示ADuCM355如何提升電化學(xué)氣體傳感器的智能水平,實現(xiàn)自診斷并延長使用壽命。
    的頭像 發(fā)表于 06-28 06:10 ?3813次閱讀

    EVAL-ADuCM355QSPZ用戶指南

    EVAL-ADuCM355QSPZ用戶指南
    發(fā)表于 04-27 19:16 ?11次下載
    EVAL-<b class='flag-5'>ADuCM355</b>QSPZ<b class='flag-5'>用戶</b>指南

    EVAL-ADuCM355 EVAL-ADuCM355評估板

    電子發(fā)燒友網(wǎng)為你提供ADI(ti)EVAL-ADuCM355相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有EVAL-ADuCM355的引腳圖、接線圖、封裝手冊、中文資料、英文資料,EVAL-ADuCM355真值表,EVAL-
    發(fā)表于 07-15 09:00

    如何使用CAN引導(dǎo)加載程序在MAXQ7665A中加載用戶應(yīng)用代碼

    CAN引導(dǎo)加載程序可通過CAN接口對MAXQ7665A微控制器進行編程。引導(dǎo)加載程序還可幫助設(shè)計
    的頭像 發(fā)表于 02-21 16:40 ?731次閱讀
    如何使用CAN<b class='flag-5'>引導(dǎo)</b><b class='flag-5'>加載</b><b class='flag-5'>程序</b>在MAXQ7665A中<b class='flag-5'>加載</b><b class='flag-5'>用戶</b>應(yīng)用代碼