【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        早期ddr的使用是非常麻烦的一件事情。而目前来说,这种情况正在改变,一方面soc厂家会推荐一些常用的ddr芯片给客户,这样客户自己就可以灵活进行选择和使用,毕竟是厂家验证过的。另外一方面,还有一些soc会自带ddr,小的有32MB,大的有64MB,甚至是128MB,一般情况下也是够用的。这里的B是byte,不是bit。

1、ddr什么时候初始化

        一般ddr都是在uboot里面初始化的。soc上电后,通常soc会从flash加载一段uboot到内部ram中,这个ram位于soc里面,和ddr没有关系。接着第一阶段的uboot会负责一些基本配置,ddr初始化就是其中一部分。等到ddr初始化好了,uboot就会把自己搬到ddr当中,并且把剩下来的uboot继续搬过去,跳转到ddr继续运行。这样完整的uboot就在ddr里面运行起来了。

        注意,soc从flash里面加载part uboot,这部分是soc自身完成的,作为用户来说一般不需要关心。

2、ddr的驱动做什么

        在soc内部通常都有一个ddr controller,它负责和外部的ddr进行通信。由于ddr需要定时进行刷新,所以ip也需要定时给外部ddr进行刷新的操作,而不仅仅是进行数据的读取和写入。驱动呢,就是告诉ddr controller,什么时候刷新、什么时候读取数据、什么时候写入数据、以及怎么完成这些操作。

3、ddr外部信号有哪些

        目前ddr有ddr1、ddr2,一直到ddr4、ddr5。大家可能还会看到很多ddr前面有一个前缀lp,这是low power的意思,也就是低功耗。通常不管是哪一代ddr,都会有地址总线、数据总线、控制总线这三部分。如果不是专门做ddr驱动的开发,了解到这里就可以了。

4、内置ddr的soc

        现在为了方便电路layout,很多低端soc都集成了ddr。不过都是比较老的ddr,大部分是ddr1、ddr2,较少soc用ddr3。ddr和soc集成在一起,这样就不需要对控制总线、地址总线和数据总线进行layout处理了,给一个vcc/gnd就好了。当然,ddr的电压一般都不高,1.8v居多。soc和mcu不同,对电压的需求差异大,通常都要5v转成3.3v、2.5v、1.8v、1.2v这样的。

5、外置ddr的处理

        外置ddr从原理图上看,其实也不复杂。从数量上,可能有1、2、4、8等多个ddr;从连接方式来看,可能是用高位地址进行区分,也可能是利用data进行区分。下面,我们一一举例说明。如果只有一块ddr,通常是这么布局的,

        此时,如果一块ddr芯片不够,那么就可以用两块ddr。这个时候呢,有两种做法。一种做法是区分数据位,例如bit 0~15是第一块,bit 16~31是第二块。每次读写的时候,两块芯片都选中。这是最常见的两块ddr的使用方法。

        还有一种是通过低地址位信号,分别送给ddr0 cs、ddr1 cs的方法来处理。这样处于低地址的时候,ddr0选中;反之,则ddr1选中。同样也能达到驱动两块ddr的目的。这种情况下,效率上有一点折扣,因为某一时刻只会有一个ddr被选中。

        说完了两块ddr的情况,可以进一步推导下。如果是4块ddr,可以选用8位位宽的ddr,依次是bit 0~7、bit 8~15、bit 16~23、bit 24~31。此时借助于cs的话,可以实现8块ddr的访问。超过8块ddr的场景,目前我也没遇到过 :-<。

6、ddr的使用建议

        对于嵌入式工程师,特别是嵌入式软件工程师来说,如果自己也具备一定的硬件开发能力,可以优先使用内嵌ddr的soc。当然ddr的大小不够的话,可以使用外挂ddr的形式。至于cs区分,还是data区分,这都不重要,只要能够正常使用就行。

        一般的做法就是,自己把原理图做好,然后请外面的人进行layout。有的时候为了走线,同组dq线也是可以发生变化的,这个时候需要回过头来,改一下原理图。等到打板、贴片之后,自己再进行测试。这样来来回回可能需要一些时间。所以在此之前,最好有一块已经ok的公板,这样至少保证硬件是ok的,保证软件是没问题的。不然如果硬件也有问题,软件也有问题,会比较浪费时间。

        做原理图的时候,和sensor一样,优先选用soc厂家推荐的ddr,这样就不用自己去驱动、去设置寄存器了,会节省不少时间的。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐