s5pc100中uboot移植之内存控制器的设置
时间:2017-01-05作者:华清远见
s5pc100是三星公司推出的基于Cortax-A8核心的一款专门针对应用、消费类电子产品而设计的芯片,针对它的介绍网上有很多了,我们就不专门介绍这款芯片了。 今天是针对U-boot的移植。我们先来看看u-boot的特点,u-boot是Boot-loader的一种可以负责板子上电后硬件初始化工作,以及内核引导。它可以为用户提供一个可交互的界面,使开机过程可控,可调,方便开发人员调试。 今天我们移植的版本是u-boot1.3.1这是一个比较成熟的版本,我们先来看看要移植一个u-boot需要注意哪些问题。 首先我们应该先拿到一个u-boot源码,应该是如下图: 《源码》 其中比较重要的、有针对性的目录是board, cpu, include等。我们要修改的大部分内容将集中在这些目录里面。 由于,篇幅有限这次只介绍CPU中针对内存控制器的初始化部分的内容:
ldr r0, =0xE6000000 这部分内容是用汇编语言写的看起来比较清爽,没有太多的复杂的逻辑。 上面的代码是用来判断我们处理器的封装形式的,其中r1中存放着芯片ID寄存器的地址,这是一个32位寄存器,其中记录了芯片的型号如果是s5pc100的话,这个寄存器的前20位应该是“0x43100”。其中,第9位是用来判断芯片的封装形式的,如果为1,表示是POP形式就是。为0,表示是分立元件。我们一般使用分立式元件。
ldr r1, =0x6a101000 这部分是真对,DDR内存而设置的,DLL(delay locked loop)参数。
ldr r1, =0x6a101002
这是开启DLL工作。 检查DLL锁,是否已经锁上。
ldr r1,[r2]
ldr r1, =0x6a101003
ldr r1, =0x6a101009 完成必要的设置,暂停DLL。
ldr r1, =0x20f01313 配置256MB内存AXI设置地址。
ldr r1, =0x20000000 设置自刷新周期
ldr r1, =0x0000050E
ldr r1, =0x07c80232 这个地方是设置内存芯片的交流(AC)参数时序信息包括TimingAref, TimingRow, TimingData 和 TimingPower
ldr r1, =0x07000000
ldr r1, =0x00020000
ldr r1, =0x00030000
ldr r1, =0x00010400
ldr r1, =0x00000532
ldr r1, =0x01000000
ldr r1, =0x05000000
ldr r1, =0x00000432
ldr r1, =0x00010780
ldr r1, =0x00010402 首先是唤醒chip0,然后所有模块预充电(这是为读取操作做准备),对bank2-3发msr/emsr命令(模式设定),设定内存进入自动刷新模式。后是对EMRS寄存器进行设设置。
ldr r1, =0x00ff20b0 打开自动刷新,设定读数据的取周期,设定内存的类型为DDR2和32位位宽。芯片数是2片,BL(burst length)=4。
相关资讯
发表评论
|