ATECC608B Migration

The ATECC608B has the same form, fit and function as the ATECC608A. The packages and pinouts are the same, the device structure is the same and so are the commands and command structure. This makes the ATECC608B a functional drop-in replacement of the ATECC608A. If the users implement their design utilizing the Microchip’s software library (CryptoAuthLib), this further simplifies the migration process.

An additional factor that has to be considered is the timing differences between the ATECC608A and the ATECC608B for a specific design. This really depends on how the software was implemented. There are two cases that require consideration:

Fixed Timing Implementation

If the code is written assuming hardwired timing parameters, careful analysis must be undertaken to evaluate the impact of changing from the ATECC608A to the ATECC608B. Under this method, after a command is issued, the microcontroller will wait a fixed period of time before reading the response data back. If the delay required for the ATECC608B is significantly longer than the ATECC608A, this command may fail. Using an older version of CryptoAuthLib meant for the ATECC608A or a customer-generated library with the ATECC608B could cause some timing errors. Implementing the latest version of CryptoAuthLib correctly updates the timing information and, through just recompiling the code and reflashing the micro, the timing issues may be corrected. In general, the parameters used for fixed timing are broad enough that they will be conservative to actual worst-case timing values and may still not be an issue. As noted in Section Device Differences, the timing changes of the ATECC608B and ATECC608A are relatively minor. Also, these are representative times for the specific command modes and there are other items (as noted in the data sheet) that could cause these values to step out further.

If timing is an issue, the following solutions can be considered:
  1. 1.Migrate the code to use the latest version of the CryptoAuthLib library.
  2. 2.Migrate the code to use polled timing. See Section Polled Timing Implementation below.
  3. 3.If a custom library with fixed timing is used, update the library timing parameters needed for the ATECC608B.
  4. 4.Implement redundancy by trying to read back data a second time upon receiving a failure code that indicates the response was not yet ready.

Polled Timing Implementation

Polled timing is set as the default mode of operation when using the CryptoAuthLib library. If the code is written using polling, there will be no issues with migrating to the ATECC608B. In this scenario, the microcontroller would poll the ATECC608B to determine when data are available to be read. Minor timing differences would be absorbed by the polling command. These differences can be fully absorbed by the ATECC608B device because none of the execution times of the commands have stepped out significantly.