This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Redundancy in microcontroller

Hi,.....

i am developing a product. The same requires Hot redundancy of the two microcontrollers. The input & Outputs will be comman for both controllers. HMI & keyboard will be comman for the both. The failure of one controller shall be taken care by another. Is it possible to do the same. If any other option is available please suggest.

Parents
  • Why two controllers? Why not three? After all, an odd number of controllers allows you to design hardware to handle majority votes. So with one microcontroller failure, two-out-of-three votes would still keep the system running.

    Of course, failures are often more sw-related than hw-related, in which case multiple processors are likely to perform the same error.

    Note that common outputs are problematic - you can't just connect two outputs together arbitrarily. You can with open-collector outputs but then one chip holding the signal low will make the signal low whatever the other processor wants. So even if you have just two processors, you need glue logic between the processors and the output from your electronics - glue that decides somehow if processor A or processor B should be the owner of the output signal. Possibly by having the glue logic behave like a watchdog monitor, checking if the two processors sends kick signals. If only one processor kicks, then that processors gets ownership of outputs. If both processors kicks, then other logic decides which one gets the priority.

    But exactly what problem do you want to solve? Note that processors seldom fail. So your special logic may be the weak link, actually resulting in a combined circuit with less reliability than a single processor.

    Another thing here is that having logic that switches with of two processors that owns an output is way easier when talking about a digital output - like driving a LED or a relay. But if that output is a serial link like USB, then you get into much bigger problems. If processor A is correctly registered and performing communication - how will you then manage to get processor B to be connected instead and in correct state to be able to continue? This in relation to the alternative - that the PC sees the keyboard being disconnected and one second later it sees it connected again (next processor getting connected to the USB link).

    But even then, you would have issues in case we talk about a smart USB device where the device would have had a reason to store lots of local configuration or state information based on what communication that has happened earlier. Think about two identical gaming USB mouse that supports a local profile to set resolution and if some of the mouse buttons should have macro functionality and possibly instead generate keyboard key presses - the PC program that sends the profile would not know there are two mouse controllers that needs the same state information.

    Anyway - your original post contains much too little information for anyone to really be able to help you.

Reply
  • Why two controllers? Why not three? After all, an odd number of controllers allows you to design hardware to handle majority votes. So with one microcontroller failure, two-out-of-three votes would still keep the system running.

    Of course, failures are often more sw-related than hw-related, in which case multiple processors are likely to perform the same error.

    Note that common outputs are problematic - you can't just connect two outputs together arbitrarily. You can with open-collector outputs but then one chip holding the signal low will make the signal low whatever the other processor wants. So even if you have just two processors, you need glue logic between the processors and the output from your electronics - glue that decides somehow if processor A or processor B should be the owner of the output signal. Possibly by having the glue logic behave like a watchdog monitor, checking if the two processors sends kick signals. If only one processor kicks, then that processors gets ownership of outputs. If both processors kicks, then other logic decides which one gets the priority.

    But exactly what problem do you want to solve? Note that processors seldom fail. So your special logic may be the weak link, actually resulting in a combined circuit with less reliability than a single processor.

    Another thing here is that having logic that switches with of two processors that owns an output is way easier when talking about a digital output - like driving a LED or a relay. But if that output is a serial link like USB, then you get into much bigger problems. If processor A is correctly registered and performing communication - how will you then manage to get processor B to be connected instead and in correct state to be able to continue? This in relation to the alternative - that the PC sees the keyboard being disconnected and one second later it sees it connected again (next processor getting connected to the USB link).

    But even then, you would have issues in case we talk about a smart USB device where the device would have had a reason to store lots of local configuration or state information based on what communication that has happened earlier. Think about two identical gaming USB mouse that supports a local profile to set resolution and if some of the mouse buttons should have macro functionality and possibly instead generate keyboard key presses - the PC program that sends the profile would not know there are two mouse controllers that needs the same state information.

    Anyway - your original post contains much too little information for anyone to really be able to help you.

Children