我的购物车(0)

28377如何将一个数组或结构体定义到内存固定区域

作者:EverHuang ,2018/5/16 9:08:22 发布     举报
    (81) (0) (0) (1)
  • 最近在学习28377,想将一个数组或结构体定义到内存固定区域。

    看了controlSuite中RAM_management的例程,该例程对数组的内存映射操作如下:

    CPU1中:

    uint16_t c1_r_array[256];   // mapped to GS0 of shared RAM owned by CPU02
    uint16_t c1_r_w_array[256]; // mapped to GS1 of shared RAM owned by CPU01
    #pragma DATA_SECTION(c1_r_array,"SHARERAMGS0");
    #pragma DATA_SECTION(c1_r_w_array,"SHARERAMGS1");

    CPU2中:

    uint16_t c2_r_w_array[256];   // mapped to GS1 of shared RAM owned by CPU02
    uint16_t c2_r_array[256];     // mapped to GS0 of shared RAM owned by CPU01
    #pragma DATA_SECTION(c2_r_array,"SHARERAMGS1");
    #pragma DATA_SECTION(c2_r_w_array,"0x0000c100");

    看了两个CPU的map文件:

    CPU1:

    0000c000  _c1_r_array                          
    0000d000  _c1_r_w_array

    CPU2: 

     0000c000  _c2_r_w_array                  
    0000d000  _c2_r_array

    c1_r_array 和 c2_r_w_array的地址分配正好是一样的,c1_r_w_array和c2_r_array的地址正好是一样的,所以例程未做其他操作就可以在两个CPU间交换读写内存数据。

    我不知道编译器的内存分配原则是什么,但是按照我的理解这样分配内存空间有“讨巧”的嫌疑,因为程序只是将c1_r_array分配到了SHARERAMGS0,而SHARERAMGS0是从 0x000c000开始的4K内存空间,照理说将c1_r_array随机分配到SHARERAMGS0中的任意位置应该都是合理的。只是因为这个程序中只定义了一个唯一的c1_r_array数组在GS0空间,所以在编译器中看上去无论怎么分配都是从0000c000开始。

    我的疑问是:

    1、以#pragma DATA_SECTION(c2_r_array,"SHARERAMGS1");语句为例,这样分配内存空间是否能保证每次c2_r_array分配的内存空间都是固定的?多次编译后会定义到该内存区段别的地方吗?(当然目前看,GS1中就这一个数组,每次都是从地址起始位置开始分配)

    2、如果我加一个数组,比如c3_r_array,也定义到SHARERAMGS1,这样c2_r_array,c3_r_array的内存地址还会每次编译都一样吗?会不会出现不一样的情况?(我理解就算编译器每次分配的地址都一样,但是从理论上这俩数组的地址是可以随机改变的)

    3、我可以用RAM_management中这种讨巧的内存分配方式吗?如果RAM_management中的内存定义操作不严谨,我应该如何操作才能将一个数组定义到内存的一个固定区域?

标签:

MSP430 16 位超低功耗 MCU

共有1条网友评论
Stin1cao 发表于2018/5/16 9:08:35
还要结合CMD
有帮助(0)没帮助(0)引用此答案
1/1
文明上网,理性发言
专题版主
申请成为版主
  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

  • Royston

    高级工程师 安富利中国有限公司 FAE熟练应用,ISE14.1 工具

最新分享上传与展示原则:
1、首先展示的产品必须是电子业内的作品;
2、对业内人士有学习的意义;
3、作品可以以广告的形式出现,若广告目的太
强烈,不予展示;
4、带病毒性的文件,不予展示,若严重,还会
屏蔽会员IP;
5、任何的分享都会通过系统管理员的审核,审
核时间,通常不超过24小时;