This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

I2C Booting Multiple Processors

We are having some issues trying to boot 2 6670's from the same EEPROM, we do not have any issues when booting them sequentially, however if we try to boot them both simultaneously, the processors do not boot. We have a few questions regarding this:

1) Looking at the clock lines, it does not appear that the I2C bus is saturated when booting, so booting both processors at the same time could reduce the boot time of the system.  Is this possible?

2) While booting, does the 6670 support clock stretching, where the slave device could slow the clock speed down if needed?

Any help would be greatly appreciated, thanks.

  • The C6670 I2C interface does support the multi-master capability inherent in I2C so booting both processors at the same time should be possible.  Clock stretching is part of the I2C specification and is supported by the implementation in the C6670.

    Can you give me some additional details on the failure that you are seeing?  You stated that the the processors fail when booted simultaneously. Do both processors fail or does one boot and the second fail?  If that is the condition does reseting the processor that failed cause it to boot correctly? What speed is the I2C running during boot? How large is the image that you are attempting to load and how long does it take to load that image if a processor is booted independently? What is the state of the I2C bus after the processors fail to boot? Are both signals high?

    Regards, Bill   

  • Hi Bill,

    Thanks for the quick response, one processor boots, the other does not. We are Running @400kHz.

    We are using a "Virtual EEPROM" using the I2C of a different uP (so we can load different applications), so the problem could lies in there, just wanted to verify that the 6670 did support the simultaneous booting before debugging what could be happening.

    Erick

  • Hi Erick,

    How large is the image that you are trying to load? Loading very large images can take significant time using I2C and it's possible that the bool loader code for the device that is failing may be timing out while waiting for the other device to load. This is less likely with 400KHz operation but a very large image may cause problems.

    Regards, Bill

  • Hi Bill,

    The images we are using are around 55k, and it takes ~10 seconds to boot the processors independently.

    Is there a document or something that describes how the internal bootloader works, mainly:

    1. What is the timeout value, and how is it triggered (i.e. is the timeout reset once a valid read is received or is it just the total time from resetting the processor)?
    2. What happens in a checksum failure, does it retry? How many times?

    Thanks for the help so far, we're still in the process of making sure our virtual eeprom is operating correctly, but any information about the actual boot process would be very helpful to make sure we are complying with everything that the bootloader is expecting.

    Erick