Other Parts Discussed in Thread: OMAP-L138
我们设计并构建了 OMAP-L138嵌入式系统(主要是成功的-除了8位 NAND 之外的一切都正常工作)、其处理器内核(CPU、RAM、闪存和电源管理 器)是 LCDEVKIT-AE7评估板的确切硬件副本。 该板使用 Micron 16位512MB NAND 闪存 MT29F4G16ABADAH4 作为大容量存储器件、运行良好。
编译、编译和运行我们的 Linux 系统和应用软件、从闪存加载并通过 u-boot 复制到 RAM、当使用 TI OMAP-L138_FlashAndBootUtils_2_40 软件包准备和刷写映像时、效果非常好。 我们成功地从源编译和构建该软件包、以便将一些调试输出添加到在 ARM 上运行的 SFT 部分。
由于当前市场上缺少3.3V/16/位 闪存芯片、我们决定改用其1.8V/8位同级 制造商的 MT29F4G08ABBDAH4-ITX。
我们将闪存的电源和 OMAP 所有电源组 B GPIO 的接口更改为1.8V、并且电路板在所有功能中都能很好地工作、从 RAM 执行其程序。 唯一不起作用的是对新的8位闪存的任何访问。
通过调试上面提到的 AIS 工具包的 SFH / STF 部分、我们能够稍微隔离问题、如下所示:
物理闪存芯 片的第一次读取访问(成功通过 FTP 将 BOOTUBL 器件和我们的闪存映像文件下载到 RAM 后)正在读取芯片偏移量为0x00和0x20的两个4字节字符串、从而产生 ONFI 签名和制造商器件 ID 字符串。 这两个字符串几乎完全符合我们的期望(从微米数据表)、 但在每个字符串中、第一个字节缺失、因此预期的第二个字节位于第一个位置(数组索引0)、第三个字节位于数组索引1中、第四个字节位于数组索引2中。 数组索引3是第四个字节、包含一个额外的值、数据表中未对此进行说明。 这对于在这两个首次访问中读出的两个字符串都是如此。
移动这两个数组中的字节可满足程序预期、以便随后的闪存开始、但所有块的验证步骤自然会失败。 看起来、任何多字节读取访问中的每个第一个字节都丢失了、并且所有后续字节都在时间上移动了一个位置。
是否有人读过这种错误、是否曾观察到这种故障并能为我们提供任何提示、哪个设置参数、EMIFA 单元、时钟或任何其他参数可能是错误的? 有趣的是、16位版本的闪存可与 TI SDK 中的原始 AIS 二进制工具和驱动程序以及2.40版本无缝配合使用、可从源代码下载、编译和构建。 板、闪存芯片(很可能)的软件设置肯定有问题、但我们不知道是什么。
提前感谢您提供任何提示
霍斯特