6336|7

47

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请教关于28335数据存放的问题 [复制链接]

向各位求助:
我程序里面有一片4K*32bit的常数数据需要存放,现在不清楚应该存放到哪里。我简单的通过设置一个全局变量数组,然后把数据存放到数组中,然后把该数组映射到RAML6区中,我知道L6区应该也放不下,然后编译就报错,除了L6区提示超过容量外, .cinit段对应的L0区也报错,.cinit段是用来存储全局变量和静态变量的,可是我不是把那一块数据存放到L6区了吗?  然后现在不知道该怎么办了。
刚学没多久,没用过片内FLASH,这种情况需要把这些数据烧写到片内FLASH里面吗?如果需要,这么烧写呢?我在网上看到的大多数是直接烧写程序到FLASH中。

最新回复

我也想问一下 如果28335 DMA的存储数据区L4-L7 如果我要接收的数据大于4K 而L4只有4K大小 多出来的数据会自动存到L5还是直接就丢失了  详情 回复 发表于 2016-11-3 11:07
 
点赞 关注

回复
举报

667

帖子

3

TA的资源

版主

沙发
 
修改一下CMD文件,可以弄出来一个大一点的区。
 
 

回复

47

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
nemo1991 发表于 2016-3-31 09:02
修改一下CMD文件,可以弄出来一个大一点的区。

谢谢!我好像知道怎么弄了。
您能解释一下为什么我明明把变量数组用#pragma DATA_SECTION 语句映射到了L6区,但是.cinit段也会存放数据吗?这样程序不是把这一片数据存放了两边吗?后来我把#pragma 那段话删掉了,发现.ebss段初级超出了范围,也就是那一段数据又自动存放到.ebss段去了。
这个怎么解释呢?
 
 
 

回复

667

帖子

3

TA的资源

版主

4
 
cmd文件有写那些东西放在哪个扇区。
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(中级)

5
 
nemo1991 发表于 2016-3-31 10:58
cmd文件有写那些东西放在哪个扇区。

已解决,谢谢啦~

点评

解决了方向一下方案。  详情 回复 发表于 2016-3-31 21:51
 
 
 

回复

667

帖子

3

TA的资源

版主

6
 

解决了方向一下方案。
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(中级)

7
 
nemo1991 发表于 2016-3-31 21:51
解决了方向一下方案。

我把数据量改小到2K*32了,然后把.cinit段存放的位置重新修改了下,就成功了。
MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode      */

   BEGIN      : origin = 0x000000, length = 0x000002     /* Boot to M0 will go here                      */
   RAMM0      : origin = 0x000050, length = 0x0003B0
//观察了memory allocation,.cinit段用来存放初始化全局变量程序代码,内存用量非常大
//决定把RAML1-RAML3合并起来,用来存放.cinit段
//这样原来存放.text段的RAML1区改到RAML0区
//还有剩余的几个段:ramfuncs  、 .pinit等改到 RAML3的末尾
   RAML0      : origin = 0x008000, length = 0x001000

   RAML1      : origin = 0x009000, length = 0x002800

   RAML2      : origin = 0x00B800, length = 0x000800

   ZONE7A     : origin = 0x200000, length = 0x00FC00    /* XINTF zone 7 - program space */
   CSM_RSVD   : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   CSM_PWL    : origin = 0x33FFF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA            */
   ADC_CAL    : origin = 0x380080, length = 0x000009
   RESET      : origin = 0x3FFFC0, length = 0x000002
   IQTABLES   : origin = 0x3FE000, length = 0x000b50
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008c
   FPUTABLES  : origin = 0x3FEBDC, length = 0x0006A0
   BOOTROM    : origin = 0x3FF27C, length = 0x000D44


PAGE 1 :
   /* BOOT_RSVD is used by the boot ROM for stack.               */
   /* This section is only reserved to keep the BOOT ROM from    */
   /* corrupting this area during the debug process              */

   BOOT_RSVD  : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1      : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RAML4      : origin = 0x00C000, length = 0x001000
   RAML5      : origin = 0x00D000, length = 0x001000

   //L6区和L7区合并在一起 用于存放全局变量数据"DMARAML6",这一片区域是程序运行过程中的变量存放的位置
   RAML6      : origin = 0x00E000, length = 0x002000
  
   ZONE7B     : origin = 0x20FC00, length = 0x000400     /* XINTF zone 7 - data space */
}


SECTIONS
{
   /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
   codestart        : > BEGIN,     PAGE = 0
   ramfuncs         : > RAML2,     PAGE = 0
   .text            : > RAML0,     PAGE = 0
   .cinit           : > RAML1,     PAGE = 0
   .pinit           : > RAML2,     PAGE = 0
   .switch          : > RAML2,     PAGE = 0

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAML4,     PAGE = 1
   .econst          : > RAML5,     PAGE = 1
   .esysmem         : > RAMM1,     PAGE = 1

   IQmath           : > RAML1,     PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD

   /* Uncomment the section below if calling the IQNexp() or IQexp()
      functions from the IQMath.lib library in order to utilize the
      relevant IQ Math table in Boot ROM (This saves space and Boot ROM
      is 1 wait-state). If this section is not uncommented, IQmathTables2
      will be loaded into other memory (SARAM, Flash, etc.) and will take
      up space, but 0 wait-state is possible.
   */
   /*
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   {

              IQmath.lib (IQmathTablesRam)

   }
   */

   FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

   DMARAML4         : > RAML4,     PAGE = 1
   DMARAML5         : > RAML5,     PAGE = 1
   DMARAML6         : > RAML6,     PAGE = 1


   ZONE7DATA        : > ZONE7B,    PAGE = 1

   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used                    */
   csm_rsvd         : > CSM_RSVD   PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
   csmpasswds       : > CSM_PWL    PAGE = 0, TYPE = DSECT /* not used for SARAM examples */

   /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
   .adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD

}

/*
//===========================================================================
// End of file.
//===========================================================================
*/
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

8
 
我也想问一下 如果28335 DMA的存储数据区L4-L7 如果我要接收的数据大于4K 而L4只有4K大小 多出来的数据会自动存到L5还是直接就丢失了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表