打印

TMS320F2812程序调试

[复制链接]
1562|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
thf2008|  楼主 | 2009-11-5 13:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好。我最近调试了一个程序,可能是存储器出现了以下问题,大家看一下,是什么原因,调试的时候,出现了:
  error:can not allocate .text(sz:00001de0  page:0)in PRAMH0(avail:00000ffe)
  error:errors in input -/.Debug/lceshi.out not built

就是出现了上面的错误。我很郁闷。恳请大家帮忙啊

相关帖子

沙发
linhai2009| | 2009-11-5 13:36 | 只看该作者
.text 分配空间不够了 PRAMH0只有00000ffe这么大小
而.text有00001de0这么大 重新分配下

使用特权

评论回复
板凳
swolf| | 2009-11-5 15:30 | 只看该作者
2楼是正解
地址分配有问题

使用特权

评论回复
地板
thf2008|  楼主 | 2009-11-6 10:38 | 只看该作者
2# linhai2009

请问,如何的分配呢?我上传我的存储器的内容,你帮一下吧。
MEMORY
{
PAGE 0 :
   PRAMH0     : origin = 0x3f8000, length = 0x001000
    /*  This memory block loaded with the reset vector only if
       booting from XINTF Zone 7.  Otherwise reset vector is
       fetched from boot ROM. See .reset section below        */
   RESET      : origin = 0x3FFFC0, length = 0x000002            
         
PAGE 1 :
  /* SARAM                    */     
   DRAMH0     : origin = 0x3f9000, length = 0x001000  
   /* SARAM                     */     
   RAMM0    : origin = 0x000000, length = 0x000400
   RAMM1    : origin = 0x000400, length = 0x000400

   /* Peripheral Frame 0:   */
   DEV_EMU    : origin = 0x000880, length = 0x000180
   FLASH_REGS : origin = 0x000A80, length = 0x000060
   CSM        : origin = 0x000AE0, length = 0x000010
   XINTF      : origin = 0x000B20, length = 0x000020
   CPU_TIMER0 : origin = 0x000C00, length = 0x000008
   CPU_TIMER1 : origin = 0x000C08, length = 0x000008                 
   CPU_TIMER2 : origin = 0x000C10, length = 0x000008                 
   PIE_CTRL   : origin = 0x000CE0, length = 0x000020
   PIE_VECT   : origin = 0x000D00, length = 0x000100

   /* Peripheral Frame 1:   */
   ECAN_A     : origin = 0x006000, length = 0x000100
   ECAN_AMBOX : origin = 0x006100, length = 0x000100

   /* Peripheral Frame 2:   */
   SYSTEM     : origin = 0x007010, length = 0x000020
   SPI_A      : origin = 0x007040, length = 0x000010
   SCI_A      : origin = 0x007050, length = 0x000010
   XINTRUPT   : origin = 0x007070, length = 0x000010
   GPIOMUX    : origin = 0x0070C0, length = 0x000020
   GPIODAT    : origin = 0x0070E0, length = 0x000020
   ADC        : origin = 0x007100, length = 0x000020
   EV_A       : origin = 0x007400, length = 0x000040
   EV_B       : origin = 0x007500, length = 0x000040
   SPI_B      : origin = 0x007740, length = 0x000010
   SCI_B      : origin = 0x007750, length = 0x000010
   MCBSP_A    : origin = 0x007800, length = 0x000040

   /* CSM Password Locations */
   CSM_PWL    : origin = 0x3F7FF8, length = 0x000008

}


SECTIONS
{
   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > PRAMH0,      PAGE = 0
   .cinit           : > PRAMH0,      PAGE = 0

   /* Allocate data areas: */
   .stack           : > RAMM1,       PAGE = 1
   .bss             : > DRAMH0,      PAGE = 1
   .ebss            : > DRAMH0,      PAGE = 1
   .const           : > DRAMH0,      PAGE = 1
   .econst          : > DRAMH0,      PAGE = 1      
   .sysmem          : > DRAMH0,      PAGE = 1
   
   /* Allocate Peripheral Frame 0 Register Structures:   */
   DevEmuRegsFile    : > DEV_EMU,    PAGE = 1
   FlashRegsFile     : > FLASH_REGS, PAGE = 1
   CsmRegsFile       : > CSM,        PAGE = 1
   XintfRegsFile     : > XINTF,      PAGE = 1
   CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1      
   CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1      
   CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1      
   PieCtrlRegsFile   : > PIE_CTRL,   PAGE = 1      
   PieVectTable      : > PIE_VECT,   PAGE = 1

   /* Allocate Peripheral Frame 2 Register Structures:   */
   ECanaRegsFile     : > ECAN_A,      PAGE = 1   
   ECanaMboxesFile   : > ECAN_AMBOX   PAGE = 1

   /* Allocate Peripheral Frame 1 Register Structures:   */
   SysCtrlRegsFile   : > SYSTEM,     PAGE = 1
   SpiaRegsFile      : > SPI_A,      PAGE = 1
   SciaRegsFile      : > SCI_A,      PAGE = 1
   XIntruptRegsFile  : > XINTRUPT,   PAGE = 1
   GpioMuxRegsFile   : > GPIOMUX,    PAGE = 1
   GpioDataRegsFile  : > GPIODAT     PAGE = 1
   AdcRegsFile       : > ADC,        PAGE = 1
   EvaRegsFile       : > EV_A,       PAGE = 1
   EvbRegsFile       : > EV_B,       PAGE = 1
   ScibRegsFile      : > SCI_B,      PAGE = 1
   McbspaRegsFile    : > MCBSP_A,    PAGE = 1

   /* CSM Password Locations */
   CsmPwlFile      : > CSM_PWL,     PAGE = 1

}

使用特权

评论回复
5
thf2008|  楼主 | 2009-11-6 10:39 | 只看该作者
谢谢了 3# swolf

使用特权

评论回复
6
linhai2009| | 2009-11-6 11:06 | 只看该作者
cmd文件memory第一行:
PRAMH0     : origin = 0x3f8000, length = 0x001000
红色那部分,要足够大,但不要超过了你的这部分存储器大小

使用特权

评论回复
7
thf2008|  楼主 | 2009-11-7 23:10 | 只看该作者
哪么该写成多大呢?

使用特权

评论回复
8
linhai2009| | 2009-11-8 00:22 | 只看该作者
至少超过00001de0这个值

使用特权

评论回复
9
thf2008|  楼主 | 2009-11-8 09:47 | 只看该作者
给个具体的数值吧。

使用特权

评论回复
10
linhai2009| | 2009-11-8 10:20 | 只看该作者
这样好了,你再添加一个段L0L1。把text放到这个区域。这样改
MEMORY
{
PAGE 0 :
L0L1 :   origin = 0x008000, length = 0x002000
PRAMH0     : origin = 0x3f8000, length = 0x001000
    /*  This memory block loaded with the reset vector only if
       booting from XINTF Zone 7.  Otherwise reset vector is
       fetched from boot ROM. See .reset section below        */
   RESET      : origin = 0x3FFFC0, length = 0x000002            
         
PAGE 1 :
  /* SARAM                    */     
   DRAMH0     : origin = 0x3f9000, length = 0x001000  
   /* SARAM                     */     
   RAMM0    : origin = 0x000000, length = 0x000400
   RAMM1    : origin = 0x000400, length = 0x000400

   /* Peripheral Frame 0:   */
   DEV_EMU    : origin = 0x000880, length = 0x000180
   FLASH_REGS : origin = 0x000A80, length = 0x000060
   CSM        : origin = 0x000AE0, length = 0x000010
   XINTF      : origin = 0x000B20, length = 0x000020
   CPU_TIMER0 : origin = 0x000C00, length = 0x000008
   CPU_TIMER1 : origin = 0x000C08, length = 0x000008                 
   CPU_TIMER2 : origin = 0x000C10, length = 0x000008                 
   PIE_CTRL   : origin = 0x000CE0, length = 0x000020
   PIE_VECT   : origin = 0x000D00, length = 0x000100

   /* Peripheral Frame 1:   */
   ECAN_A     : origin = 0x006000, length = 0x000100
   ECAN_AMBOX : origin = 0x006100, length = 0x000100

   /* Peripheral Frame 2:   */
   SYSTEM     : origin = 0x007010, length = 0x000020
   SPI_A      : origin = 0x007040, length = 0x000010
   SCI_A      : origin = 0x007050, length = 0x000010
   XINTRUPT   : origin = 0x007070, length = 0x000010
   GPIOMUX    : origin = 0x0070C0, length = 0x000020
   GPIODAT    : origin = 0x0070E0, length = 0x000020
   ADC        : origin = 0x007100, length = 0x000020
   EV_A       : origin = 0x007400, length = 0x000040
   EV_B       : origin = 0x007500, length = 0x000040
   SPI_B      : origin = 0x007740, length = 0x000010
   SCI_B      : origin = 0x007750, length = 0x000010
   MCBSP_A    : origin = 0x007800, length = 0x000040

   /* CSM Password Locations */
   CSM_PWL    : origin = 0x3F7FF8, length = 0x000008

}

使用特权

评论回复
11
linhai2009| | 2009-11-8 10:20 | 只看该作者
SECTIONS
{
   /* Allocate program areas: */
   .reset           : > PRAMH0,      PAGE = 0
   .text            : > L0L1,      PAGE = 0  
.cinit           : > PRAMH0,      PAGE = 0

   /* Allocate data areas: */
   .stack           : > RAMM1,       PAGE = 1
   .bss             : > DRAMH0,      PAGE = 1
   .ebss            : > DRAMH0,      PAGE = 1
   .const           : > DRAMH0,      PAGE = 1
   .econst          : > DRAMH0,      PAGE = 1      
   .sysmem          : > DRAMH0,      PAGE = 1
   
   /* Allocate Peripheral Frame 0 Register Structures:   */
   DevEmuRegsFile    : > DEV_EMU,    PAGE = 1
   FlashRegsFile     : > FLASH_REGS, PAGE = 1
   CsmRegsFile       : > CSM,        PAGE = 1
   XintfRegsFile     : > XINTF,      PAGE = 1
   CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1      
   CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1      
   CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1      
   PieCtrlRegsFile   : > PIE_CTRL,   PAGE = 1      
   PieVectTable      : > PIE_VECT,   PAGE = 1

   /* Allocate Peripheral Frame 2 Register Structures:   */
   ECanaRegsFile     : > ECAN_A,      PAGE = 1   
   ECanaMboxesFile   : > ECAN_AMBOX   PAGE = 1

   /* Allocate Peripheral Frame 1 Register Structures:   */
   SysCtrlRegsFile   : > SYSTEM,     PAGE = 1
   SpiaRegsFile      : > SPI_A,      PAGE = 1
   SciaRegsFile      : > SCI_A,      PAGE = 1
   XIntruptRegsFile  : > XINTRUPT,   PAGE = 1
   GpioMuxRegsFile   : > GPIOMUX,    PAGE = 1
   GpioDataRegsFile  : > GPIODAT     PAGE = 1
   AdcRegsFile       : > ADC,        PAGE = 1
   EvaRegsFile       : > EV_A,       PAGE = 1
   EvbRegsFile       : > EV_B,       PAGE = 1
   ScibRegsFile      : > SCI_B,      PAGE = 1
   McbspaRegsFile    : > MCBSP_A,    PAGE = 1

   /* CSM Password Locations */
   CsmPwlFile      : > CSM_PWL,     PAGE = 1

}

使用特权

评论回复
12
午夜粪车| | 2009-11-9 21:17 | 只看该作者
帮顶

使用特权

评论回复
13
thf2008|  楼主 | 2009-11-9 22:09 | 只看该作者
这样修改可以的。可是我不知道是什么意思。你可否给讲一下为什么这样改?

使用特权

评论回复
14
linhai2009| | 2009-11-9 22:38 | 只看该作者
.text是你的可执行代码段也包含浮点数常量,你的这些代码大小超过了你定义的PRAMH0的长度4k,大小有0x00001de0,也就是7648个字节,存放不下,所以我给你重新定义了一个块,L0和L1合起来一共有8k的空间,
这样你的.text就能放下了。
L0L1这个名字你可以随便定义,只是因为它的MEMORY名字是L0,L1,为了省事我就这么定义了。
你应该好好看看关于CMD的这部分内容。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

221

主题

2024

帖子

2

粉丝