完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
由于程序的运算量很大,想把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中导致的吗?或者是因为多变量跨存储区域读写导致出现不可控的问题?如果不是,可能是哪里的问题? 请工程师拨冗解答,谢谢! |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
基于RK3588J的6路MIPI CSI视频采集案例分享,多路视频系统必看!
1263 浏览 0 评论
609 浏览 0 评论
【创龙科技TL570x-EVM开发板试用体验】 GStreamer 功能测评
8611 浏览 8 评论
【创龙科技TL570x-EVM开发板试用体验】创龙TL5708-EVM开发板入手使用体验评测
6617 浏览 0 评论
【创龙TLZ7x-EasyEVM评估板试用连载】+3.环境搭建vmware+ubuntu详细教程(二)
1408 浏览 0 评论
879浏览 0评论
【创龙科技AM64x开发板试用体验】创龙科技AM64x开发板及核心板介绍
850浏览 0评论
【创龙科技AM64x开发板试用体验】创龙科技AM64x开发板--板卡调试软件安装
865浏览 0评论
【创龙科技AM64x开发板试用体验】AM64x开发板开箱测评
857浏览 0评论
求助! 关于使用自制底板插入创龙IMX8MM 核心板无法启动问题
498浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:19 , Processed in 0.431017 second(s), Total 50, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号