在前面的文章“使用IAR Embedded Workbench和MCU的CRC模塊來檢查代碼的完整性”中介紹了如何在IAR Embedded Workbench中配置生成對應代碼區(qū)域的CRC校驗碼。但是在IDE里面的Linker > Checksum選項里面只能配置一個地址區(qū)間并且只能生成一個Checksum。如果有多個地址空間,那么IDE里面的Linker > Checksum選項沒有辦法滿足需求,需要使用命令行的方式。
本文主要介紹如何在IAR Embedded Workbench中計算多個地址區(qū)間的Checksum。
兩個地址區(qū)間生成兩個Checksum
假設對應的兩個地址空間分別為0x08000000-0x0801FFFB(對應Checksum放到0x0801FFFC)和0x08030000-0x0803FFFB(對應Checksum放到0x0803FFFC)。
不使能Linker > Checksum選項中的配置:
在Linker > Extra Options中添加對應的命令:
--place_holder __checksum1,4,.checksum1,4 --place_holder __checksum2,4,.checksum2,4
在ICF文件中添加對應的命令:
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里面添加對應生成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并查看對應的Build Log和MAP文件檢查Checksum相關的信息:
兩個地址區(qū)間生成一個Checksum
假設對應的兩個地址空間分別為0x08000000-0x0801FFFF和0x08030000-0x0803FFFB(對應Checksum放到0x0803FFFC)。
不使能Linker > Checksum選項中的配置:
在Linker > Extra options中添加對應的命令:
--place_holder __checksum,4,.checksum,4
在ICF文件中添加對應的命令:
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里面添加對應生成Checksum的命令:
ielftool--fill0xFF;0x08000000-0x0801FFFF--fill0xFF;0x08030000-0x0803FFFB--checksum __checksum:4,crc32:Li,0xffffffff;0x08000000-0x0801FFFF;0x08030000-0x0803FFFB --verbose "$TARGET_PATH$" "$TARGET_PATH$"
Build并查看對應的Build Log和MAP文件檢查相關Checksum的信息:
總結
本文通過兩個例子介紹了如何在IAR Embedded Workbench中計算多個地址區(qū)間的Checksum,包括多個地址區(qū)間生成多個Checksum和多個地址區(qū)間生成一個Checksum。
審核編輯:湯梓紅
-
IAR
+關注
關注
5文章
377瀏覽量
37392 -
文件
+關注
關注
1文章
578瀏覽量
25309 -
代碼
+關注
關注
30文章
4895瀏覽量
70498 -
命令行
+關注
關注
0文章
81瀏覽量
10557
原文標題:在IAR Embedded Workbench中計算多個地址區(qū)間的Checksum
文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何在IAR Embedded Workbench中配置生成對應代碼區(qū)域的CRC校驗碼

在IAR版本為Embedded Workbench 6.5 Kickstart 1.4 編繹報錯怎么解決?
在 IAR Embedded Workbench中進行ARM+RISC-V多核調(diào)試
IAR Systems發(fā)布 IAR Embedded Wor
IAR_embedded_Workbench用戶指南介紹
IAR Embedded Workbench?集成開發(fā)環(huán)境已全面支持航順芯片HK32MCU系列
如何在IAR Embedded Workbench中填充提高系統(tǒng)的健壯性
全新IAR Embedded Workbench for RISC-V 支持 Andes CoDense擴展
YRDKRX62N 快速入門指南(IAR Embedded Workbench)

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

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

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

適用于AVR單片機的IAR embedded Workbench入門指南

評論