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.

[参考译文] TM4C1294NCPDT:将变量放置在特定存储器位置- TM4C1294NCPDT、带 CCS

Guru**** 2539500 points
Other Parts Discussed in Thread: UNIFLASH, TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/990806/tm4c1294ncpdt-placing-variables-in-specific-memory-location---tm4c1294ncpdt-with-ccs

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:UNIFLASH

你(们)好

CCS 中是否有 Keil 提供的任何等效命令?

在 Keil 中、我可以使用


const unsigned short CHECKSUM __attribute__((section(".arm.__AT_0xF0000"))= 0x0F88;

然后、我可以打开二进制文件并将地址0xF0000处的值更改为我需要的任何值。

但在 CCS 10.1中找不到任何内容。

我想在.bin 文件的特殊存储器中保留4个字节的存储器、以便可以执行 CRC 并将 CRC 值保存到该存储器的二进制文件中。 稍后我可以读回它并将其显示在 LCD 屏幕上。

我尝试过

#define default __attribute__(AT (0x400))= 0x10

但是、当我使用 HxD 打开 bin 文件并查看地址0x400时。 它的值不正确、因此我的定义不正确。


有人可以提供帮助?

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

    P/s:我只想显示应用程序校验和。 我计划保留4字节地址、执行应用程序 bin 文件的 CRC。 然后、通过十六进制编辑器应用程序将 CRC 值保存到保留地址。 或者、有人更好地计算应用程序校验和并将其显示在屏幕上?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="430438" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/990806/tm4c1294ncpdt-placing-variables-in-specific-memory-location---tm4c1294ncpdt-with-ccs "]我想在.bin 文件中的特殊存储器中保留4个字节的存储器、以便我可以执行 CRC 并将 CRC 值保存在二进制文件中的该存储器中。

    TI 编译器支持 由链接器生成的 CRC 表、允许在链接时生成 CRC。 请参阅  ARM 汇编语言工具 v20.2.0.LTS 用户指南中8.9链接器生成的 CRC 表(修订版 Y)

    如何使用 TM4C129x 上的 CCS 5.1在运行时获取.text 段大小? 是 一个在链接时生成 CRC 的示例、它在运行时由 TM4C129器件中的 CRC 模块进行检查。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="430438" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/990806/tm4c1294ncpdt-placing-variables-in-specific-memory-location---tm4c1294ncpdt-with-ccs "]

    在 Keil 中、我可以使用


    const unsigned short CHECKSUM __attribute__((section(".arm.__AT_0xF0000"))= 0x0F88;

    [/报价]

    借助 TI ARM 编译 器 v20.2.4、我能够在源文件中使用以下内容:

    const unsigned short CHECKSUM __attribute__((location(0xF0000),retain)) = 0x0F88;

    其中:

    • location 属性设置变量的地址。
    • retain 属性确保链接器不会丢弃程序中未引用的变量。 因为我的简单测试用例没有尝试使用校验和变量。

    链接器映射文件显示变量已放置在其自身段中的指定地址:

    SEGMENT ALLOCATION MAP
    
    run origin  load origin   length   init length attrs members
    ----------  ----------- ---------- ----------- ----- -------
    00000000    00000000    0000024c   0000024c    r-x
      00000000    00000000    00000208   00000208    r-- .intvecs
      00000208    00000208    00000044   00000044    r-x .text
    000f0000    000f0000    00000002   00000002    r--
      000f0000    000f0000    00000002   00000002    r-- .TI.bound:CHECKSUM
    20000000    20000000    00000200   00000000    rw-
      20000000    20000000    00000200   00000000    rw- .stack

    在创建的二进制文件中,可以看到地址0xf0000处的值0x0f88:

    $ hexdump TM4C1294NCPDT_fixed_checksum.bin 
    0000000 0200 2000 0235 0000 023b 0000 023d 0000
    0000010 023f 0000 023f 0000 023f 0000 0000 0000
    0000020 0000 0000 0000 0000 0000 0000 023f 0000
    0000030 023f 0000 0000 0000 023f 0000 023f 0000
    0000040 023f 0000 023f 0000 023f 0000 023f 0000
    *
    0000150 0000 0000 0000 0000 023f 0000 023f 0000
    0000160 023f 0000 023f 0000 0000 0000 023f 0000
    0000170 023f 0000 023f 0000 023f 0000 023f 0000
    *
    0000200 023f 0000 0000 0000 4808 f380 8808 4908
    0000210 6808 f440 0070 6008 bf00 bf00 f000 f810
    0000220 2000 f000 f811 2001 f000 f80c 0200 2000
    0000230 ed88 e000 f7ff bfe8 4770 e7fe e7fe e7fe
    0000240 2001 4770 bf00 e7fe 2000 4770 0000 0000
    0000250 0000 0000 0000 0000 0000 0000 0000 0000
    *
    00f0000 0f88                                   
    00f0002

    示例工程已附加。 编译后处理步骤用于运行 armobjcopy 以创建二进制文件。

    e2e.ti.com/.../TM4C1294NCPDT_5F00_fixed_5F00_checksum.zip

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

    我可以看到它在地址0xF0000处设置了值0f88、但当我使用十六进制编辑器更改该值时。 加载应用程序时、它仍然显示旧值(0x0F88)、同时我已将地址处的值更改为其他值。 不确定原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="430438" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/990806/tm4c1294ncpdt-placing-variables-in-specific-memory-location---tm4c1294ncpdt-with-ccs/3660391 #3660391"]并加载应用程序,它仍显示旧值(0x0F88),同时我已将地址处的值更改为其他值

    如何加载应用程序?

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

    我只需使用 UniFlash 并将其下载到编辑后的 bin 文件中、即可将其下载到 TM4C1294NCPDT。

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

    我将尝试您提到的其他方法、即"如何使用 TM4C129x 上的 CCS 5.1在运行时获取.text 段大小"。 我的目标是获取应用程序 CRC 并将其显示出来。 我只是想跟踪我的软件版本、即使只是进行了微小的更改。