欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2749|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140840 發(fā)表于 2017-9-6 15:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
前言
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值)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表