SiM3U1xxx I2C Bootloader

* It contains four parts.
** Bootloader firmware
** Master MCU firmware
** PC data source software.
** User application code.

* It supports both Keil and Precesion32 IDE 

* Introduction:

  Please refer to AN762 and AN763 for reference. The I2C bootloader solution uses a Master MCU, which 
acts as a bridge between the PC and the Target MCU. Connect the Master MCU to the PC through a UART
interface. Connect the Master MCU and Target MCU through the I2C bus. Specific instructions are
provided in AN787 (www.silabs.com/32bit-appnotes).

* Build the master and bootloader firmware with a release mode configuration.
  
  In Precision32, the debug mode code size exceeds 8 kB, which requires a modification to the 
application code size to 16 kB to fit.

* For user applicatoin code entry address. 
** In master and bootloader firmware, main.c
void user_app_jump(void)
{
    __asm volatile ("ldr r0, =0x00002000");
    __asm volatile ("ldr sp, [r0]");
    __asm volatile ("ldr pc, [r0, #4] ");
}

** In master and bootloader firmware, userconfig.h
#define USER_APP_START_ADDR 0x00002000


* I2C PIN assignment
Master MCU:
P0.0   --- SDA
P0.2   --- SCL

Target MCU:
P0.14  --- SDA
P0.15  --- SCL

* Running.
Execute "SiM3U1xx_I2C_Bootloader\I2C_Demo\3.Launch_DFU_Utility.bat" to burn user application into 
target MCU board. 