"The string '__checksum' was not found in the string table"解决办法

转载 2013年12月05日 15:54:57



IELFTOOL Checksum - Basic actions

EW targets: ARM, RH850, RX, SH, STM8
EW component: General issues
Last update: September 6, 2013

Below follows the steps needed to set up an CRC16 checksum calcuation, both in the EW-tool-chain and in the application.

This note applies to...
...these versions of the following Embedded Workbenches products:
EWARM 5.11 (and later) - - - EWRX 2.10 (and later)
EWSH 2.10 (and later) - - - EWSTM8 1.10 (and later)

Include checksum calculation source in your application.

The minimum requirement is that your source uses the symbol __checksum.

Note: If your source doesn't use the symbol __checksum you will get an error message from IELFTOOL: "The string '__checksum' was not found in the string table".

To be able to link anyway, you can turn on Project > Options... > Linker > Extra Options > mark "Use command line options" and add the command line option "--keep __checksum".

Checksum calculation in the application

The supplied example(s) shows how to use the CRC16 checksum calculation. In the C source of the application you need to add the actual generic C source to calculate the same checksum value as EWARM calculates. There are two variants of the calculation:

Fast -- Short execution time, but it uses up more ROM/flash for a constant table.

Slow -- It uses less ROM/flash but more execution time.

Please note:

The checksum calculation must not (in order to work) be made over the bytes where the checksum is placed in memory. One solution is to place the checksum at the beginning or end of memory. So the bytes (1, 2 or 4) where the checksum is saved must be excluded from the checksum calculation.

If the slow function is used, you must make a final call to the checksum calculation with the same number of bytes, with value 0x00, as you have bytes (1, 2 or 4) in the checksum. See the 'Example (1 range, 3 diff. locations)' project for details. (Use the link to the upper right.)

Turn on checksum calculation in the options for the linker

You can use these options either in the Embedded Workbench or on the command line. If using command line the command should first run the linker, then run the IELFTOOL.

In the EW you set up calculation of the checksum in menu Project > Options > Linker > Checksum options tab.

The options used in the (place first) example are:
Fill unused code memory
Fill pattern 0xFF (can be any pattern)
Start address 0x0 (adjust to your application)
End address 0xFFFB (adjust to your application)
Generate checksum; size = 2 bytes; CRC16; Complement = as is; Bit order = MSB first; initial value = 0.

The corresponding command line is:

ielftool --fill 0xFF;0x0-0xfffb --checksum __checksum:2,crc16,0x0;0x0-0xfffb 

There are 2 requirements that you have to fulfill to make this work. - See the next 2 parts of the tech note.

Select the address range to be checksummed.
Select where the chacksum will be placed.
Select the range for which checksum will be calculated

The checksum should (normally) cover all non-RAM bytes of the application,excluding the bytes where the checksum is placed.

The way to get knowledge about this is to turn on

menu Project > Options... > Linker > Checksum > mark "Fill unused code memory" and mark "Generate checksum"

menu Project > Options... > Linker > List > mark "Generate linker map file"

menu Tools > Options... > Messages > Show build messages > All

Add usage of the symbol __checksum in your application.

Perform one build.

Then look in the .map file to see where the symbol __checksum is placed.

Look in the "Build Window" to see the memory range that will be used in the checksum calculation.

Specify where the checksum itself is stored

This is done in the .icf file. The following example will place it at the end of memory.

Add this in the .icf file.

place at end of ROM_region { ro section .checksum };

In the 'Example (1 range, 3 diff. locations)', configuration 'PlaceEndOfROM' , the start address is 0x0 and the end address is 0xFFFB.

Please Note: There are several other solutions on how/where to place the checksum in memory. - These solutions are presented in the Tech Note 62709.

All product names are trademarks or registered trademarks of their respective owners.

Halcon Error Define

/*****************************************************************************  * HError.h  ******...
  • liubing8609
  • liubing8609
  • 2015年01月06日 08:55
  • 10545

"The string '__checksum' was not found in the string table"解决办法

解决办法见红色部分 转自:http://supp.iar.com/Support/?note=65473&from=note+11927 IELFTOOL Checksum - Bas...
  • robinson_911
  • robinson_911
  • 2013年12月05日 15:54
  • 1708

linux下yum更新出现HTTP Error 404 NOT FOUND错误的办法

Fedora下yum安装软件包时提示标题所示的错误信息,原因估计是yum查找软件包依赖时使用的是过时的缓存,清空更新之后,再次安装软件,问题消失, 具体指令如下: # yum clean a...
  • gzhouc
  • gzhouc
  • 2016年02月15日 11:29
  • 7305


  • pengrui18
  • pengrui18
  • 2015年12月09日 13:08
  • 902

Sqoop ERROR tool.ImportTool: Imported Failed: There is no column found in the target table

Sqoop从oracle中导入数据到hive时,若在导入表不属于指定用户, 则在导入的表名前需要添加大写的所属用户的用户名 如: sqoop import --hive-import --conne...
  • goodstuddayupyyeah
  • goodstuddayupyyeah
  • 2017年07月17日 09:26
  • 843

解决近期linux下yum更新出现HTTP Error 404 NOT FOUND错误的办法

转自:http://tech.lezi.com/archives/47 最近两天使用yum的163源,出现404错误[root@localhost yum.repos.d]# yum makecach...
  • sbt0198
  • sbt0198
  • 2016年12月19日 21:15
  • 1049

Hadoop学习-错误记录:TokenizerMapper not found

在运行WordCount程序时,报如题错误信息,在网上苦寻解决方案无果后,终于自己排查出了错误。发表在此给需要的人一个参考。 报错信息:17/09/14 06:17:11 WARN util.Nat...
  • csdn_lzl
  • csdn_lzl
  • 2017年09月14日 21:34
  • 77

MFC中的String Table

String Table是MFC里相当有用的资源,里面定义了当你把鼠标放在工具栏上显示的关于某个工具栏的信息,这个没啥好说的,这里主要介绍一下最前面的两项:IDR_MAINTRAME 和 IDR_TE...
  • zhaoxiatengkong_1
  • zhaoxiatengkong_1
  • 2013年03月31日 15:53
  • 2783

纠结vc中的string table资源的使用

以下为从网上搜集到得资料,本人太菜,关于具体的使用暂时还未搞明白,暂且把下文粘贴如此,进一步的使用方法搞明白后示于此。VC++2005 StringTable资源类型研究May 21, 2007 at...
  • mlchen2009
  • mlchen2009
  • 2010年03月29日 17:25
  • 4962

nvm 安装node.js问题Computing checksum with shasum -a 256 Checksums do not match:

Tagays-MacBook-Pro:~ serbiant$ nvm i 6 #############################################################...
  • wmmhwj
  • wmmhwj
  • 2017年03月17日 16:19
  • 555
您举报文章:"The string '__checksum' was not found in the string table"解决办法