菜鸟疑惑之u-boot

[复制链接]
 楼主| Mr_driver 发表于 2013-3-5 11:38 | 显示全部楼层 |阅读模式
  1. #ifndef CONFIG_SKIP_LOWLEVEL_INIT
  2.         bl        cpu_init_cp15
  3.         bl        cpu_init_crit
  4. #endif
在/armv7/start.S中,CONFIG_SKIP_LOWLEVEL_INIT在平台相关的文件中定义了,也就是不会执行cpu_init_crit,这个函数要调用lowlevel_init初始化ram等相关操作,这里为什么可以不做这些工作呢?
jlass 发表于 2013-3-5 12:02 | 显示全部楼层
都写了叫SKIP_LOWLEVEL_INIT
 楼主| Mr_driver 发表于 2013-3-5 12:29 | 显示全部楼层
jlass 发表于 2013-3-5 12:02
都写了叫SKIP_LOWLEVEL_INIT
Memory controller must be configured before relocating U-Boot in ram.

是我没表述清楚吗?我的意思是为什么可以不初始化内存控制器。
jlass 发表于 2013-3-5 16:49 | 显示全部楼层
Mr_driver 发表于 2013-3-5 12:29
是我没表述清楚吗?我的意思是为什么可以不初始化内存控制器。

你不用的话干嘛初始化啊。
把代码的逻辑改一下就是
#ifdef CONFIG_LOWLEVEL_INIT
        bl        cpu_init_cp15
        bl        cpu_init_crit
#endif
这样不就清楚了么,需要做LOWLEVEL_INIT的时候就做,不需要就不做。

评论

好吧~~~再解释一次,在把nand里面的程序拷贝到ram之前是应该先初始化内存控制器的,可是在这里却把初始化的代码屏蔽掉了,为什么这样做可行  发表于 2013-3-5 17:03
jlass 发表于 2013-3-5 17:32 | 显示全部楼层
本帖最后由 jlass 于 2013-3-6 08:18 编辑

如果你的uboot放在nandflash中,那么uboot不是在nandflash中运行的,而是拷贝到sdram运行的,在此之前sdram肯定已经初始化过了。
对于sdram的初始化应该在第一级boot(bootload)中处理,而uboot已经是第二级boot了

评分

参与人数 1威望 +2 收起 理由
Mr_driver + 2 是的,理论上初始化是在cpu_init_crit调用.

查看全部评分

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

本版积分规则

个人签名:真相只有一个,答案尽在源码、、、

7

主题

63

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部