Basically there are two methods for reading and programming:
via BDM
This method works only for ECUs with a MPC5xx processor,
but works for all of these. It's necessary to dismantle and open the ECU, but this
method allows you to program it as many times as you want. It does not depend on
manufacturers and their ODB2 protocols.
Via BDM you can read all parts units in the ECU. This allows you to reset to
the previous version, including the error log and the immobilizer as well as
the cloning of ECUs.
While the handling is a bit more inconvenient because of the opening of ECU,
this method is the sheet anchor that helps avoid the purchase of a new ECU.
BDM100 was developed by EVC which means that the entire know-how, the source codes
and technical documents are in-house.
via OBD2
This is convenient - you don't even have to open the hood. Thus you
often don't know which ECU is used in the car. This can lead to problems.
Even cars that look the same from the outside can use different ECUs. On the
other hand the same ECU can require different communication algorithms in
different cars.
Unexpected events or a too low battery voltage can lead to a stop of the
communication. In worst case this might make a reconnection of the communication
impossible and render the ECU unusable.
Regarding the ODB2 systems were currently offering the products of the following companies. Both have different target audiences.
Frieling-Racing
SPI-Wizard
Made for specialists that limit themselves to few car brands.