This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F5342:IAR 生成的校验和与软件生成的(代码)校验和不匹配。

Guru**** 2382480 points
Other Parts Discussed in Thread: MSP430F5342
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/799494/msp430f5342-iar-generated-checksum-is-not-matching-with-software-generated-code-checksum

器件型号:MSP430F5342

大家好、

问题语句:IAR 生成的校验和与软件生成的(代码)校验和不匹配。

我们使用了 IAR (v6.40)并在 IDE 中启用了校验和选项、通过使用 xlink 链接器文件(.xcl)并针对同一闪存范围使用软件代码验证、为控制器 MSP430F5342生成针对指定地址范围(0x8000至0xFFFF)的校验和  (0x8000至0xFFFF)。 但是 IAR 生成的校验和(_CHECKSUM)与使用 SLOW_Crc16 () 和 FAST_Crc16 ()函数生成的代码 CRC 不匹配。

在这两种情况下、校验和是否存在任何不匹配的具体原因、   

   工作区中的特定设置、如影响校验和计算的优化。 ?

     2.我们需要从校验和计算中排除中断矢量部分?

  任何人都对此有任何想法,这将对我们大有帮助。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在这里附加链接器文件:

    /********
    //
    // MSP430F5342的 XLink 配置文件
    //
    //版权所有1996-2016 IAR Systems AB。
    //
    //有关详细信息,请参阅文件430/doc/licenses/IARSourceLicense.txt
    //许可证信息。
    //
    //$Revision:$
    //
    /********

    //----------------------------
    //说明
    //

    //
    //用法:
    //
    // xlink [文件...] f lnk430f5342.xcl
    //
    //--------------------------------------------------------
    //设备摘要
    //

    //
    //内核:MSP430Xv2
    //
    //中断向量:64
    //
    //外设单元:00100-00FFF
    //
    //信息存储器(闪存):01800-019FF
    //
    //读/写存储器(RAM):01C00-043FF
    //
    //只读存储器(闪存):04400-0FFFF
    // 10000-243FF
    //


    //--------------------------------------------------------
    //段
    //

    //--------------------------------------------------------
    //数据读取/写入段(RAM)
    //

    //
    //以下两个段都可用
    // DATA16和 DATA20段组。
    //
    //段使用
    //---- ----------------
    //数据 _Z 数据初始化为零
    //数据 _I 通过从数据复制初始化数据 ID
    //数据 使用__no_init 定义的_N 数据
    //数据 堆'malloc'和'free'使用的堆
    //
    //段使用
    //---- ----------------
    // CSTACK 运行时堆栈
    //针对主线程的 TLS16_I 线程本地存储
    //


    //--------------------------------------------------------
    //程序和数据只读段(闪存)
    //

    //
    //以下两个段都可用
    // DATA16和 DATA20段组。
    //
    //段使用
    //---- ----------------
    //数据 _C 常量数据、包括字符串字面量
    //数据 _ID 数据初始化程序 _I
    //
    //段使用
    //---- ----------------
    //信息内存
    // INFOA 信息内存,组 A
    // INFOB 信息内存,组 B
    // INFOC 信息内存,组 C
    // INFOD 信息内存,组 D
    // CSTART 程序启动代码
    //编写程序代码
    //中断服务例程的 ISR_code 程序代码
    // C++使用的 DIFUNCT 动态初始化矢量
    //由-J 选项生成的校验和字节
    // intvec 中断向量
    //复位复位向量
    //主线程的 TLS16_ID 线程本地初始化程序
    //
    //注意:
    //
    //*段 CSTART、ISR_code 和 DIFUNCT 以及中的段
    //必须将 DATA16和 TLS16段组放置在范围内
    // 0000-FFFD。
    //
    //* INFox 和 INFO 段重叠,这允许数据为
    //放置在特定的存储库中或信息存储器中的任何位置。
    //
    //* INTVEC 和复位段重叠。 这允许应用程序执行
    //使用运行时库提供的复位矢量,或
    //通过定义相关的中断函数来提供复位函数
    //与复位矢量。
    //


    //----------------------------
    //配置
    //

    //--------------------------------------------------------
    //堆栈和堆大小
    //

    //取消注释以供命令行使用
    //-D_STACK_SIZE=160
    //-D_DATA16_Hap_size=160
    //-D_DATA20_Hap_size=160


    //--------------------------------------------------------
    //定义 CPU
    //

    cmsp430

    //补偿 CPU 中的硬件错误
    D?CPU30_OFFSET=2


    //--------------------------------------------------------
    //支持将函数放置在读取/写入存储器中
    //

    -qcode_i=code_ID


    //--------------------------------------------------------
    //支持线程本地存储
    //

    -QTLS16_I=TLS16_ID


    //--------------------------------------------------------
    //硬件乘法器位置
    //

    -D__IAR_HWMUL=4C0


    //----------------------------
    //放置指令
    //

    //--------------------------------------------------------
    //信息内存
    //

    -Z (const) info=1800-19FF
    -Z (const) INFOA = 1980 - 19FF
    -Z (const) INFOB =1900-197F
    -Z (const) infoc=1880-18FF
    -Z (const) INFOD = 1800-187F


    //--------------------------------------------------------
    // RAM 内存
    //

    -Z (data) DATA16_I、DATA16_Z、DATA16_N、TLS16_I=1C00-43FF
    -Z (data) DATA16_heap+_DATA16_heap_size
    -Z (data) code_i
    -Z (data) DATA20_I、DATA20_Z、DATA20_N、DATA20_heap+_DATA20_heap_size
    -Z (data) CSTACK+_STACK_SIZE#


    //--------------------------------------------------------
    //只读存储器
    //

    //--------------------------------------------------------
    //低内存0-0FFFF
    //

    //--------------------
    //常量数据
    //

    //-Z (const) DATA16_C、DATA16_ID、TLS16_ID、DIFUNC=4400-FF7F
    -Z (const) DATA16_C、DATA16_ID、TLS16_ID、DIFUNC=4400-4683
    //-Z (const) DATA20_C、DATA20_ID、CODE_ID=4400-FF7F、10040-243FD
    -Z (const) DATA20_C、DATA20_ID、CODE_ID = 4400-4683
    -Z (const)校验和=4684


    //--------------------------------------------------------
    //所有内存0-FFFFF
    //

    //--------------------
    //代码
    //
    //将 FF80 - FFFF 留存为中断矢量空间。
    //-Z (code) CSTART、ISR_code、CODE16=4400-FF7F
    -Z (代码) CSTART、ISR_code、CODE16=4400-4683
    //-P (code) code=4400-FF7F、10000-243FD
    -P (代码)代码=4400-4683


    //--------------------------------------------------------
    //中断向量
    //
    -Z (代码) intvec=FF80-FFFF
    -Z (代码) reset=FFFE-FFFF

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    对于 IAR IDE 工具的问题、我建议您在 IAR Web 上提问、因为该工具不是由 TI 提供的。 如果 MSP430软件校验和代码有任何问题、请随时告诉我。

    但是、您可以首先转到 IAR 链接器和库工具参考指南、该指南可从 IAR 帮助菜单中获取、以获得校验和计算器工具的更详细的配置指南。