我们上一节已经编译出了uboot,然后会看到生成了一个uboot.lds的文件。看看这个文件
可以看到链接地址是0,从这里更可以知道它只能在nor flash上运行
从哪里开始运行呢,从arch/arm/cpu/armv7下的start.s下面开始运行
我们就需要去分析start.s这个文件
看看他在哪里出错,我们应该修改哪里
一般的uboot做下面几件事
1.初始化硬件:关闭看门狗,设置时钟,设置SDRAM,初始化nand flash
2.如果bootloader比较大,重定位到SDRAM
3.把内核从nand falsh读到sdram
4,设置要传给内核的参数
5.跳转执行内核
先看看start.s这个文件
一上电从0地址开始运行
从reset开始运行
然后reset跳到save_boot_params这里 这里又跳转到save_boot_params_ret这里
屏蔽中断,设置管理模式
绕了一圈之后,我们进入lowlevel_init这个里面
这里我们看看做了什么事情
首先关闭看门狗