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:将常量保存在 CCS IDE 中的闪存中

Guru**** 2562120 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/862663/compiler-tm4c1294ncpdt-save-the-const-in-flash-in-ccs-ide

器件型号:TM4C1294NCPDT

工具/软件:TI C/C++编译器

您好、e2e、

下面是一个有关在 CCS 的闪存中保存常量数据的问题。

MCU 是 TM4C1294、我们希望将常量数据放入闪存中以保存 RAM 使用情况、在下面的代码中、我们将介绍如何实现这一点。  

#define _code __attribute__((SECTION ("._OEM_BU1_RODATA ")))

在 cmd 文件中、我们如何创建._OEM_BU1_RODATA 段  ? 您能帮助纠正上述问题吗?

提前感谢。

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

    简单的方法是在函数作用域之外声明带有 const 限定符的变量:

    #include 
    #include 
    #include "driverlib/sysctl.h"
    
    const uint8_t name[]={"my name\0"};
    
    int
    main (void)
    {
    
    volatile uint8_t ram_name[10];
    //
    //从 PLL 以120MHz 运行。
    //
    SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);
    memcpy (ram_name、name、sizeof (name));
    
    }
    

    数组名称将位于".const"部分。 project0中的标准链接命令文件会将该段放入闪存中。 在我的简单示例中、它最终位于地址0x720。

    .const 0 000004d4 00000260
    000004d4 000001b0 driverlib.lib:sysctl.obj (.const:g_pppui32XTALtoVCO)
    00000684 0000006c :sysctl.obj (.const:g_pui32Xtals)
    000006f0 00000030 :sysctl.obj (.const:g_sXTALtoMEMTIM)
    00000720 00000009 main.obj (.const:.string:name)
    00000729 00000003 --hole --[填充= 0]
    0000072c 00000008 driverlib.lib:sysctl.obj (.const)
    
    

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

    尊敬的 Bob:

    是的、它可以正常工作、感谢您的帮助。

    Leon