国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

使用SEGGER Linker的完整性檢查功能

麥克泰技術 ? 來源:麥克泰技術 ? 2023-05-04 10:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式產品應用中,為了保證系統數據在存儲或者傳輸過程中的完整性,固件映像中通常包含完整性檢查(integrity checks),以檢測映像是否損壞。例如,bootloader可以基于完整性檢查驗證一個更新的固件映像是否可信。或者固件基于完整性檢查可以自我驗證,檢查Flash是否損壞。

SEGGER Embedded Studio從v5.10版本(Linker v3.00及以上版本)開始提供完整性檢查功能,支持多種CRC和消息摘要算法(例如MD5和SHA)。

b39c6296-e708-11ed-ab56-dac502259ad0.png

b3b49e60-e708-11ed-ab56-dac502259ad0.png

01

使用方法

使用Linker提供的完整性檢查功能,首先需要將執行檢查的區域定義為一個region,并為放置計算結果的區域定義一個region。

我們可以為整個Flash區域上創建一個CRC,并將結果放在Flash的末尾 。

此外,我們還可以定義計算CRC的區域的填充值。如:

define region FLASH    = [0x80000000 size 512k];
define region CRC     = [end(FLASH)-4, size 4];
define region APPLICATION = FLASH - CRC; 
fill APPLICATION with 0xFF;

將應用段放到APPLICATION 域。

使用選擇的算法如CRC-32計算CRC。

place in CRC {
 integrity check of APPLICATION with algorithm="CRC-32" fill=0xFF
};

現在,APPLICATION域的CRC-32計算結果將保存在CRC域中。

02

實現

我們使用ST STM32F4_Discovery開發板,基于SEGGER Embedded Studio V7.10 提供的package manager創建STM32F4示例工程。

修改鏈接腳本

首先,我們需要在鏈接定位文件STM32F4xx_Flash_CCM.icf中定義應用程序和計算出的CRC值放置的區域:

define region CRC = [end(FLASH)-4 size 4];
define region APPLICATION = FLASH - CRC;

將應用段放置在APPLICATION區域之后,執行完整性檢查,并將結果將被放置在CRC區域:

place in CRC {
integrity check of APPLICATION with algorithm="CRC-32/STM32" fill=0xFF
};
fill APPLICATION with 0xFF;

最后一行是可選的,確保Flash的所有空白區域使用相同值填充,用于計算CRC。

使用的算法是CRC-32/STM32,與目標處理器使用的算法相同。

03

驗證CRC結果

STM32系列內置了一個CRC-32硬件計算單元,為了驗證生成的CRC,我們將計算結果與STM32 CRC外設的硬件實現進行比較。

在應用程序使用STM32 CRC外設計算應用程序區域上的CRC,然后將其與鏈接器計算的CRC進行比較。

首先使能CRC外設,基于ST CMSIS文件,操作如下:

RCC->AHB1ENR |= RCC_AHB1ENR_CRCEN; // Enable CRC clock
CRC->CR |= CRC_CR_RESET;      // Reset peripheral

為了計算CRC,數據被逐字寫入CRC數據寄存器

do {
           CRC->DR = __REV(*pData);  // Calculate CRC
        pData++;
} while (NumItems--);       
CRCResultHW = CRC->DR;      // Save CRC result

注意,STM32 CRC外設需要反轉一個字中各個字節的順序。為此,我們只需使用Embedded Studio的內部函數__REV()。

運行該應用程序,在Debug Terminal窗口可以看到SEGGER linker CRC和STM32 CRC是匹配的。

b3cf4dc8-e708-11ed-ab56-dac502259ad0.png

通過SEGGER linker支持固件(firmware)完整性檢查,無需外部工具,所有工作都可以在Embedded Studio工具鏈中本地完成,大大簡化了需要完整性檢查的設置。

附:

File  : main.c
Purpose : Example application doing a CRC check using the STM32 CRC peripheral


#include 
#include 
#include "stm32f4xx.h"


#define FLASH_IMAGE_START 0x08000000
#define FLASH_IMAGE_END  0x080FFFFC
#define FLASH_APPLICATION_END (FLASH_IMAGE_END - 0x4)
/*********************************************************************
*
*    main()
*
* Function description
*  Application entry point.
*/
int main(void) {
 int i;
 unsigned int NumItems;
 unsigned int* pData;
 unsigned int CRCResultHW;
 unsigned int CRCResult;
 unsigned int OldValue;
 
 i = 0;
 NumItems = (FLASH_APPLICATION_END - FLASH_IMAGE_START) / 4;
 pData = (unsigned int*)FLASH_IMAGE_START;  // points to start of Flash
 CRCResult = *(unsigned int*)FLASH_IMAGE_END; // Saves CRC value calculated by SEGGER Linker
 //
 // Config CRC Module
 //
 RCC->AHB1ENR |= RCC_AHB1ENR_CRCEN;
 CRC->CR |= CRC_CR_RESET;
 //
 // Calculate CRC with ST CRC unit over complete Flash area
 //
 do {
  CRC->DR = __REV(*pData); // ST algorithm expects words in reversed order
  pData++;
 } while (NumItems--);
 CRCResultHW = CRC->DR;
 printf("Hardware calculated CRC over Flash is: 0x%X 
", CRCResultHW);
 printf("SEGGER Linker calculated CRC over Flash is: 0x%X
", CRCResult);
 //
 // Compare with Linker result
 //
 if (CRCResult == CRCResultHW) {
  printf("Both CRC check sums are matching!
");
 } else {
  printf("CRC check sums are not matching. Check parameters.
");
 }
 do {
  i++;
 } while (1);
}





審核編輯:劉清

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

    關注

    10

    文章

    1748

    瀏覽量

    155514
  • crc
    crc
    +關注

    關注

    0

    文章

    205

    瀏覽量

    30833
  • SHA
    SHA
    +關注

    關注

    0

    文章

    19

    瀏覽量

    8755
  • STM32F4
    +關注

    關注

    3

    文章

    204

    瀏覽量

    30129
  • SEGGER
    +關注

    關注

    0

    文章

    60

    瀏覽量

    14824

原文標題:使用SEGGER Linker的完整性檢查功能

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    IDT信號完整性產品:解決高速信號傳輸難題

    IDT信號完整性產品:解決高速信號傳輸難題 在當今的電子設備中,隨著計算、存儲和通信應用中信號速度的不斷提高,系統設計師面臨著越來越大的信號完整性挑戰。高速信號在傳輸過程中,由于發射器、接收器和通道
    的頭像 發表于 03-04 17:10 ?407次閱讀

    SI合集002|信號完整性測量應用簡介,快速掌握關鍵點

    一、信號完整性定義信號完整性(SignalIntegrity,簡稱SI)是衡量信號從驅動端經傳輸線抵達接收端后,波形完整程度的關鍵指標,反映了信號在電路中能否以正確的時序、持續時間和電壓幅度作出響應
    的頭像 發表于 01-26 10:58 ?191次閱讀
    SI合集002|信號<b class='flag-5'>完整性</b>測量應用簡介,快速掌握關鍵點

    使用MATLAB和Simulink進行信號完整性分析

    信號完整性是保持高速數字信號的質量的過程。信號完整性是衡量電信號從源傳輸到目標位置時的質量的關鍵度量。在高速數字和模擬電子中,確保信號的預期形狀、時序和功率得以保持,能夠保證數據的可靠且準確傳輸。
    的頭像 發表于 01-23 13:57 ?7217次閱讀
    使用MATLAB和Simulink進行信號<b class='flag-5'>完整性</b>分析

    網絡延遲具體是怎樣影響電能質量在線監測裝置的實時完整性的?

    網絡延遲對電能質量在線監測裝置實時完整性的影響,本質是 破壞 “數據傳輸的時序” 與 “數據接收的完整性” —— 裝置采集的電流、電壓、諧波等數據(尤其是暫態事件波形)需通過網絡
    的頭像 發表于 10-23 11:59 ?797次閱讀

    串擾如何影響信號完整性和EMI

    歡迎來到 “掌握 PCB 設計中的 EMI 控制” 系列的第六篇文章。本文將探討串擾如何影響信號完整性和 EMI,并討論在設計中解決這一問題的具體措施。
    的頭像 發表于 08-25 11:06 ?9917次閱讀
    串擾如何影響信號<b class='flag-5'>完整性</b>和EMI

    什么是信號完整性

    電子發燒友網站提供《什么是信號完整性?.pdf》資料免費下載
    發表于 07-09 15:10 ?1次下載

    了解信號完整性的基本原理

    作者:Cece Chen 投稿人:DigiKey 北美編輯 隨著支持人工智能 (AI) 的高性能數據中心的興起,信號完整性 (SI) 變得至關重要,這樣才能以更高的速度傳輸海量數據。為確保信號完整性
    的頭像 發表于 05-25 11:54 ?1357次閱讀
    了解信號<b class='flag-5'>完整性</b>的基本原理

    Samtec虎家大咖說 | 淺談信號完整性以及電源完整性

    前言 在這一期的Samtec虎家大咖說節目中,Samtec信號完整性(SI)和電源完整性(PI)專家Scott McMorrow、Rich Mellitz和Istvan Novak回答了觀眾的提問
    發表于 05-14 14:52 ?1195次閱讀
    Samtec虎家大咖說 | 淺談信號<b class='flag-5'>完整性</b>以及電源<b class='flag-5'>完整性</b>

    電源完整性基礎知識

    先說一下,信號完整性為什么寫電源完整性?SI 只是針對高速信號的部分,這樣的理解沒有問題。如果提高認知,將SI 以大類來看,SI&amp;PI&amp;EMI 三者
    發表于 05-13 14:41

    受控阻抗布線技術確保信號完整性

    核心要點受控阻抗布線通過匹配走線阻抗來防止信號失真,從而保持信號完整性。高速PCB設計中,元件與走線的阻抗匹配至關重要。PCB材料的選擇(如低損耗層壓板)對減少信號衰減起關鍵作用。受控阻抗布線
    的頭像 發表于 04-25 20:16 ?1329次閱讀
    受控阻抗布線技術確保信號<b class='flag-5'>完整性</b>

    信號完整性測試基礎知識

    在當今快速發展的數字時代,高速傳輸已成為電子設備的基本要求。隨著數據傳輸速率的不斷提升,信號完整性(Signal Integrity,簡稱SI)問題變得越來越重要。信號完整性是高速互連系統設計的基石
    的頭像 發表于 04-24 16:42 ?4165次閱讀
    信號<b class='flag-5'>完整性</b>測試基礎知識

    電源完整性分析及其應用

    引言 電源完整性這一概念是以信號完整性為基礎的,兩者的出現都源自電路開關速度的提高。當高速信號的翻轉時間和系統的時鐘周期可以相比時,具有分布參數的信號傳輸線、電源和地就和低速系統中的情況完全不同了
    發表于 04-23 15:39

    普源DHO3000系列示波器電源完整性測試

    整個系統的性能和可靠。普源DHO3000系列示波器憑借其卓越的性能和豐富的功能,成為進行電源完整性測試的絕佳工具。本文將詳細探討基于普源DHO3000系列示波器的電源完整性測試方案,
    的頭像 發表于 04-15 14:45 ?790次閱讀
    普源DHO3000系列示波器電源<b class='flag-5'>完整性</b>測試

    技術資訊 | 信號完整性測試基礎知識

    本文重點信號完整性測試需要從測試電路板和原型獲取實驗數據并加以分析。在理想的工作流程中,還會仿真信號完整性指標,并將其與實際測量值進行比較。信號完整性測試只能檢查特定的結構,通常需要在
    的頭像 發表于 04-11 17:21 ?2321次閱讀
    技術資訊 | 信號<b class='flag-5'>完整性</b>測試基礎知識

    普源示波器在信號完整性分析中的應用研究

    著系統的性能和可靠。普源示波器作為一種高精度、多功能測試儀器,在信號完整性分析中發揮著不可或缺的作用。本文將探討普源示波器在信號完整性分析中的應用及其重要
    的頭像 發表于 03-19 14:20 ?862次閱讀
    普源示波器在信號<b class='flag-5'>完整性</b>分析中的應用研究