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.

CMD文件



我在CMD文件的MEMORY部分定义了一块RAM区域(假如我定义的名字为UserRAMMem),然后在SECTIONS指定了一个段名(假如叫 .UserSections )到UserRAMMem存储区域中。

问题1:

在C语言代码中用  #pragma CODE_SECTION(Fun_1,".UserSections");  Fun_1是一个函数名这样是不是可以将Fun_1这个函数放在

我定义的UserRAMMem内存中去执行了呢?

问题2:

如果我有多个函数都要放在自己定义的内存区域内,可不可以

#pragma CODE_SECTION(Fun_1,".UserSections"); 

#pragma CODE_SECTION(Fun_2".UserSections"); 

#pragma CODE_SECTION(Fun_3,".UserSections"); 

这样将多个函数都指定到同一个段内?我觉得这样后面的函数会将前面的覆盖了,不知道这样可不可行。

问题3:

#pragma DATA_SECTION(buf,".UserSections");

使用DATA_SECTION这个时是将buf这个变量存储到指定的内存区域嘛?buf应该是一个指针类型还是任何变量都可以呢?

手里没有硬件没法实际调试有知道的指点下谢谢啦!!!

  • 最后一个问题是

     #pragma DATA_SECTION(bufferB,"my_sect")

    char bufferA[512];

    char bufferB[512]:

    一般这种,你说那个是什么变量呢

    数组名并不是指针,也不是常指针,它和一般的变量名一样都是内存地址的助记符。

    第一个问题没有查到官方的具体说明,你可以对应每一个的Fun单独设置一个UserSections,比如用统一的编号后缀

  • 通常第一个问题是这么用的

    #pragma CODE_SECTION(funcA, codeA)

    查了好多都是这么实现的,用统一的后缀,一对一

  • 就是说一个函数设置一个对应的段来存放它,

     .UserSection   : LOAD = FLASH0,
                              RUN = MYRAM,
                              LOAD_START(_RamfuncsLoadStart),
                              LOAD_END(_RamfuncsLoadEnd),
                              RUN_START(_RamfuncsRunStart),
                              PAGE = 0

    设置指定段时候是不是必须像上面这样,然后在用

    #pragma CODE_SECTION(Fun1,".UserSection   ");  和

    MemCopy(&_RamfuncsLoadStart, &_RamfuncsLoadEnd, &_RamfuncsRunStart);将函数拷贝到RAM中去。

    这里面的

    LOAD

    RUN

    LOAD_START

    LOAD_END

    RUN_START

    这几个关键字是什么含义呢?

    ========================================================================================================================

    还是

    .UserSection   : {} > UserMemRAM

    #pragma CODE_SECTION(Fun1,".UserSection   ");然后在用这一个声明就可以呢?

    我试了必须用上面的方式才可以正常运行,那#pragma CODE_SECTION(Fun1,".UserSection   ");该如何理解,是将Fun1的地址放到UserSection   指定的起始地址嘛?

  • 我说的变量就是int Var;这样的变量不是一个数组。一般在RAM中存放数据是不是都存放数组的数据啊。