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 Boot ROM Speed Up F28075

Other Parts Discussed in Thread: CONTROLSUITE

Hey all,

I am using the boot ROM through a EEPROM over I2C.  It works just fine, but it is incredibly slow.  Right now it takes 10-12 seconds to boot the device.  I used the C2000 Hex Utility in CCS to generate the boot ROM image.  As part of my settings I have the I2CCLKH/I2CCLKL registers in the boot table set to 0x36 which and the I2CPSC register set to 0x1, with all other I2C and system clock variable set to default.  I was hoping to tweak some of the registers to speed things up but I'm not totally sure what the system clock speed is on the device. 


In the technical reference manual it mentions that INTOSC2 gets used which is a 10MHz oscillator that then gets bumped up to a higher frequency by the PLL.  The manual says the PLL output frequency needs be between 150MHz to 550MHz, but I see no options with the hex utility to set the integer and fractional multiplier settings in the PLL, so I have no clue what the clock frequency will be set to.  Any ideas on how to guarantee a clock frequency and how to speed up the I2C boot?  I can play around with things experimentally but I would like to have a more analytical answer.

Lance

  • Hi Lance,

    The boot ROM doesn't use the PLL, so the I2C boot loader runs at 10 MHz off of INTOSC2. The default settings should get you ~83 kilobits/second. If you want to use a different bit rate, keep I2CPSC at zero.

    If it's still too slow after fixing that, check SCL with an oscilloscope. Long periods where the clock is held low could indicate that the EEPROM is the bottleneck.

    Please let me know if you have any more questions.

    Thanks,
  • Lance,
    please refer to I2C boot source file in controlSuite, C:\ti\controlSUITE\libs\utilities\boot_rom\F2807x\revB\rom_sources\F2837x_bootROM\cpu01-bootROM\source. You can do source level debugging of ROM code by loading ROM symbols from C:\ti\controlSUITE\libs\utilities\boot_rom\F2807x\revB\rom_sources\ccs_files\cpu01\Release

    There is a way to change the prescalar ad CLKH/CLKL register values from the incoming hex data. Please refer to function I2C_ReservedFn().

    However as Adam suggested above boot ROM doesn't use PLL, so you might have limited options.

    Hope this helps.

    Best Regards
    Santosh Athuru