那曲檬骨新材料有限公司

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

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

3天內不再提示

AN-2058: ADuCM355用戶引導加載程序

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

已擦除的ADuCM355 閃存由于沒有內核引導加載程序,必須首先由用戶應用程序通過串行線進行編程

用戶應用程序可以實現自己的引導加載程序,提供一個用于現場自我更新的機制。實現自己的用戶引導加載程序要求以適當的方式構建用戶應用程序,使其適合用戶引導加載程序。

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

ADUCM355背景

用戶引導加載程序的實現利用了ADuCM355的以下特性。

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

復位后,片上內核立即執行以下操作:

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

留在片上內核中具有以下優點:

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

用戶引導加載程序的實現

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

圖1.內存布局

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

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

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

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

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

引導加載程序的放置

用戶引導加載程序駐留在用戶閃存的前8 kB中。用戶引導加載程序的構建與任何其他ADuCM355應用程序一樣,帶有異常向量表、校驗和放置以及用戶閃存元數據。

用戶應用程序的放置

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

用戶閃存元數據偏移0x2000。

用戶引導加載程序元數據

用戶引導加載程序元數據由片上內核檢查并執行相應操作。片上內核首先確保用戶引導加載程序區域的有效性,然后轉移控制權并將用戶閃存寫保護應用于用戶閃存的用戶引導加載程序區域。

用戶應用程序元數據

用戶應用程序元數據由用戶引導加載程序檢查并執行相應操作。用戶引導加載程序首先確保用戶應用程序區域的有效性,然后轉移控制權并將用戶閃存寫保護應用于用戶閃存的用戶應用程序區域。

用戶引導加載程序對用戶應用程序元數據執行的檢查和操作,與片上內核對用戶引導加載程序元數據(或標準應用程序元數據)執行的檢查和操作類型相同,僅更改所使用的地址和范圍。這樣,標準應用程序只需偏移0x2000便可輕松轉換為由用戶引導加載程序進行操作。

桌面應用程序

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

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

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

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

微信截圖_20200307100422.png

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

轉換步驟

轉換現有應用程序以與用戶引導加載程序或用戶應用程序模型一起使用時,需要執行如下步驟。

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

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

圖5.指定自定義鏈接器配置文件
5. 用戶應用程序校驗和的計算范圍必須根據更改的內存布局加以調整。要在IAR Embedded Workbench中調整校驗和計算,請轉到鏈接器(Linker) > 校驗和(Checksum) 選項卡,如圖6所示。在 起始地址(Start address) 框中輸入 0x2000 ,在 結束地址(End address) 框中輸入 0x27FB
在標準應用程序中,片上內核使用此計算來檢查用戶閃存中應用程序的完整性。
在用戶引導加載程序或用戶應用程序模型中,片上內核在切換到用戶引導加載程序之前先檢查其完整性,用戶引導加載程序在切換到用戶應用程序之前先檢查其完整性。微信截圖_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. 最后一步是向主程序添加一個函數。

    void __iar_init_core (void)

    {

    SCB->VTOR = (uint32_t)

    &__vector_table;

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

現在可以正常下載和調試此應用程序。

引導模式引腳

片上內核和用戶引導加載程序具有不同的引導模式引腳,這些引腳會改變各自的執行流程。

片上內核引導模式引腳的優先級高于用戶引導加載程序引導模式引腳的優先級。

片上內核BM/P1.1引腳

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

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

用戶引導加載程序引導模式P1.0/SYS_WAKE引腳

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

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

微信截圖_20200314102240.png

圖7.引導加載程序流程圖

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程器
    +關注

    關注

    9

    文章

    398

    瀏覽量

    42421
  • 應用程序
    +關注

    關注

    38

    文章

    3292

    瀏覽量

    57911
收藏 人收藏

    評論

    相關推薦

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

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

    aducm355內部的溫度傳感器怎么使用?p2.1口的中斷是怎么產生的?

    aducm355內部的溫度傳感器怎么使用?p2.1口的中斷是怎么產生的?
    發表于 01-11 08:15

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

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

    ADUCM355 ADC是否可以設為差動輸入模式?

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

    設計的PCB使用了ADuCm355作為主控,在Keil中識別不到芯片的ID號是什么原因導致的呢?

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

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

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

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

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

    ADuCM355和SmartMesh IP技術的無線水質監測系統介紹

    本文介紹使用ADI的ADuCM355和SmartMesh IP技術的無線水質監測系統。
    發表于 06-17 06:52

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

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

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

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

    ADuCM355和LTC6078解決方案

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

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

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

    EVAL-ADuCM355QSPZ用戶指南

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

    EVAL-ADuCM355 EVAL-ADuCM355評估板

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

    Stellaris引導加載程序用戶指南

    電子發燒友網站提供《Stellaris引導加載程序用戶指南.pdf》資料免費下載
    發表于 12-23 16:24 ?0次下載
    Stellaris<b class='flag-5'>引導</b><b class='flag-5'>加載</b><b class='flag-5'>程序</b><b class='flag-5'>用戶</b>指南
    A8百家乐赌场娱乐网规则| 德州扑克 梭哈| 百苑百家乐官网的玩法技巧和规则| bet365娱乐场| 百家乐千术手法| 菲律宾百家乐官网娱乐场| 博彩策略| 百家乐备用网址| 百家乐不倒翁缺点| 百家乐官网台布哪里有卖| 网上真钱麻将游戏| 大发888娱乐场怎么才能赢到钱| 百家乐二人视频麻将| 百家乐官网挂机软件| 百家乐官网在线赌场娱乐网规则 | 百家乐桌布呢布| 百家乐国际娱乐| 百家乐官网对子的玩法| 百家乐官网手机软件| 大发888娱乐城手机版| 大世界百家乐的玩法技巧和规则 | 半圆百家乐官网桌子| 万豪国际娱乐城| 速博国际娱乐| 大发888游戏平台 黄埔网| 百家乐平预测软件| 电脑百家乐玩| 百家乐pc| 合肥百家乐赌博机| 澳门百家乐小游戏| 澳门百家乐娱乐注册| 棋牌百家乐怎么玩| 做生意门朝哪个方向好| 属鼠和属虎的人能在一起做生意吗 | 威尼斯人娱乐城代理合作| 正品百家乐地址| 菲律宾百家乐娱乐平台| 什么百家乐九宫三路| 真人百家乐的玩法技巧和规则| 百家乐怎么押钱| 百家乐伴侣|