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.

[参考译文] CCS/UCD3138A:如何消除警告:.const 段填充了2?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/680345/ccs-ucd3138a-how-to-eliminate-warning-section-const-was-padded-by-2

器件型号:UCD3138A

工具/软件:Code Composer Studio

你好。 TI 人

我构建了我的项目、总是会出现警告。 如何消除它?

'调用:ARM 十六进制实用程序'
"C:/ti/ccs720/ccsv7/tools/compiler/ti-cgt-arm_5.2.5/bin/armhex --英特尔-o "64T_PWR_Discrete HSFB_20180412.hex" 64T_PWR_Discrete HSFB_20180412.out"
转换为英特尔格式...
  "64t_PWR_Discrete _HSFB_20180412.out".vectors =>.vectors
  "64t_PWR_Discrete HSFB_20180412.out".text =>.text
  "64t_PWR_Discrete HSFB_20180412.out".const =>.const
  "64t_PWR_Discrete _HSFB_20180412.OUT".zero_out_integrity_word =>.zero_out_integrity_word
  "64t_PWR_Discrete HSFB_20180412.out".config =>.config
警告:第64T_PWR_Discrete、HSFB_20180412.out (.const)部分在中填充了2
  大小为808、以满足指定的存储器宽度4
'完成的建筑:64t_PWR_Discrete HSFB_20180412.hex'

这是我的 Linkfile

   .FIQ           :{}>0x001C/*                   快速中断处理程序           */
   .text          :{}>(pflash align(16))       /*代码                             */
   .const         :{}>(pflash align(16))/*       常量数据                    */
   .cinit         :{}>(pflash align(16))       /*初始化表            */
    FixedDeviceID :{}>(DEVICEID)               /*设备 ID 的固定位置     */
    FixedTfaStep  :{}>FIXTFA                   /*固定位置 TFA 步骤大小     */
    FixedConstants:{}>FIXCONST                 /*固定位置常量         */
   flashi        :{}> FLASHSUM                 /* pflash Integrity Word            */

 

BR

Dana

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

    虽然它取决于.hex 文件接下来会发生什么、但您可能会忽略该警告。  在 ARM 可执行文件上、默认情况下、存储器宽度为32位或4字节。  const 段的长度必须为806字节。  因此、在.const 的十六进制输出的末尾添加一个额外的两个0字节。   

    如果这确实与您有关、则您可以安排在链接期间添加填充。  对于链接命令文件中的.const 行、将 align 更改为 palign。   palign 指令执行与 align 相同的对齐、但它还会将段填充到该字节数。  这最终会浪费几个字节、这可能是也可能不是问题。

    关于您的十六进制命令,我想指出您可能忽略的内容...  --Intel 选项的默认 ROM 宽度为8位或1字节。  这意味着您不会获得单个输出文件、而是4个输出文件。   第一个名为 64T_PWR_Discrete HSFB_20180412.hex。  但其余的名称分别为 64T_PWR_Discrete HSFB_20180412.i1、 64T_PWR_Discrete HSFB_20180412.i2和 64T_PWR_Discrete HSFB_20180412.i3。  我很确定您不希望这样做。  为了避免这种情况、通过添加选项--romwidth=32、使 ROM 宽度与存储器宽度匹配。

    谢谢、此致、

    乔治

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

    感谢你的帮助。 我将对齐方式更改为 palign 确实有效。 但另一个问题:某些字节填充未知值是否会产生任何影响? 我担心它会影响正常运行。

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

    [引用用户="Dana Huang"]是否有任何影响,某些字节会填充未知值?

    否  请在  ARM 汇编工具手册中标题为与 Padding 对齐的部分中阅读有关该文档的更多信息。

    谢谢、此致、

    乔治