QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2329|回复: 4

makefile问题

[复制链接]
发表于 2006-9-12 02:20:27 | 显示全部楼层 |阅读模式
我在前面几个step时发现其中的makefile有一行:
armlink startup.o main.o uart.o -ro-base 0x0 -entry 0x0 -first startup.o -o l-boot.axf

就是说是从0开始的运行,规定了ro-base地址为0;

从step5之后就变成了:

armlink $(OBJS) -ro-base 0x8000 -first $(START_OBJ) -o $(AXF)

这里没有说明入口地址,只是指出了ro-base为0x8000,那么程序应该还是从0x0开始吧?这个程序应该还是boot的部分,应该要烧写到0x0处。这里为什么ro-base不是0x0呢?

多谢!
发表于 2006-9-12 07:38:29 | 显示全部楼层
前面几个 step 是烧写到 flash 上执行的,所以起始地址为0地址;
后面的程序都是通过 bootlaoder 下载到板子上的 sdram 上特定地址处执行的,所以地址为0x8000
回复

使用道具 举报

发表于 2006-9-12 08:28:07 | 显示全部楼层
李老师:
可是后面几个step也包含了开始文件startup.s,这个整个程序都是放在0x8000处,那么就是说程序入口不在0x0处了,那么程序不是从0x0处执行了,从0x8000处执行?如果是这样的话,这个startup会不会和以前的烧写的bootloader冲突呢?毕竟都有startup.s阿。
回复

使用道具 举报

发表于 2006-9-12 09:19:50 | 显示全部楼层
不会,这个没关系的,startup.s 不过是一个汇编文件,做一些初始化的工作,一旦下载的程序被执行起来,就和 bootloader 没关系了。
回复

使用道具 举报

发表于 2006-9-12 14:30:09 | 显示全部楼层
李老师,也就是说在程序download之后,会在0x8000处开始执行,那么,首先执行的还是startup.s还是main呢?我认为还是startup.s。那我能不能这么理解,我做好了一个带downloader功能的bootloader,将它烧写到flash之后,再次下载这个bootloader到0x8000处开始执行,进行在线调试呢?

不知道什么原因造成的,我始终无法用ads+代理调试bios,每次都提示说已经装载了一个ram了,问是否需要覆盖,不管如何选择,就是看不到程序的执行到哪里了。不知道这个办法能否可行呢?

BTW:ro-base定义为0x8000,那么
BaseOfROM        DCD        |Image$$RO$$Base|
    中的baseofrom是不是就是ro-base呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-25 20:50 , Processed in 0.092372 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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