黑片王——安国 SC708 小试

今天一下午加上一晚上的成果,就是搞废了一片 SM3257AA 、两片 SM3252BA 跟一片 FC8505 附带两片久远的拆机 SLC NAND (我的心在滴血)。除此之外,还终于拿 SC708 做成了一只 U 盘,不过写入坑爹到只有 1MB/s 多一点。

板子是在 mydigit 上大树的淘宝店铺里面买的,其中 SC708 的板子去掉多余部分后是这个样子的:

装上闪存之后就照例开始量产了。第一次全部报坏快,于是又拿细毛牙刷好好地清理了下闪存的引脚,然后终于能通过低格了。

不过在最后一步还是出现了“创建文件系统失败”这样的错误,手动格式化则提示磁盘有写保护。

把做好的 U 盘从虚拟机里拿出来,发现如下内核日志:

dword@dword-as4741g:~$ dmesg|tail
[182362.407057] sd 115:0:0:0: Attached scsi generic sg2 type 0
[182363.407186] ready
[182363.407555] sd 115:0:0:0: [sdc] 2036736 512-byte logical blocks: (1.04 GB/994 MiB)
[182363.408053] sd 115:0:0:0: [sdc] Write Protect is on
[182363.408058] sd 115:0:0:0: [sdc] Mode Sense: 03 00 80 00
[182363.408061] sd 115:0:0:0: [sdc] Assuming drive cache: write through
[182363.410044] sd 115:0:0:0: [sdc] Assuming drive cache: write through
[182363.465080]  sdc: unknown partition table
[182363.466962] sd 115:0:0:0: [sdc] Assuming drive cache: write through
[182363.466967] sd 115:0:0:0: [sdc] Attached SCSI removable disk

Write protect is on ?问题应该就在这了。但是这个板子貌似没有写保护开关啊?

后来突然想到以前研究 AU6987 ( AU6987 / FC8708 / SC708 其实几乎是完全相同的芯片)的时候发现它有个写保护相关的针脚:

这是一个输入脚,说明它是用来控制写保护开关的,并且正常情况下应该接低电平。但是一番测试后发现,这板子上的该针脚是悬空的!

数电老师没告诉你 CMOS 电路不用的输入不能悬空么?

后来从劣质变压器上扯下来一截非常细的漆包线(粗的不好使,想了半天才想到这玩意),把 SC708 的 20 脚跟旁边电容的地连起来了:

这样弄了以后果然就正常了:

dword@dword-as4741g:~$ dmesg|tail
[183279.652451] sd 116:0:0:0: [sdc] 2036736 512-byte logical blocks: (1.04 GB/994 MiB)
[183279.652943] sd 116:0:0:0: [sdc] Write Protect is off
[183279.652947] sd 116:0:0:0: [sdc] Mode Sense: 03 00 00 00
[183279.652951] sd 116:0:0:0: [sdc] Assuming drive cache: write through
[183279.654933] sd 116:0:0:0: [sdc] Assuming drive cache: write through
[183279.709982]  sdc: unknown partition table
[183279.711664] sd 116:0:0:0: [sdc] Write Protect is on
[183279.711668] sd 116:0:0:0: [sdc] Mode Sense: 03 00 80 00
[183279.711671] sd 116:0:0:0: [sdc] Assuming drive cache: write through
[183279.711675] sd 116:0:0:0: [sdc] Attached SCSI removable disk

然后量产也成功了:

但是我实在高兴地早了点。把 U 盘重新分配到宿主机上之后,尝试写文件结果失败了,看了下内核日志:

dword@dword-as4741g:~$ dmesg|tail -20
[184759.523666] sd 125:0:0:0: Attached scsi generic sg2 type 0
[184759.524828] sd 125:0:0:0: [sdc] 2044928 512-byte logical blocks: (1.04 GB/998 MiB)
[184759.525498] sd 125:0:0:0: [sdc] Write Protect is off
[184759.525502] sd 125:0:0:0: [sdc] Mode Sense: 03 00 00 00
[184759.525506] sd 125:0:0:0: [sdc] Assuming drive cache: write through
[184759.528179] sd 125:0:0:0: [sdc] Assuming drive cache: write through
[184759.758485]  sdc:
[184759.759952] sd 125:0:0:0: [sdc] Assuming drive cache: write through
[184759.759956] sd 125:0:0:0: [sdc] Attached SCSI removable disk
[184760.400431] FAT: bogus number of reserved sectors
[184760.400436] VFS: Can't find a valid FAT filesystem on dev sdc.
[184798.663025] sd 125:0:0:0: [sdc] Unhandled sense code
[184798.663029] sd 125:0:0:0: [sdc]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[184798.663038] sd 125:0:0:0: [sdc]  Sense Key : Data Protect [current]
[184798.663043] Info fld=0x0
[184798.663045] sd 125:0:0:0: [sdc]  Add. Sense: Write protected
[184798.663051] sd 125:0:0:0: [sdc] CDB: Write(10): 2a 00 00 00 00 00 00 00 08 00
[184798.663061] end_request: I/O error, dev sdc, sector 0
[184798.663066] Buffer I/O error on device sdc, logical block 0
[184798.663068] lost page write due to I/O error on sdc

在 wiki 上查到了 SCSI 的有关 Sense key :

7h Data Protect Indicates that a command that reads or writes the medium was attempted on a block that is protected from this operation. The read or write operation is not performed.

猜测是量产工具的问题,于是抛弃大树给的量产工具,改用 FC8x08 / SC708 专用的 FC MPTool 。最后终于成功了。

测试 U 盘:

dword@dword-as4741g:~$ dd if=/dev/urandom bs=1024 count=1022230 | tee compare /media/HY27UU088G5/test >/dev/null
记录了1022230+0 的读入
记录了1022230+0 的写出
1046763520字节(1.0 GB)已复制,465.158 秒,2.3 MB/秒

然后拔掉盘子,重新插上:

dword@dword-as4741g:~$ sha256sum compare /media/HY27UU088G5/test
78c10b1eb7e1cd381a88c75f8290513ea16d416f1497b81cddd6f9a9ded26481  compare
78c10b1eb7e1cd381a88c75f8290513ea16d416f1497b81cddd6f9a9ded26481  /media/HY27UU088G5/test

这说明 U 盘没有问题。

哎,折腾了这么长时间终于弄好了,真坑爹。


P.S. 从 SMI 主控板的悲剧中可以得出以下教训:

  • 拆机 Flash 在贴装前一定要清理干净,并且矫正引脚的位置;
  • 短接闪存恢复主控的时候一定要小心,不要碰到中间的电源脚;
  • 上电前注意清除焊好的闪存引脚内测可能存在的锡渣,最好连主控也别放过;
  • 没事别追求完美;
  • SM325x 跟 SM325xEN 是两中完全不同的生物;

而那块奇葩的 FC8508 板子则告诉我们,不是所有板子单贴的时候都是贴主控面的,要注意看丝印。。。


P.S.2 今天真是黑色的一天,早上 4:40 发烧烧醒了,一直烧到现在,喝水喉咙都刺痛;YardVPS 的内部网络从早上一直抽到现在还没解决(这篇文章发得相当艰难),同时伴有某人拿大量数据包灌我的服务器(这样一想是 ARP 冲突吧);最后花了一下午 + 一晚上,毁掉了价值 ¥50+ 的东西……

《黑片王——安国 SC708 小试》有5个想法

  1. 想问下大哥有没有安国FC8708主控芯片引脚资料,我的一个朋友的优盘因热插拔不能用了(插到电脑上没反应,也没有“找到新硬件”提示),我想给他短接恢复,但是没有引脚资料,而且就算有资料也不知道该短接哪两个脚,麻烦大哥将资料和短接脚的针数发我邮箱,感激不尽!

发表评论

电子邮件地址不会被公开。 必填项已用*标注