uboot下的DRAM的初始化

          在G870中,C版的SDRAM为128MB(DDR2),E版的SDRAM为64MB(MDDR),它们在系统存储空间的基地址都为0x8000_0000,具体见iMAX25RM的数据手册:

            在uboot中,我们必须设置好这些参数,主要是基地址和SDRAM的大小等。这里主要采用到了uboot的一个全局的结构体变量: bd_t : board info数据结构定义,位于文件 include/asm-arm/u-boot.h。主要是用来保存板子参数。

typedef struct bd_info {
int                                    bi_baudrate;        /* serial console baudrate    串口波特率 */
unsigned long                     bi_ip_addr;         /* IPAddress    IP 地址 */
unsignedchar                     bi_enetaddr[6];     /*Ethernet adress    MAC地址*/
structenvironment_s       *bi_env;                //结构体变量定义见46行
ulong                                 bi_arch_number;   /* uniqueid for this board    板子的id*/
ulong                                 bi_boot_params;   /*where this board expects params 启动参数*/
struct     /* RAM configuration    RAM 配置*/
{
ulong start;
ulong size;
}    bi_dram[CONFIG_NR_DRAM_BANKS];

}bd_t;

       其中红色部分为关于RAM的配置,初始化为:

int dram_init(void)
{
#ifdef CONFIG_MX25_MDDR
    gd->bd->bi_dram[0].start = PHYS_SDRAM_1;  // PHYS_SDRAM_10x8000_0000
    gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
#else
    gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
    gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;

if(CONFIG_NR_DRAM_BANKS == 2)  // 其中CONFIG_NR_DRAM_BANKS = 1  ,因为只有一个BANKS
{
    gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
    gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
}
#endif
    return 0;
}

           这样,就设置好了RAM的参数。接下来就是设置SDRAM的控制寄存器了,这里不再介绍。




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值