这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 为什么我的分散加载不成功,烦各位帮我看看

共2条 1/1 1 跳转至

为什么我的分散加载不成功,烦各位帮我看看

院士
2006-09-17 18:14:16     打赏
为什么我的分散加载不成功,烦各位帮我看看



关键词: 为什么     我的     分散     加载     不成功     各位     帮我     看看    

院士
2006-12-22 22:43:00     打赏
2楼
问 我的分散加载不成功,烦各位帮我看看,我真是太菜了.请回答.

我在

使用周立功提供的模板,把mec_c.scf文改成如下:
ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
    
    ROM_DATA 0x0001c400         //CODE.c文件装的是字库
    {
       code.o (+RO)
    }
    
    IRAM 0x40000000
    {
        Startup.o (MyStacks)
        * (+RW,+ZI)
    }

    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }

    STACKS 0x40002000 UNINIT
    {
        Startup.o (Stacks)
    }
}

可以字库仍然生成在DATA区里.

请问应该怎样改正? 1: 可能是编译器是把这个数组处理为rw了,
如果改成code.o (+RO,+RW)不知道行不?
然后看数组是在flash里不,虽然可能仍是rw(还是算作data),但实际是不能改写的,这样程序里可以直接使用数组了,结果一样的。 2: to:yyccaa  改成 code.o (+RO,+RW) 也不行编译能通过,字库仍然放在DATA区里
3: 我改成这样仍然不行.改成这样
FLASH_LOAD 0x0001c400
{
    ROM_DATA 0x0001c400
    {
       code.o (+RO,+RW)
    }   
}


ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
    
    IRAM 0x40000000
    {
        Startup.o (MyStacks)
        * (+RW,+ZI)
    }

    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }

    STACKS 0x40002000 UNINIT
    {
        Startup.o (Stacks)
    }
}

也不行呢.
编译通过,字库仍然放在DATA里 4: 我的意思是你的目的只是要让code.c的代码定位在flash里,所以即使是data区,只要它被定位在flash里,存储和读取也都是在flash里的。
而你只需要初始化IRAM段的rw和zi就可以了,code.c仍然在flash里并不会被初始化到ram里(因为分散加载关系,处于不同的段)
在ads的编译设置里ARM linker-〉listings选image map和symbols,编译报告里会看到那个数组首地址的值的。 5: 还是不行呢.现在好烦.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]