【求助】指定变量在各个片上存储区域的存储位置时出现... - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3613|回复: 1

[未解决] 【求助】指定变量在各个片上存储区域的存储位置时出现...

[复制链接]

5

主题

8

帖子

135

积分

注册会员

Rank: 2

积分
135
发表于 2018-9-20 20:48:24 | 显示全部楼层 |阅读模式
由于程序的运算量很大,想把L1D和L2当做普通RAM,并将指定的数组变量存储在L1D和L2中。我的操作方法如下:
1. 先对L1DCFG和L2CFG寄存器进行操作,将L1D和L2配置为普通RAM而非Cache:
HWREG(0x01840040) &= ~0x00000007u;    // 将L1D全部配置为RAM
HWREG(0x01840000) &= ~0x00000007u;    // 将L2全部配置为RAM



2. 使用#pragma SET_DATA_SECTION命令,将指定的数组变量存储在L1D和L2中(这些数组变量全部为全局变量,且在main函数里会周期性地不断被读取和写入新值),例如:
#pragma SET_DATA_SECTION(".L1D_Variables")       // 放到L1D中
float  A1[1280];            // 未初始化的全局变量A1
int     A2[4096] = {0};   // 已初始化的全局变量A2
#pragma SET_DATA_SECTION()


#pragma SET_DATA_SECTION(".L2_Variables")         // 放到L2中
Comp  B1[4][4];                  // 未初始化的全局结构体变量B1
Comp  B2[5][5][9] = {0};     // 已初始化的全局结构体变量B2
#pragma SET_DATA_SECTION()



3. 在cmd文件中将对应的变量存储到L1DRAM和L2RAM里:
SECTIONS
{
        GROUP(NEAR_DP_RELATIVE)
        {
               .bss                    /* 未初始化全局及静态变量 */
               .neardata
               .rodata
        }  >  DDR2
    .text:_c_int00        >  EntryPoint                 /* 可执行代码 C 程序入口点*/
    .text                        >  DDR2                         /* 可执行代码 */
    .data                        >  DDR2                  /* 已初始化全局及静态变量 */
    ...... /*其他各类皆全部存储于DDR2*/

    .L1D_Variables                > SHDSPL1DRAM      /* 指定存储于L1D中的变量 */
    .L2_Variables                > SHDSPL2RAM         /* 指定存储于L2中的变量 */
}


但是这样在实际测试时会出问题,最终程序运行得到的计算结果有误,而只要不用SET_DATA_SECTION命令把变量存到L1D和L2中,解算结果就是正确的。
请问这种情况是因为在cmd文件中已经指定了已初始化/未初始化全局变量的存储位置在DDR2中导致的吗?或者是因为多变量跨存储区域读写导致出现不可控的问题?如果不是,可能是哪里的问题?
请工程师拨冗解答,谢谢!
回复

使用道具 举报

17

主题

193

帖子

1628

积分

创龙

Rank: 8Rank: 8

积分
1628
发表于 2018-9-25 09:46:36 | 显示全部楼层
你好,关于缓存的配置可以参考我们基于C6748核心板的10-1与10-2章节《缓存》的学习视频。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 01:06 , Processed in 0.038441 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表