打印

菜鸟疑惑之u-boot

[复制链接]
1360|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mr_driver|  楼主 | 2013-3-5 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
        bl        cpu_init_cp15
        bl        cpu_init_crit
#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的时候就做,不需要就不做。

使用特权

评论回复
评论
Mr_driver 2013-3-5 17:03 回复TA
好吧~~~再解释一次,在把nand里面的程序拷贝到ram之前是应该先初始化内存控制器的,可是在这里却把初始化的代码屏蔽掉了,为什么这样做可行 
5
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

粉丝