搜索
bottom↓
回复: 8

ARM启动文件请教

[复制链接]

出0入0汤圆

发表于 2008-6-6 13:08:02 | 显示全部楼层 |阅读模式
我刚刚看到那个LPC22XX的工程摸板,里面有几个后缀名为.scf的文件
我也看了是对应的加载位置,但是mem_a.scf是对应的FLASH.RAM.还是片外的,能不能分别说明下,还有我看了语句Startup.o(MyStacks),这个是个什么啊!函数还是,这个起什么作用,希望得到清楚明白的回答,谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2008-6-6 19:09:08 | 显示全部楼层
帅哥哥,你贴一些代码呀。我从来没见过你说的那个Startup.o。

出0入0汤圆

 楼主| 发表于 2008-6-6 20:52:21 | 显示全部楼层
;********************************************************************************************************/
ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

    IRAM 0x40000000
    {
        Startup.o (MyStacks)
    }

    STACKS_BOTTOM +0 UNINIT
    {
        Startup.o (StackBottom)
    }

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

    ERAM 0x80000000
    {
        * (+RW,+ZI)
    }

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

    HEAP_BOTTOM 0x80080000 UNINIT
    {
        Startup.o (HeapTop)
    }
}


呵呵,就是上面的!

出0入0汤圆

发表于 2008-6-6 21:02:31 | 显示全部楼层
这是链接脚本,我也就明白这些了,帮顶。

出0入0汤圆

 楼主| 发表于 2008-6-10 08:50:00 | 显示全部楼层
呵呵!感谢!

出0入0汤圆

发表于 2008-6-10 09:00:20 | 显示全部楼层
建议你看一下zlg的深入浅出arm7,里面有详细介绍

出0入0汤圆

发表于 2008-6-10 09:24:55 | 显示全部楼层
传说中这个叫 分散加载文件

ROM_LOAD 为加载区的名称,其后面的0x00000000 表示加载区的起始地址(存放程序代码的起始地址)
ROM_LOAD 0x0
{;ROM_EXEC 描述了执行区的地址,放在第一块位置定义
    ROM_EXEC 0x00000000
    {;从起始地址开始放置向量表(即Startup.o(vectors, +First),其中Startup.o 为Startup.s 的目标文件)

;+First表示Vector段放在最前面        Startup.o (vectors, +First);接着放置其它代码(即* (+RO)),* 是通配符,类似WINDOW下搜索用的通配符
        * (+RO)
    };变量区IRAM 的起始地址为0x40000000
    IRAM 0x40000000
    {;放置Startup.o (MyStacks)
        Startup.o (MyStacks)
    };+0表示接着上一段,UNINIT 表示不初始化
    STACKS_BOTTOM +0 UNINIT      
    {;放置AREA    StackBottom, DATA, NOINIT
        Startup.o (StackBottom)
    };接着从0x40004000 开始,放置 AREA    Stacks, DATA, NOINIT,UNINIT 表示不初始化
    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    };外部RAM从0x80000000开始为变量区

;如果片外RAM起始地址不为0x8000 0000,则需要修改mem_.scf文件
    ERAM 0x80000000
    {
        * (+RW,+ZI)
    };+0表示接着上一段,UNINIT 表示不初始化
    HEAP +0 UNINIT
    {;放置堆底, AREA    Heap, DATA, NOINIT
        Startup.o (Heap)
    };接着在外部0x80080000 放置堆顶

;这个地址是片外RAM 的结束地址,根据实际情况修改    HEAP_BOTTOM 0x80080000 UNINIT
    {
        Startup.o (HeapTop)
    }
}

;重定向__user_initial_stackheap 函数

;分配新的bottom_of_heap地址等,R0-R3是函数必须的返回值,返回bottom_of_heap的值

;通过分散加载描述文件,重定向其位置,bottom_of_heap等已经在Startup.s中定义为DATA类型


__user_initial_stackheap   
    LDR   r0,=bottom_of_heap
;    LDR   r1,=StackUsr
    LDR   r2,=top_of_heap
    LDR   r3,=bottom_of_Stacks
    MOV   pc,lr


--------------------------------------------------------------------------------------------
我摘自网上,自己没深入研究过  

刚开始的时候我也是想从底层一直搞到顶层的, 后来发现这有点行不通

只需要知道改哪里就可以了。

出0入0汤圆

 楼主| 发表于 2008-6-10 12:48:46 | 显示全部楼层
谢谢,非常感谢!

出0入0汤圆

发表于 2014-2-11 15:37:23 | 显示全部楼层
启动文件,纠结!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 01:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表