这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » hex 求助:分散加载文件中用了两个加载区,编译后无法生成一个hex文件

共2条 1/1 1 跳转至

hex 求助:分散加载文件中用了两个加载区,编译后无法生成一个hex文件

院士
2006-09-17 18:14:16     打赏
hex 求助:分散加载文件中用了两个加载区,编译后无法生成一个hex文件



关键词: 求助     分散     加载     文件     用了     两个     加载区     编译         

院士
2006-12-22 22:43:00     打赏
2楼
问 为了避开存储器中较低部的某块特定空间,在分散加载文件中设置了两个加载区,具体如下:
ROM_LOAD 0x80000000 1000
{
    ROM_EXEC 0x80000000
    {
        Startup.o (vectors, +First)
     }
}
ROM_LOAD1 0x80001200
{    
    ROM_EXEC1 0x80001200
    {
        * (+RO)
    }
    
    EIRAM 0x40002000
    {
        Startup.o (+RW,+ZI)
        * (+RW,+ZI)
    }
    
    HEAP +0 UNINIT                
    {
        heap.o (+ZI)
    }

    STACKS 0x40003ED0 UNINIT
    {
        stack.o (+ZI)
    }
}
问题是:在ADS1.2里设置输出文件类型为intel 32 bit hex时,编译后生成的不是一个*.hex文件,而是一个包括ROM_EXEC和ROM_EXEC1两个未明类型文件的*.hex文件夹;请问高手,如何将其合而为一?或推荐其它避开特定区域更好的方法! 1: 关于zlg_boot启动用户程序的时间太长.需要等10秒,能不能短一些. 2: 请高手指点! 3: 可以这样写试试看ROM_LOAD 0x80000000
{
    ROM_EXEC 0x80000000 1000
    {
        Startup.o (vectors, +First)
     }
    ROM_EXEC1 0x80001200 FIXED
    {
        * (+RO)
    }
    
    EIRAM 0x40002000
    {
        Startup.o (+RW,+ZI)
        * (+RW,+ZI)
    }
    
    HEAP +0 UNINIT                
    {
        heap.o (+ZI)
    }

    STACKS 0x40003ED0 UNINIT
    {
        stack.o (+ZI)
    }
}
但是生成的文件对应从0x80001000到0x80001200是以0填充的。 4: 合并两个文件即可将两个文件用文本编辑器打开,删除第一个文件的最后一行,另一个拷贝过来即可。
具体参看 INTEL HEX 文件格式。

共2条 1/1 1 跳转至

回复

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