TI中文支持网
TI专业的中文技术问题搜集分享网站

am335x w25Q256

— linux-3.2.7.3/drivers/mtd/devices/m25p80.c 2013-12-19 13:52:01.102095098 +0800
+++ linux-3.2.7.ny3/drivers/mtd/devices/m25p80.c 2014-08-19 17:24:06.174005713 +0800
@@ -168,6 +168,7 @@
 {
  switch (JEDEC_MFR(jedec_id)) {
  case CFI_MFR_MACRONIX:
+// case 0xEF: /* winbond */
   flash->command[0] = enable ? OPCODE_EN4B : OPCODE_EX4B;
   return spi_write(flash->spi, flash->command, 1);
  default:
@@ -761,6 +762,7 @@
  { "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
  { "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
  { "w25q128",INFO(0xef4018, 0, 64 * 1024, 256, 0) },
+ { "w25q256",INFO(0xef4019, 0, 64 * 1024, 512, 0) },
 
  /* Catalyst / On Semiconductor — non-JEDEC */
  { "cat25c11", CAT25_INFO(  16, 8, 16, 1) },

上面是winbond w25Q256的驱动,我发现了一个问题,就是上电启动的时候正常,重启或者按复位键就死掉了,后来发现是第一行patch引起的。CPU ROMCODE只支持3byte读的方式用逻辑分析仪得到的是 00 00 40,由于第一行patch的原因内核设置为4byte读 00 00 00 40。所以重启就死掉了。现在确定一点

1.ROMCODE只支持3byte的读不支持4byte的读

2.内核初始化的时候因为访问容量的问题必须设置为4byte的读。3byte 24位支持16M空间。而我们用的是256Mbit的是32M所以只能访问一半的空间

3.reboot和按重启键是由区别的经过验证.reboot执行/etc/inittabe shutdown脚本内容。但是重启键不支持。所以无法在启动后改为3byte读的方式

所以这个问题又陷入到一个圈子里面了,如果CPU不改ROMCODE支持256Mbit读的话那么这颗芯片就无法在am335x平台上使用。

Jian Zhou:

你们既要支持reboot重启也要支持按键重启吗?其实我觉得按键重启把reset同时连到SPI FLASH的VCC,让CPUwarm reset的时候,SPI FLASH也跟着reset就可以了

Jian Zhou:

回复 Jian Zhou:

更新一下这个帖子:

1.如果是硬件reset,可以将系统reset按键直接连到w25Q256的/reset引脚上。

2.如果是Linux软件reboot,可以参考下面的方法增加shutdown:  http://blog.csdn.net/manfeel/article/details/43530817

赞(0)
未经允许不得转载:TI中文支持网 » am335x w25Q256
分享到: 更多 (0)