We are using the mbed in autonomous systems that should run continuously for months / years.
While doing so, we have observed that sometimes (seemingly randomly), the mbed interface chip may become "inaccessible" to the Cortex M3. When this happens, any call to the interface chip (i.e. the default MAC address getter or use of the mbed's local file system) will result in the system stalling.
In this state, the function "mbed_interface_connected" still returns 1, so there seems to be no way to check for the issue prior to a call that will stall the program.
Once in this state, it is possible to get stuck in a loop where the M3's watchdog reboots the M3, only to have it stall again on the interface chip call (after which the watchdog reboots the M3, it stalls again, etc).
Rebooting the mbed interface chip (via the black button or a power cycle) will put the system back into a normal state. This isn't particularly helpful when one does not have physical access to the mbed, however. :)
An extremely simple program to demonstrate this issue is available at:
http://developer.mbed.org/users/uci1/code/an_m0interface_stall_test/
Note: in running this program 3 times, the stalling occurred after 11 seconds, 2 minutes and then 2:40 minutes. So, mileage may vary.
It would be fantastic if someone could explain what might be going on to cause the inaccessibility of the interface chip. Also, if there are any clever ideas for working around this issue other than avoiding all calls to the interface chip, which is an obvious, if inconvenient, work around.
Thanks very much for your help!
We are using the mbed in autonomous systems that should run continuously for months / years.
While doing so, we have observed that sometimes (seemingly randomly), the mbed interface chip may become "inaccessible" to the Cortex M3. When this happens, any call to the interface chip (i.e. the default MAC address getter or use of the mbed's local file system) will result in the system stalling.
In this state, the function "mbed_interface_connected" still returns 1, so there seems to be no way to check for the issue prior to a call that will stall the program.
Once in this state, it is possible to get stuck in a loop where the M3's watchdog reboots the M3, only to have it stall again on the interface chip call (after which the watchdog reboots the M3, it stalls again, etc).
Rebooting the mbed interface chip (via the black button or a power cycle) will put the system back into a normal state. This isn't particularly helpful when one does not have physical access to the mbed, however. :)
An extremely simple program to demonstrate this issue is available at:
http://developer.mbed.org/users/uci1/code/an_m0interface_stall_test/
Note: in running this program 3 times, the stalling occurred after 11 seconds, 2 minutes and then 2:40 minutes. So, mileage may vary.
It would be fantastic if someone could explain what might be going on to cause the inaccessibility of the interface chip. Also, if there are any clever ideas for working around this issue other than avoiding all calls to the interface chip, which is an obvious, if inconvenient, work around.
Thanks very much for your help!