其他初始化(时钟、内存)

来源:互联网 发布:金江软件工作室 编辑:程序博客网 时间:2024/06/03 23:45

一、时钟初始化

1.概念解析:
(1)时钟脉冲信号:由特定的电压幅度以及特定的时间间隔产生的脉冲信号
(2)时钟脉冲频率:单位时间内产生的脉冲个数
(3)信号产生:
A.晶体振荡器:石英晶体经过打磨,加电极,通电,会产生稳定的时钟脉冲。但是如果需要高频率的信号,虽然结构简单,噪声低,但是成本倍增,交货周期长,而且难 以获得非标准频率。
B.PLL电路:也需要外部晶振,可改变外部晶体频率。但是占板面积小,可以产生不同频率的时钟信号,可以得到高频信号,成本低

2.源代码

二、内存初始化

  1:地址空间:
(1)地址线:2440对外提供27条地址线,只能访问128MB的外设空间。
(2)片选信号:8个片选信号,扩大可访问的外设空间到1GB。
(3)外设空间:有2440的datasheet知道他将1GB分成8部分,即8块,通过不同的片选信号来访问不同的块空间。其中内存从band6开始(0x30000000),有可能占用band7。
(4)存储器控制器:所谓对内存初始化,实质上是对CPU的存储器控制器进行初始化,由他对给出的地址进行分析转换得到片选信号和行列地址。而CPU和内部寄存器之间的访问则是通过CPU内部的32位总线进行的。
2:内存芯片连接
由于每个单元格的容量是16bit,即内存芯片的数据宽度是16bit,而CPU的数据宽度是32bit,为了避免浪费,就用两块内存芯片并联,使得每一次cpu对内存访问的时候可以一次性取出32bit的数据。分为高16bit和低16bit。
当然不可避免的要涉及到片选信号,L_BANK选择信号,行列地址信号。
3存储器控制器寄存器
设置13个寄存器,要查阅2440的datasheet以及内存的datasheet,然后看时序图,找出寄存器的某些位控制的参数所需要设置的值。最后要学会在汇编里用循环的方式来给寄存器赋值。
5.  理论上2440可以寻址4GB,总体上分为内部空间和外设空间。外设空间又分为8个bank,每个bank为128MB
、代码搬移

1、垫脚石空间不够存放完整的uboot,所以要利用前面能够存放在垫脚石里的代码将剩余uboot复制到内存;

2、起始地址:(在本课由于未初始化NAND,所以起始地址在垫脚石)垫脚石的起始地址。终点:链接器脚本里指定的起始链接地址

3、搬移方式,地址每次自动增加4个字节,利用一个中转寄存器。

4、源代码


0 0
原创粉丝点击