主题中讨论的其他器件:AM3352
工具/软件:Linux
大家好、我正在尝试将我的带有 AM3352处理器(Linux RT SDK 4.00.00.4)的定制板放入 uBoot 中、我在使 mDDR 正常工作方面遇到了一些困难。
我的问题是、一旦我跳转到 u-boot (0x80800000)、通常那里只有垃圾(有时在0x8080000没有分支指令、其他时候没有分支指令、但接下来的几条指令没有)、因此由于处理器尝试执行该垃圾指令、我会得到某种例外情况。
我使用 了 AM335x mDDR 时序配置工具和 RatioSeed_AM335x_boards 电子表格(从 这里)来生成我的时序、我在这方面取得了一些进展(最初我没有串行输出)、 但是、当我查看 CCS 中映射到 mDDR (0x8000000至0x8FFFFFFF)的地址处的存储器浏览器时、我可以看到数据来回变化、这让我相信 DDR 配置仍然存在问题。 我已经尝试过计时配置工具生成的优化值和宽松值、但两者都没有解决我的问题。
我的 mDDR 芯片是 MT46H128M16LF。
目前、我的串行输出如下:
CCCCCCCC U-Boot SPL 2017.01-00319-geae4602-n脏(2017年11月09日- 10:59:03) 尝试从 MMC1引导 :MMC 引导模式:fs 读取 uboot.env **无法从 mmc0:1读取"uboot.env"** 使用默认环境 读取 u-boot.img 读取 u-boot.env - 读取 u-boot.u 引导以跳转启动。
我知道该芯片的工作原理是、我可以加载 Windows CE、它运行良好(我在 CCS 中看不到数据变化)、更让我感到困惑的是、当我从 Windows 中获取值并将其复制到 Linux 时、我在 Linux 上不会获得串行输出 (DDR 立即失败)。
这些是我的当前寄存器值(Linux):
#define DDR_EMIF_READ_LAUNT0x4 #define DDR_EMIF_TIM10x04447289 #define DDR_EMIF_TIM20x10160580 #define DDR_EMIF_TIM30x000000E7 #define DDR_EMIF_SDCFG0x20044c23 #define DDR_EMIF_SDREF0x00000618/ define DDR_DRQ_TRF_define #define #define 0x40#define #define DDR_DRQ_TRF_0x40#define #define #define #define 0x40_DRQ_TRF_ADDR_TRF_#define #define 0x40#define #define #define 0x40#define #DDR_ADDR_TRF_ADDR_ADDR_TRF_#define #define #define #define 0x40#define
和 Windows CE 7:
#define CDS_EMIF_READ_LAUNT0x4 #define CDS_EMIF_TIM10x04447289 #define CDS_EMIF_TIM20x101705c0 #define CDS_EMIF_TIM30x000000E7 #define CDS_EMIF_SDCFG0x20004EA3 #define CDS_EMIF_SDREF0x000001840_CFG_CFG_CFG_0x40#define CDS_CFG_CFG_0x40_CFG_CFG_CFG_#define C#define CK_#define CDS_CFG_0x40_CFG_Y_CFG#define CK_#define CDS_CFG_0x40_CFG_0x40#define CK_#define CDS_CFG_CFG_CFG_CFG_0x40_CFG_CFG_
我是否缺少需要设置的某些寄存器?
如果能提供任何援助,将不胜感激。
谢谢、
Kevin