打印

启动代码与u-boot的问题

[复制链接]
1442|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ajhjj|  楼主 | 2008-9-13 12:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

大多数bootloader都分为stage1和stage2两大部分u-boot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码部分如下:
(1) 定义入口 。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。 (2)设置异常向量(Exception Vector)。 (3)设置CPU的速度、时钟频率及中断控制寄存器。 (4)初始化内存控制器 。 (5)将ROM中的程序复制到RAM中。 (6)初始化堆栈 。 (7)转到RAM中执行,该工作可使用指令ldr pc来完成。 
上面是U-BOOT第一阶段的作用
问题:
1.我的板子里面已经有U-BOOT了,而一些启动代码,如44B0的启动代码44b0init.s中也有这些功能啊,每次写程序时,我都把44B0init.s包含进来,那这样子不是重复了?
2.如果我的板子不要加入操作系统,裸奔时也要U-BOOT吗?
3.我把U-BOOT擦掉了,用AXD+JTAG不能调试?把U-BOOT烧进去后就可以调试了,这么说,无论怎么样都先要把U-BOOT烧进去才可以?
 
有把这个理解好的哥哥姐姐弟弟妹妹叔叔啊姨...能帮我解释一下吗?

相关帖子

沙发
小飞鼠| | 2008-9-13 14:58 | 只看该作者

我的理解:

  我的理解,不知道准确不:
  用AXD和JTAG调试的时候,是下载程序到 SDRAM 里运行代码的,
  当有U-BOOT在的时候,它已经帮你初始化了 SDRAM,所以可以调试。
  但是,当没有U-BOOT的时候,就没有程序来 初始化SDRAM了,所以,你再用AXD+JTAG下载程序到SDRAM的时候,SDRAM根本就工作不起来的,所以不能调试。

  你试着 写一小段启动代码,把SDRAM 初始化,然后再用AXD+JTAG来调试看,应该是可以的。

使用特权

评论回复
板凳
ajhjj|  楼主 | 2008-9-13 15:22 | 只看该作者

应该是这样子的

"当有U-BOOT在的时候,它已经帮你初始化了 SDRAM,所以可以调试。
当没有U-BOOT的时候,就没有程序来 初始化SDRAM了,所以,SDRAM根本就工作不起来的."
应该就是这样子的,可是

"写一小段启动代码,把SDRAM 初始化,然后再用AXD+JTAG来调试看,应该是可以的"

这段代码写完怎么办?把它当U-BOOT一样烧到flash里去?
或者直接把44b0init.s的代码当U-BOOT一样烧到flash里去?

使用特权

评论回复
地板
小飞鼠| | 2008-9-13 15:30 | 只看该作者

理论上是这样

    理论上是这样,我没有试过,你可以尝试下。
    记得告诉我试验结果。:)

使用特权

评论回复
5
ajhjj|  楼主 | 2008-9-14 12:22 | 只看该作者

老鼠

试验结果是可以的
把程序+启动代码编译后,直接烧入0x0处就行了
但是在flash中运行,明显比在SDRAM中运行慢多了

使用特权

评论回复
6
小飞鼠| | 2008-9-14 16:17 | 只看该作者

慢多了?

     除非你的启动代码没有执行 把 flash里的代码拷贝到 SDRAM中,不然和用UBOOT启动运行程序是一样的。
     这就牵涉到 启动代码部分了!你可以自己看看!

使用特权

评论回复
7
ajhjj|  楼主 | 2008-9-15 18:05 | 只看该作者

老鼠

启动代码我还要慢慢地啃!!!

还有一个问题我一直不明白:
44b0接的sdram的地址是0x0c000000,但为什么很多开发板都写着是0x0c008000呢?这多出来的地址干什么去了?

使用特权

评论回复
8
twentyone| | 2008-9-15 19:06 | 只看该作者

最后一个问题:

你看一下44B0的存储设置,很多系统都可以通过配置把FLASH映射到不同的地址。
不过我觉得0x0c008000可能有问题。

使用特权

评论回复
9
ajhjj|  楼主 | 2008-9-16 19:42 | 只看该作者

0x0c008000应该没有问题

应该是0x0c008000以上的地址都没有问题.我搜索了一下,有人给出的答案是这多出来的地址是系统保留的,但我没有找到系统保留相关的文字说明!!!

把FLASH映射到不同的地址肯定可以啊,但由于是放启动代码相关的,所以一般放在0x0处(不知道我有没有理解错你的意思?)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

26

帖子

0

粉丝