tiny4412 uboot 2018移植(二)分析uboot代码框架

该博客介绍了Tiny4412平台上UBoot 2018的移植过程,主要分为uboot-spl和uboot两个部分。uboot-spl作为BL2,通过三星工具转化为对应格式,并在0x02023400地址运行。uboot由uboot-spl拷贝到外部RAM的0x43e00000地址。文章简要概述了两个阶段的流程,并引用相关资源深入解析UBoot启动流程。
摘要由CSDN通过智能技术生成

简介

uboot代码分为两部分 uboot-spl和uboot,uboot-spl为上一节所说的BL2。使用三星提供的工具,可以把uboot-spl.bin转化成BL2。
在这里插入图片描述

uboot-spl

通过编译uboot-2018我们可以产生uboot-spl镜像,由于BL1会负责把BL2拷贝到0x02023400处,所以需要定义uboot-spl的链接地址为0x02023400

#define CONFIG_SPL_TEXT_BASE	0x02023400

下面是spl部分的简要流程

1.vectors.S (arch/arm/lib)
.macro  ARM_VECTORS    //macro  用来定义一段宏,可以类比成c语言的内联函数
b    reset
ldr    pc, _undefined_instruction
....
.endm	//结束宏
_start:   //最开始执行的地方
    ARM_VECTORS    //跳到定义处,在定义处可以看出 是b reset
2.start.S (arch/arm/cpu/armv7)
reset:
    b    save_boot_params
	/*
	 * 如果不是处于HYP模式,则失能FIQ和IRQ,设置cpu为SVC32模式
	 * ARM的主要工作模式
	 * 处理器工作模式 说明
	 * 	用户模式(usr) ARM处理器正常的程序执行状态
	 * 	系统模式(sys) 运行具有特权的操作系统任务
	 * 	快中断模式(fiq) 支持高速数据传输或通道处理
	 * 	管理模式(svc) 操作系统保护模式
	 * 	数据访问终止模式(abt) 用于虚拟存储器及存储器保护
	 * 	中断模式(irq) 用于通用的中断处理
	 * 	用户模式和系统模式之外的5种模式称为异常模式
	 */
	mrs	r0, cpsr		// mrs:把程序状态寄寄存器的数据传输到通用寄存器中
	and	r1, r0, #0x1f		@ mask mode bits
	teq	r1, #0x1a		@ test for HYP mode
	bicne	r0, r0, #0x1f		@ clear all mode // bits bic=bic+ne=if teq not equal,excute bic
	orrne	r0, r0, #0x13		@ set SVC mode
	orr	r0, r0, #0xc0		@ disable FIQ and IRQ
	msr	cpsr,r0		// msr:把通用寄存器的数据传输到程序状态寄存器中
	
	bl	cpu_init_cp15  ----->
	----> ENTRY(cpu_init_cp15)
				/*
				 * 失能 L1 I/D
				 * Cache
				 *   1) Cache 是位于 CPU与主存储器DRAM之间一个模块,为了解决cpu和内存之间的速度匹配问题
				 *        Cache又分为I-cache(用来存指令)和D-cache(用来存数据)
				 *        为什么要让Cache失效?
				 *   2)我们在使用cache的时候要经过一系列的配置,在没配置之前是不能使用的。所以我们要关闭cache,但是在关闭
				 *       cache之前cache里面可能已经有数据了,为了不影响我们 的代码,所以要先让其失效,在进行关闭
				 */
				mov	r0, #0			@ set up for MCR
				mcr	p15, 0, r0, c8, c7, 0	&
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值