Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552111
  • 博文数量: 99
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1117
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-23 15:17
文章分类

全部博文(99)

文章存档

2011年(4)

2010年(13)

2009年(82)

我的朋友

分类: LINUX

2009-12-31 11:26:02

今天在调一个开cacheMMUADS程序时候,可在编译链接的时候老是发现链接出问题,报的错误是:

L6202E:Section Region$$Table cannot be assigned to a non-root region

看来是我的链接脚本scat_crremap.scf出问题了:

我的scatter文件内容如下:

ESRAM 0x04000000 ;第一个加载域是位于ESRAM

{

    ESRAM 0x04000000 ;加载域中的运行域

    {

            boot_gfd_4k2.o (BOOT, +First)

      

    }

 

}

SDram2 0x30100000 ;第二个加载域是位于SDRAM

{

        SDram1 0x30000000 ;第一个运行域是准备映射中断向量表

    {   

       int_gfd.o (INT, +First)

    }

 

     SDram2 0x30100000 ;第二个运行域准备映射其他代码和数据

    {

          

 

       * (+RO,+RW,+ZI)

    }

}

看来这个文件第二个加载域出问题了:

上网无解,后来自己结合前人正确的scatter文件,我发现原来是在SDRAM的加载域中数据区有问题,数据区必须要放在和加载域在同一个部分的运行域才行,这样才没有错,后来我仔细想了一下,觉得可能是由于ADS的堆栈区必须要和加载域一致,否则ADS还得自己生成搬运自己数据区的代码,这应该是不合理的,于是我就改了下scatter文件干脆就弄了三个加载域,每个加载域中都含有一个唯一的运行域这样就没有问题了。

ESRAM 0x04000000

{

    ESRAM 0x04000000

    {

            boot_gfd_4k2.o (BOOT, +First)

    }

}

SDram1 0x30000000

{

      

    SDram1 0x30000000

    {   

       int_gfd.o (INT, +First)

}

}

SDram2 0x30100000

{

     SDram2 0x30100000

    {

       * (+RO,+RW,+ZI)

    } 

}

阅读(2833) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~