UBOOT//DDR内存原理及时序

本文介绍了UBOOT在2012.10版本中的启动流程,涉及V210启动机制、GPIO输入输出电路分析以及DDR2内存的初始化代码。在启动过程中,CPU先运行IROM,然后加载BL1到内存中,最后运行OS。GPIO讲解了上拉电阻和推挽级输出的工作原理。在DDR2内存部分,解释了其基本原理和读写时序,并分析了内存初始化的四个步骤,包括物理层配置、PHY和DLL初始化、内存控制器设置以及device芯片初始化。此外,讨论了内存地址排列的两种模式:顺序模式和交叉模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里使用的是2012.10版本的uboot ,来看一下如何将uboot 改为自己开发板可以使用的

第四阶段22课开始UBOOT完全理解课程

Uboot的异常向量表,V210的启动机制原理

在这里插入图片描述
上图是启动uboot的一段汇编指令,其中ldr pc,XXX //表示把XX寄存器中的地址值给pc指针
在这里插入图片描述
CPU启动过程,首先运行IROM(里面主要是配置时钟,看门狗等),然后把flash/SD卡中的头4K代码(BL1)放到CPU里运行,然后将flash/SD卡中剩下的内容加载到SDRAM中运行,然后通过调节指针最终运行OS

不同板子启动步骤不一样,有的是将BL1与BL2都放到CPU中运行

pv210中的UBOOT版本会先把一个叫做 uboot_spl 的很小的文件放到片内sram中运行,然后再将后面的uboot放到sdram中

cpsr寄存器设置,
用mrs 取出来 cpsr中的数,然后用bic orr两个指令来清零和置一,然后在把取出来的数放回去

cash 高速缓存,会缓存某些数据,然后在运行代码时会去cash 里面找是否有这个数据,如果没有这个数据再去内存找

GPIO输入输出电路分析

上拉电阻: 一般外面的输入设备都是用一个三极管或者MOS管,用开集或开漏的方式。 发射极接地,基级接通,三极管导通给到引脚低电平。三极管不导通的时候给到的单片机的电平就是上拉电阻上接的电平,这种设计可以将输入电平的大小交给外围设计者去做,上拉电阻可以接1.8 3 或5V 任意的VCC

推挽级输出:使用一对互补的NPN加PNP
在这里插入图片描述
当基极为高电平,上边的管子导通,输出为高电平,基极为低电平,下边的pnp导通,输出为低电平

大小端模式

小端:低位放到低地址
在内存中表示没问题(内存低地址在下高地址在上),但是在硬盘中 表示出来就是 相反的
比如 ea000014 硬盘中是从低位到高位,然后形成一个扇区,因此在硬盘中显示为14 00 00 ea 为什么14反过来不是41呢, 因为一个数字用4位二进制表示,14是一个字节表示,字节是不能反过来的。因为一个地址对应的一个字节。

小端用硬盘里打开就不太符合我们的阅读习惯,因此有了大端模式

大端:高位放到低地址
与小端相反 给、

编译,链接、汇编

预编译:precompile 展开头文件和宏定义
编译:conpile main.c变成main.s
汇编 assembly main.s变成main.o
链接:link 把各个.o 文件拼接起来,把实际的地址值都装进去,变成一个不带后缀的main文件(ELF文件&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值