S5PV210 u-boot中启动过程解析

一,启动过程简介

代码位置:uboot中的start.s

Tips:这些代码并不是连续的,是将相关代码进行截取

  1. 读取0xE000_0004(PRO_ID_BASE+OMR_OFFSET)来判断启动方式的代码,将0xE000_0004的bit1-bit5取出存放到r2中
		ldr	r0, =PRO_ID_BASE
        ldr	r1, [r0,#OMR_OFFSET]
        bic	r2, r1, #0xffffffc1
  1. 将r2与预定义值进行比较,判断启动方式,将相应的启动方式存储在r3中
		/* NAND BOOT */
	cmp	r2, #0x0		@ 512B 4-cycle
	moveq	r3, #BOOT_NAND

	cmp	r2, #0x2		@ 2KB 5-cycle
	moveq	r3, #BOOT_NAND

	cmp	r2, #0x4		@ 4KB 5-cycle	8-bit ECC
	moveq	r3, #BOOT_NAND

	cmp	r2, #0x6		@ 4KB 5-cycle	16-bit ECC
	moveq	r3, #BOOT_NAND

	cmp	r2, #0x8		@ OneNAND Mux
	moveq	r3, #BOOT_ONENAND

	/* SD/MMC BOOT */
	cmp     r2, #0xc
	moveq   r3, #BOOT_MMCSD	

	/* NOR BOOT */
	cmp     r2, #0x14
	moveq   r3, #BOOT_NOR	
  1. 然后将得到的结果存放到INF_REG3中(0xE010F000+0x0c)
	ldr	r0, =INF_REG_BASE
	str	r3, [r0, #INF_REG3_OFFSET] 
  1. 最后根据INF_REG3的值进行判断,选择相应的启动代码
	ldr	r0, =INF_REG_BASE
	ldr	r1, [r0, #INF_REG3_OFFSET]
	cmp	r1, #BOOT_NAND		/* 0x0 => boot device is nand */
	beq	nand_boot
	cmp	r1, #BOOT_ONENAND	/* 0x1 => boot device is onenand */
	beq	onenand_boot
	cmp     r1, #BOOT_MMCSD
	beq     mmcsd_boot
	cmp     r1, #BOOT_NOR
	beq     nor_boot
	cmp     r1, #BOOT_SEC_DEV
	beq     mmcsd_boot

二,测试过程

  1. 读取0xE000_0004地址值
  2. 使用不同启动方式进行启动
  3. 开发板:Study210

三,测试结果

  1. USB直接启动时,读取到的结果是0x2d(bit0~bit5:101101),对照下表可知启动方式为Firstboot(Uart->Usb),Nand4Kb,5cycle,X-TAL,即首先从USB启动,启动失败,从Nand4Kb,5cycle启动

在这里插入图片描述
2. SD卡直接启动时,读取到的结果是0x0d(bit0~bit5:001101),对照下表可知启动方式为SD/MMC,即SD/MMC启动,bit1-bit5为0xc,与u-boot中的SD/MMC BOOT对应

	/* SD/MMC BOOT */
	cmp     r2, #0xc
	moveq   r3, #BOOT_MMCSD	

在这里插入图片描述
3. 设置为SD卡启动,但不放置SD卡,3秒钟后,DNW软件显示USB连接OK,使用DNW下载程序启动,读取到的结果是0x0d(bit0~bit5:001101),与上图相同,结合下图,SD启动失败后会从UART->USB启动 在这里插入图片描述

四,总结

  1. 0xE0000_004的bit0-bit5与OMPIN bit0-bit5一 一对应
  2. 验证S5PV210_iROM_ApplicationNote启动顺序
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值