引用: jvwueurw 发表于 2018-6-21 02:06
1. 检查下内存,看是否正确配置,具体可以查看 http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
2. 关于eeprom部分的代码也要去掉,这个也检查下
如果我的回答解决了您的问题,请确认答案,谢谢!:)
感谢二位的及时回应。我还有一些疑问,首先,现在的问题好像和DDR2的配置没有什么关系,因为从函数s_init()可以看出,是先初始化串口,后初始化DDR2的,在初始化串口之后立刻就打印了SPL版本号等信息。因此即使DDR2初始化不正确,也是后来的事,至少前面的打印不应该受影响。现在的问题是连任何打印都没有,GPIO点灯也不行,像是SPL根本没运行。不过既然你提到需要修改DDR2的配置,那我也试一下好了,等试完了再来反馈。
二、我们调试用的am3354芯片是从电子市场买的,对方说芯片是来自正规渠道的,但是芯片上的丝印有点奇怪,丝印第一行写着XAM3359ZCZ,但是用一横线划掉了,第二行才是AM3354ZCZD72。这个芯片不会有问题吧?
三、向你们反馈一个软件BUG,版本:u-boot-2012.10-psp05.06.00.00
在修改DDR2配置的时候,我发现有一个函数
void config_io_ctrl(unsigned long val)
[
writel(val, &ioctrl_reg->cm0ioctl);
writel(val, &ioctrl_reg->cm1ioctl);
writel(val, &ioctrl_reg->cm2ioctl);
writel(val, &ioctrl_reg->dt0ioctl);
writel(val, &ioctrl_reg->dt1ioctl);
]
这个函数中,全局指针ioctrl_reg被赋予地址0x44E11404,这个指针的类型是如下结构体
struct ddr_cmdtctrl [
unsigned int resv1[1];
unsigned int cm0ioctl;
unsigned int cm1ioctl;
unsigned int cm2ioctl;
unsigned int resv2[12];
unsigned int dt0ioctl;
unsigned int dt1ioctl;
];
由于结构体中一开头就保留了一个整型字段,因此上面函数中第一行的
writel(val, &ioctrl_reg->cm0ioctl);
所写入的寄存器地址是0x44E11408,但查看手册发现,这个寄存器的地址是0x44E11404(文档编号spruh73g,第758页),也就是说这5个寄存器的地址都向后错位了4字节。
引用: jvwueurw 发表于 2018-6-21 02:06
1. 检查下内存,看是否正确配置,具体可以查看 http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
2. 关于eeprom部分的代码也要去掉,这个也检查下
如果我的回答解决了您的问题,请确认答案,谢谢!:)
感谢二位的及时回应。我还有一些疑问,首先,现在的问题好像和DDR2的配置没有什么关系,因为从函数s_init()可以看出,是先初始化串口,后初始化DDR2的,在初始化串口之后立刻就打印了SPL版本号等信息。因此即使DDR2初始化不正确,也是后来的事,至少前面的打印不应该受影响。现在的问题是连任何打印都没有,GPIO点灯也不行,像是SPL根本没运行。不过既然你提到需要修改DDR2的配置,那我也试一下好了,等试完了再来反馈。
二、我们调试用的am3354芯片是从电子市场买的,对方说芯片是来自正规渠道的,但是芯片上的丝印有点奇怪,丝印第一行写着XAM3359ZCZ,但是用一横线划掉了,第二行才是AM3354ZCZD72。这个芯片不会有问题吧?
三、向你们反馈一个软件BUG,版本:u-boot-2012.10-psp05.06.00.00
在修改DDR2配置的时候,我发现有一个函数
void config_io_ctrl(unsigned long val)
[
writel(val, &ioctrl_reg->cm0ioctl);
writel(val, &ioctrl_reg->cm1ioctl);
writel(val, &ioctrl_reg->cm2ioctl);
writel(val, &ioctrl_reg->dt0ioctl);
writel(val, &ioctrl_reg->dt1ioctl);
]
这个函数中,全局指针ioctrl_reg被赋予地址0x44E11404,这个指针的类型是如下结构体
struct ddr_cmdtctrl [
unsigned int resv1[1];
unsigned int cm0ioctl;
unsigned int cm1ioctl;
unsigned int cm2ioctl;
unsigned int resv2[12];
unsigned int dt0ioctl;
unsigned int dt1ioctl;
];
由于结构体中一开头就保留了一个整型字段,因此上面函数中第一行的
writel(val, &ioctrl_reg->cm0ioctl);
所写入的寄存器地址是0x44E11408,但查看手册发现,这个寄存器的地址是0x44E11404(文档编号spruh73g,第758页),也就是说这5个寄存器的地址都向后错位了4字节。
举报