由于距离等等一大堆方面的原因,是否参加阿南的训练班着实犹豫了一阵子,如今得以如愿,自然分外珍惜,写个总结,认真的缕一下头绪,有不对的地方也希望阿南以及其他前辈们指正一下....
个人一向喜欢从零开始学习或者思考一个问题,想当初买回开发板做的第一件事就是把Flash擦个干净,上了课之后,觉得这个“零”还得再往前追溯一点:一块2410,一块NandFlash-k9f1208,两块SDRAM-k4s561632,现在要搭建一个最小系统:
第一课,主要讲的就是分析硬件原理图。
一、如何看Datasheet? 首先要面对的自然是芯片的DataSheet,对于一个完全不了解的芯片,主要先看以下几个方面:
1).preview简介。大概的了解一下这款处理器有什么功能,包含了什么模块等等。
2).memory内存映射图。对于写程序的人来说,这个东西是相当重要的。
3).管脚的分布及其功能。阿南特别强调了某些管脚不可以随便悬空,如nWait用于延长总线周期,如果没有使用必须将其上拉才能释放总线。
4).其他的部分可以在今后的开发中用到了再有针对性地看。
二、最小系统基本构成 跟一个单片机系统差不多,只不过是单片机把存储器集成到芯片里面了,但是这里什么都得自己来。 1).MPU 2).Flash(NOR/NAND) 3).RAM(SDARM/DDR/DR2) 4).Power and Clock(PLL) 5).Reset circuit
三、SDARM接口设计 查看DataSheet,主要有以下几种管脚: 1).数据线DQ0~DQ15 这个与2410的数据总线对应连接就可以了。
2).行/列地址线A0~A12 由于2410是按照字节寻址,但SDRAM是16Bit半字宽度,所以连接时需要错开一位,将A0连到处理器的A1,而这个系统是通过两块k4s561632串联实现32Bit数据宽度,所以需要进行字对齐连接,将A0接到A2地址总线上,其他顺次接。
3).Bank地址线BA0~BA1 在2410的手册里面,有个SDRAM BANK ADDRESS PIN CONNECTION表,里面规定了不同组织结构的SDARM的Bank地址线。所以首先要明白存储器的组织结构,看K4S56163的芯片手册,标注:4M*16Bit*4Banks。 这表示每个Bank有4M大小,即由行列地址确定的存储单元个数为4M个,16Bit是位宽,即每个存储单元存储的数据大小为16bit半字,一共包含有4个Bank,所以这个SDRAM的总容量为32MB(256Mbit)。根据这个就可以确定Bank地址线为A[24:23]。 再说一下SDRAM的访问过程,大概是这样的:首先送出Bank地址,然后再依次送出行列地址确定需要访问的存储单元,最后进行数据交换。
4).控制引脚 由于2410集成了SDRAM的管理器,所以接到相应的管脚就是了,主要是行选通RAS,列选通CASE,写使能WE,LDQM和UDQM数据I/O屏蔽用于在读模式下控制输出缓冲,在写模式下屏蔽输入数据,CS片选接在nGS6,即是把SDARM挂接在Bank6上,另外还有时钟控制线,电源等。
四、NandFlash接口设计 NandFlash与NorFlash不同,它是非线性的存储器,所以它应该不是映射到2410的内存空间上的。2410有专门的NandFlash接口管脚,相对比较容易一点,八位数据线直接与处理器的数据总线相连,ALE地址允许,CLE命令允许,CS片选使能,读/写使能,R/B等几根线都有对应的管脚相连。由于NandFlash共用八位数据线传输地址和数据,所以2410上有个NCON引脚用于选择地址的周期,一般情况下3个周期就可以完成24位的寻址范围。 关于NandFlash的启动,如果将芯片设置成NandFlash启动,会有4K大小的SRAM映射在0x0地址处,上电后硬件自动将前4K大小的代码搬到这里,首先从SRAM中运行程序,在这4K代码里需要完成将其他代码拷贝到SDRAM中,最后令程序在SDRAM中运行。
五、电源、时钟和复位电路 提到一个,设计电源的时候先让外围电路通电,最后才让处理器上电,大概与正确的开电脑顺序是相同的,主要考虑的是万一处理器已复位完成开始运行时,但要访问的外围器件还未准备就绪,就有可能会发生意外。
大概先这么多吧,其他的想到再来补充...... |