MIPS UBOOT

启动过程:

1、msc_spl\board\Pisces\start.S                                                 _start

工作过程

a、Check reset status   (第二阶段 忽略)

la t0, CPM_RSR
lw t1, 0(t0)
andi t1, 0x4
bnez t1, resume_from_sleep
nop

b、Clear watch registers (第二阶段 忽略)

mtc0 zero, CP0_WATCHLO
mtc0 zero, CP0_WATCHHI
c、设置CP0_STATUS (第二阶段 忽略)

li t0,0x0040FC04
mtc0 t0,CP0_STATUS

d、设置CP0_CAUSE (第二阶段 忽略)

li t1, 0x00800000
mtc0 t1, CP0_CAUSE

e、设置CP0_CONFIG

li t0, CONF_CM_UNCACHED
mtc0 t0, CP0_CONFIG

f、 Initialize GOT pointer

bal 1f
nop
.word _GLOBAL_OFFSET_TABLE_
1:
move gp, ra
lw t1, 0(ra)
move gp, t1

g、设置栈指针sp,跳转至spl_boot (第二阶段 忽略)

la sp, 0x80004000
la t9, spl_boot
j t9
nop


 注意:第二阶段在此调用如下代码:

li t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSET
la sp, 0(t0)
la t9, board_init_f
j t9
nop

2、msc_spl\board\Pisces\Msc_boot_jz4770.c   spl_boot

     初始化硬件:     

__cpm_start_dmac();
__cpm_start_ddr();
...
uart_init();
serial_init();
...
pll_init();
sdram_init();
mmc_load();//将mmc中偏移地址32加载到0x80100000,大小为512k
flush_cache_all();
//执行0x80100000处的代码,此时将重新返回start.S执行

3、msc_spl\board\Pisces\start.S                                                 _start

3、Lib_mips\Board.c                                               board_init_f 

   a、初始化硬件包括:

jz_board_init  初始化 gpio clocks dram etc
 timer_init  定时器
 env_init   环境变量
 init_baudrate   波特率
 serial_init   串口
 console_init_f
 display_banner  打印uboot版本
 checkboard  打印设备名词
  init_func_ram  调用jz4770_ddr.c中的initdram(0)函数 得到SDRAM大小为128M 存储在gd->ram_size中

    b、初始化LCD,将framebuffer指针存储在gd->fb_base中

    c、预留出UBoot文件使用的空间 uboot_end-TEXT_BASE

    d、预留出malloc的堆空间 896k

    e、预留出board info空间  存储在gd->bd中

    f、预留出global data空间

    g、预留出启动参数空间,存储在bd->bi_boot_params中

    h、最后:     

bd->bi_memstart=0x80000000
bd->bi_memsize=gd->ram_size(128M)
bd->bi_baudrate=gd->baudrate
调用relocate_code(栈指针,global_data,UBOOT的SDRAM预留地址)

     

4、cpu\mips\start.S                                                  relocate_code

5、Lib_mips\Board.c                                               board_init_r

6、Common\Main.c                                                 main_loop

7、Common\Main.c                                                 run_command

8、Common\Cmd_msc.c                                        do_msc

9、Common\Cmd_bootm.c                                     do_bootm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值