我购买了损坏的Zoom H4n录音机,希望可以轻松维修。我得到的只是一点点的烦恼。它没有启动(超过某个点),并且我无法输入固件更新工具。我认为固件更新已中断。



所以我已经将其闪存芯片(EN29LV160B)连接到Arduino,现在我可以读取内容了。我希望实际上在固件文件和内存中看到一些熟悉的功能,以便我可以对齐它们并手动写入丢失的字节。但是,当然不是那么容易。实际上,我什至不知道我是否已经按照正确的顺序进行设置并正在读取所有的lsb ... msb。

我偶尔会使用十六进制编辑器在firmware.bin文件中找到像这样的东西:

...M.I.X.E.R. .E.N.A.B.L.E.....O.F.F. . . . . ...O.N. . . . . . ...O.F.F. .
. . . ...+.4.8.V. . . . ...+.2.4.V. . . . ...O.F.F. . . . . ...C.O.M.P.1. .
. ...C.O.M.P.2. . . ...C.O.M.P.3. . . ...L.I.M.I.T.1. . ...L.I.M.I.T.2. . .
...L.I.M.I.T.3. . ...O.F.F. . . . . . . . . . . . . ...C.O.M.P.1.
(.G.E.N.E.R.A.L.). . ...C.O.M.P.2.(.V.O.C.A.L.)` 


但是,不在我的芯片数据中。

在我的Arduino程序中,我尝试了许多可能的位反转和重排,并且产生了最好的结果(在一些未知的,制表符和换行符中)

void loop() {
  char reading = 0;

  if (address == 2097152)
    while(1)
      delay(1);

   if (address%16==0){
    Serial.println();
    Serial.print(address);
    Serial.print(" ");
   }

  for (uint8_t i = 0; i < 21; i++)
    digitalWrite(adress[i], bitRead(address, i));

  for (uint8_t i = 0; i < 8; i++)
    bitWrite(reading,i,!digitalRead(inputs[7-i]));

  Serial.print(reading);
  Serial.print(" ");

  address++;
}


,但是输出仍然没有人类可识别的内容。

还有什么我可以尝试的吗?