在前面的文章“使用IAR Embedded Workbench和MCU的CRC模塊來(lái)檢查代碼的完整性”中介紹了如何在IAR Embedded Workbench中配置生成對(duì)應(yīng)代碼區(qū)域的CRC校驗(yàn)碼。但是在IDE里面的Linker > Checksum選項(xiàng)里面只能配置一個(gè)地址區(qū)間并且只能生成一個(gè)Checksum。如果有多個(gè)地址空間,那么IDE里面的Linker > Checksum選項(xiàng)沒(méi)有辦法滿(mǎn)足需求,需要使用命令行的方式。
本文主要介紹如何在IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum。
兩個(gè)地址區(qū)間生成兩個(gè)Checksum
假設(shè)對(duì)應(yīng)的兩個(gè)地址空間分別為0x08000000-0x0801FFFB(對(duì)應(yīng)Checksum放到0x0801FFFC)和0x08030000-0x0803FFFB(對(duì)應(yīng)Checksum放到0x0803FFFC)。
不使能Linker > Checksum選項(xiàng)中的配置:
在Linker > Extra Options中添加對(duì)應(yīng)的命令:
--place_holder __checksum1,4,.checksum1,4 --place_holder __checksum2,4,.checksum2,4
在ICF文件中添加對(duì)應(yīng)的命令:
define exported symbol __checksum_begin1 =0x08000000; define exported symbol __checksum_end1 =0x0801FFFB; define exported symbol __checksum_begin2 =0x08030000; define exported symbol __checksum_end2 =0x0803FFFB; place at address mem: 0x0801FFFC { section .checksum1 }; place at address mem: 0x0803FFFC { section .checksum2 };
在Build Actions里面添加對(duì)應(yīng)生成Checksum的命令:
ielftool --fill 0xFF;0x08000000-0x0801FFFB --fill 0xFF;0x08030000-0x0803FFFB --checksum __checksum1:4,crc32:Li,0xffffffff;0x08000000-0x0801FFFB --checksum __checksum2:4,crc32:Li,0xffffffff;0x08030000-0x0803FFFB --verbose "$TARGET_PATH$" "$TARGET_PATH$"
Build并查看對(duì)應(yīng)的Build Log和MAP文件檢查Checksum相關(guān)的信息:
兩個(gè)地址區(qū)間生成一個(gè)Checksum
假設(shè)對(duì)應(yīng)的兩個(gè)地址空間分別為0x08000000-0x0801FFFF和0x08030000-0x0803FFFB(對(duì)應(yīng)Checksum放到0x0803FFFC)。
不使能Linker > Checksum選項(xiàng)中的配置:
在Linker > Extra options中添加對(duì)應(yīng)的命令:
--place_holder __checksum,4,.checksum,4
在ICF文件中添加對(duì)應(yīng)的命令:
define exported symbol __checksum_begin1 =0x08000000; define exported symbol __checksum_end1 =0x0801FFFF; define exported symbol __checksum_begin2 =0x08030000; define exported symbol __checksum_end2 =0x0803FFFB; place at address mem: 0x0803FFFC { section .checksum };在Build Actions里面添加對(duì)應(yīng)生成Checksum的命令:
ielftool--fill0xFF;0x08000000-0x0801FFFF--fill0xFF;0x08030000-0x0803FFFB--checksum __checksum:4,crc32:Li,0xffffffff;0x08000000-0x0801FFFF;0x08030000-0x0803FFFB --verbose "$TARGET_PATH$" "$TARGET_PATH$"
Build并查看對(duì)應(yīng)的Build Log和MAP文件檢查相關(guān)Checksum的信息:
總結(jié)
本文通過(guò)兩個(gè)例子介紹了如何在IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum,包括多個(gè)地址區(qū)間生成多個(gè)Checksum和多個(gè)地址區(qū)間生成一個(gè)Checksum。
審核編輯:湯梓紅
-
IAR
+關(guān)注
關(guān)注
5文章
365瀏覽量
37072 -
文件
+關(guān)注
關(guān)注
1文章
575瀏覽量
25071 -
代碼
+關(guān)注
關(guān)注
30文章
4869瀏覽量
69905 -
命令行
+關(guān)注
關(guān)注
0文章
80瀏覽量
10500
原文標(biāo)題:在IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum
文章出處:【微信號(hào):IAR愛(ài)亞系統(tǒng),微信公眾號(hào):IAR愛(ài)亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何在IAR Embedded Workbench中配置生成對(duì)應(yīng)代碼區(qū)域的CRC校驗(yàn)碼

在IAR版本為Embedded Workbench 6.5 Kickstart 1.4 編繹報(bào)錯(cuò)怎么解決?
在 IAR Embedded Workbench中進(jìn)行ARM+RISC-V多核調(diào)試
IAR Systems發(fā)布 IAR Embedded Wor
IAR_embedded_Workbench用戶(hù)指南介紹
IAR Embedded Workbench?集成開(kāi)發(fā)環(huán)境已全面支持航順芯片HK32MCU系列
IAR Embedded Workbench創(chuàng)新工具促進(jìn)智能醫(yī)療設(shè)備小型化
如何在IAR Embedded Workbench中填充提高系統(tǒng)的健壯性
YRDKRX62N 快速入門(mén)指南(IAR Embedded Workbench)

YRDKRL78G13 快速入門(mén)指南(IAR Embedded Workbench) Rev.1.01

YRDKRX62N 快速入門(mén)指南(IAR Embedded Workbench)

YRDKRL78G13 快速入門(mén)指南(IAR Embedded Workbench) Rev.1.01

適用于A(yíng)VR單片機(jī)的IAR embedded Workbench入門(mén)指南

評(píng)論