1

Sorry for the long intro, but it helps explaining the context of the question.

I've been trying to understand more about how the smart watch works to write a custom firmware for it by reading the arduino-like code that was posted on github. I noticed that all the examples have in the loop() function the following code:

if(digitalRead(BUTTON)) standardShutdown();

This line appears to be monitoring the power button, and in case it's pressed, shut down the watch. This raises a concern, though. The boot chain as I've understood so far is this: when the watch is turned on, it starts executing the bootloader code at the address 0x08000000. If the USB is connected and the user pushes the button within one second, it enters dfu mode and allows to download a new firmware. Otherwise, the user code, which sits at 0x08040000 is run.

Now, what happens if due to a programmer mistake, the code enters an infinite loop, and never checks the power button nor shutdown? Is there a way to force-reset the watch (such as holding the power button for five seconds, connecting the usb cable with the button pressed or some combination like that) to run the bootloader again, and download a new firmware? If there isn't, will a mistake that causes an infinite loop brick the watch permanently?

Normally I would just try and see what happens, but I don't want to brick my watch, that's why I'm asking here.

4

1 回答 1

4

如果您拔下 USB 电源并按住按钮 10 秒钟,它将关机(使用 USB 电源无法关机)。神奇的恢复顺序是关闭手表电源并连接到其 USB 电缆,但不要将 USB 电缆插入 PC。现在,按下手表的电源按钮,然后将 USB 连接器插入您的 PC,然后松开电源按钮。你必须在一秒钟内完成这个序列!这将使手表进入 DFU 模式(其显示屏将在屏幕底部有一个绿色条),您现在可以重新刷新它。

索尼的说明在这里:

http://developer.sonymobile.com/services/open-smartwatch-project/how-to-flash-alternative-firmware-to-smartwatch/

或许这款手表并非牢不可破,但索尼似乎在设置方面做得不错,因此您通常可以恢复。

于 2013-08-12T00:08:58.090 回答