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

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

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

如何為STM32編程節(jié)省代碼空間?在IAR中配置CRC參數(shù)有竅門

STM32單片機(jī) ? 來(lái)源:未知 ? 作者:電子大兵 ? 2017-09-06 17:38 ? 次閱讀

前言

STM32全系列產(chǎn)品都具有CRC外設(shè),對(duì)CRC的計(jì)算提供硬件支持,為應(yīng)用程序節(jié)省了代碼空間。CRC校驗(yàn)值可以用于數(shù)據(jù)傳輸中的數(shù)據(jù)正確性的驗(yàn)證,也可用于數(shù)據(jù)存儲(chǔ)時(shí)的完整性檢查。在IEC60335中,也接受通過(guò)CRC校驗(yàn)對(duì)FLASH的完整性進(jìn)行檢查。在對(duì)FLASH完整性檢查的應(yīng)用中,需要事先計(jì)算出整個(gè)FLASH的CRC校驗(yàn)值(不包括最后保存CRC值的字節(jié)),放在FLASH的末尾。在程序啟動(dòng)或者運(yùn)行的過(guò)程中重新用同樣的方法計(jì)算整個(gè)FLASH的CRC校驗(yàn)值,然后與保存在FLASH末尾的CRC值進(jìn)行比較。

EWARM從v5.5版本之后開(kāi)始支持STM32芯片的CRC計(jì)算。前面所說(shuō)的計(jì)算整個(gè)FLASH的CRC校驗(yàn)值并保存在FLASH末尾的過(guò)程,可以在IAR中完成。通過(guò)配置EWARM的CRC計(jì)算參數(shù),自動(dòng)對(duì)整個(gè)FLASH空間進(jìn)行CRC計(jì)算,并將計(jì)算結(jié)果放到FLASH的末尾。本文中將介紹的就是如何配置IAR的CRC參數(shù),使之與STM32的CRC硬件模塊保持一致。本文中的例子都基于STM32F072進(jìn)行。

STM32的CRC外設(shè)CRC校驗(yàn)值的計(jì)算采用多項(xiàng)式除法,可以通過(guò)除數(shù)和被除數(shù)進(jìn)行異或運(yùn)算實(shí)現(xiàn)。這種方法非常適合通過(guò)硬件電路來(lái)實(shí)現(xiàn)。使用STM32CRC外設(shè)時(shí),你要考慮的內(nèi)容包括:采用哪個(gè)CRC生成多項(xiàng)式,輸入數(shù)據(jù)(要進(jìn)行校驗(yàn)的數(shù)據(jù))和初始值。

1.生成多項(xiàng)式默認(rèn)使用CRC32多項(xiàng)式:0x4C11DB7

部分芯片支持可編程的多項(xiàng)式,比如STM32F3,STM32F0,STM32L0

2.初始值STM32的CRC初始值默認(rèn)為0xFFFFFFFF,STM32F3,STM32F0,STM32L0系列可以修改初始值

3.輸入/輸出數(shù)據(jù)的反轉(zhuǎn)STM32F3,STM32F0,STM32L0系列還提供了對(duì)輸入/輸出數(shù)據(jù)進(jìn)行反轉(zhuǎn)的功能。默認(rèn)不對(duì)輸入數(shù)據(jù)和輸出數(shù)據(jù)進(jìn)行位反轉(zhuǎn)

· 對(duì)輸入數(shù)據(jù)的位反轉(zhuǎn)操作可以設(shè)置為按字節(jié)/半字 /字為單元進(jìn)行操作。例如輸入數(shù)據(jù)為0x1A2B3C4D, o 每個(gè)字節(jié)內(nèi)逐位反轉(zhuǎn),結(jié)果是0x58D43CB2 o 每半字內(nèi)逐位反轉(zhuǎn),結(jié)果是0xD458B23C o 每個(gè)字長(zhǎng)內(nèi)逐位反轉(zhuǎn),結(jié)果是0xB23CD458· 對(duì)輸出數(shù)據(jù)的位反轉(zhuǎn)。 o 例如輸出數(shù)據(jù)為0x11223344,反轉(zhuǎn)后為0x22CC4488

IAR的CRC配置

1.修改Link文件指定checksum在FLASH中的存儲(chǔ)位置,在Link文件中增加下面語(yǔ)句。

該語(yǔ)句指定將CRC的值放在FLASH的末尾位置。是整個(gè)FLASH空間的末尾,不是應(yīng)用程序的代碼末尾。這樣,CRC值的位置就是固定的。不會(huì)隨代碼大小而變化。

2.配置Checksum頁(yè)面的參數(shù)

IAR Checksum頁(yè)說(shuō)明(v6.4及以上)

IAR的checksum頁(yè)面分為兩個(gè)部分。第一部分,也就是紅線圈出的部分。定義了FLASH中需要計(jì)算CRC的范圍和空閑字節(jié)填充值。剩下的部分,就是對(duì)checksum計(jì)算參數(shù)的設(shè)定部分。 Checksum size :選擇checksum的大?。ㄗ止?jié)數(shù)) Alignment:指定checksum的對(duì)齊方式。不填的話默認(rèn)2字節(jié)對(duì)齊。

Algorithm:選擇checksum的算法 Complement:是否需要進(jìn)行補(bǔ)碼計(jì)算。選擇“Asis”就是不進(jìn)行補(bǔ)碼計(jì)算。 Bit order:位輸出的順序。MSB first,每個(gè)字節(jié)的高位在前。LSB first,每個(gè)字節(jié)的低位在前。 Reverse byte order within word: 對(duì)于輸入數(shù)據(jù),在一個(gè)字內(nèi)反轉(zhuǎn)各個(gè)字節(jié)的順序。 Initial value: checksum計(jì)算的初始化值 Checksum unit size :選擇進(jìn)行迭代的單元大小,按8-bit,16-bit還是32-bit進(jìn)行迭代。

3.STM32 CRC外設(shè)使用默認(rèn)配置時(shí)IAR的配置STM32CRC外設(shè)的配置:

POLY= 0x4C11DB7(CRC32) Initial_Crc = 0Xffffffff 輸入/輸出數(shù)據(jù)不反轉(zhuǎn) 輸入數(shù)據(jù):0x08000000~0x0801FFFB。(最后4個(gè)字節(jié)用來(lái)放計(jì)算出的CRC值)

具體使用中我們可以根據(jù)實(shí)際應(yīng)用需求參照上面介紹做相應(yīng)配置即可。

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

    關(guān)注

    2281

    文章

    10974

    瀏覽量

    360602
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    365

    瀏覽量

    37051
  • C語(yǔ)言編程
    +關(guān)注

    關(guān)注

    6

    文章

    90

    瀏覽量

    21366

原文標(biāo)題:如何在IAR中配置CRC參數(shù)

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 5人收藏
  • MG_8d21

評(píng)論

相關(guān)推薦

如何在IAR Embedded Workbench配置生成對(duì)應(yīng)代碼區(qū)域的CRC校驗(yàn)碼

“使用IAR Embedded Workbench和MCU的CRC模塊來(lái)檢查代碼的完整性”一文,介紹了如何在
的頭像 發(fā)表于 10-27 11:49 ?2103次閱讀
如何在<b class='flag-5'>IAR</b> Embedded Workbench<b class='flag-5'>中</b><b class='flag-5'>配置</b>生成對(duì)應(yīng)<b class='flag-5'>代碼</b>區(qū)域的<b class='flag-5'>CRC</b>校驗(yàn)碼

IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum

在前面的文章“使用IAR Embedded Workbench和MCU的CRC模塊來(lái)檢查代碼的完整性”中介紹了如何在IAR Embedded Workbench
的頭像 發(fā)表于 01-05 12:33 ?1878次閱讀
<b class='flag-5'>在</b><b class='flag-5'>IAR</b> Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum

STM32CRC外設(shè)如何設(shè)置

本文中將介紹的就是如何配置IARCRC參數(shù),使之與STM32CRC硬件模塊保持一致。本文中的
的頭像 發(fā)表于 09-28 06:05 ?1.7w次閱讀

如何在IAR配置CRC參數(shù)

前言STM32全系列產(chǎn)品都具有CRC外設(shè),對(duì)CRC的計(jì)算提供硬件支持,為應(yīng)用程序節(jié)省代碼空間
發(fā)表于 09-06 16:01

請(qǐng)問(wèn)如何在IAR配置CRC參數(shù)?

前言 STM32全系列產(chǎn)品都具有CRC外設(shè),對(duì)CRC的計(jì)算提供硬件支持,為應(yīng)用程序節(jié)省代碼空間
發(fā)表于 07-02 02:32

請(qǐng)問(wèn)IAR如何直接查看任務(wù)使用多少棧空間?

使用IAR調(diào)試freertos任務(wù),IAR自帶了一個(gè)調(diào)試插件,啟用這個(gè)插件會(huì)得到任務(wù)名、優(yōu)先級(jí)、棧起始空間和棧頂位置,但是如何計(jì)算出每個(gè)
發(fā)表于 06-10 09:25

探討一下stm32軟件編程

參數(shù)設(shè)置的外圍和中間件模式和初始化。CubeMX生成的代碼可以KEIL、IAR、GCC等編程軟件上面使用。簡(jiǎn)單理解,就是CubeMX軟件是
發(fā)表于 02-21 07:34

stm32IAR程序項(xiàng)目模板

stm32IAR程序項(xiàng)目模板源代碼,下來(lái)看看。
發(fā)表于 05-20 16:29 ?33次下載

CRC校驗(yàn) 、STM32CRC計(jì)算單元、 CRC應(yīng)用

CRC校驗(yàn)、STM32CRC計(jì)算單元、CRC應(yīng)用
的頭像 發(fā)表于 03-04 13:54 ?6487次閱讀

IARIDE Options 的Project配置選項(xiàng)

IARIDE Options的Project配置選項(xiàng)
的頭像 發(fā)表于 03-07 16:47 ?4508次閱讀

如何配置IARCRC參數(shù)STM32)資料下載

電子發(fā)燒友網(wǎng)為你提供如何配置IARCRC參數(shù)STM32)資料下載的電子資料下載,更有其他相關(guān)的電路圖、源
發(fā)表于 04-07 08:54 ?16次下載
如何<b class='flag-5'>配置</b><b class='flag-5'>IAR</b>的<b class='flag-5'>CRC</b><b class='flag-5'>參數(shù)</b>(<b class='flag-5'>STM32</b>)資料下載

iar stm32_吃透單片機(jī)編程軟件,IAR單片機(jī)編程軟件創(chuàng)建stm32工程

本文能夠有所收獲哦。版本1:stm32是一個(gè)當(dāng)下非常流行的微控制器,很多人都加入了學(xué)習(xí)stm32的行列,常用的stm32編譯器
發(fā)表于 11-30 10:21 ?15次下載
<b class='flag-5'>iar</b> <b class='flag-5'>stm32</b>_吃透單片機(jī)<b class='flag-5'>編程</b>軟件,<b class='flag-5'>IAR</b>單片機(jī)<b class='flag-5'>編程</b>軟件創(chuàng)建<b class='flag-5'>stm32</b>工程

STM32開(kāi)發(fā),使用IAR軟件建立工程

STM32開(kāi)發(fā),使用IAR軟件建立工程1 概述1.1 資源概述1.2 IAR建立工程2 IAR
發(fā)表于 12-03 10:51 ?14次下載
<b class='flag-5'>STM32</b>開(kāi)發(fā),使用<b class='flag-5'>IAR</b>軟件建立工程

AN4187 STM32系列CRC外設(shè)的使用方法

AN4187 STM32系列CRC外設(shè)的使用方法
發(fā)表于 11-21 17:07 ?1次下載
AN4187 <b class='flag-5'>在</b><b class='flag-5'>STM32</b>系列<b class='flag-5'>中</b><b class='flag-5'>CRC</b>外設(shè)的使用方法

STM32系列中使用CRC外設(shè)

電子發(fā)燒友網(wǎng)站提供《STM32系列中使用CRC外設(shè).pdf》資料免費(fèi)下載
發(fā)表于 08-01 09:23 ?0次下載
<b class='flag-5'>在</b><b class='flag-5'>STM32</b>系列中使用<b class='flag-5'>CRC</b>外設(shè)

電子發(fā)燒友

中國(guó)電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品