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.

AM1705: Speeding up ROM Bootloader on AM1705

Part Number: AM1705

Hi,

We have an AM1705 (456 MHz) on a custom board that is booting as Master from SPI Flash. The ROM Bootloader ID in the CPU is D800K005 and the .ini file below is used to generate an AIS binary that is approximately 260 kB in size. The AIS bin includes a custom UBL (User BootLoader) for our product. 

The ROM Bootloader takes approximately 760 ms to parse the commands and copy data from the AIS file to SDRAM before jumping into the UBL. The SPI bus is configured to operate at 22.80 MHz and [AIS_SeqReadEnable] is used in the AISConfig.ini file.

I am trying to speed up the copying of data from SPI flash to SDRAM so that the UBL starts faster.

Increasing the SPI bus speed has no effect on the execution time. When looking at the SPI Clk on a scope it seems that the ROM Bootloader is reading in one byte from the SPI flash every 2 microseconds and that 4-byte word reads are performed at an interval of ~11 microseconds. This is the case even when the ROM Bootloader is executing a Section Load Command (0x58535901) to copy data from SPI Flash to internal SRAM or external SDRAM.

Some questions:

1) Is there any way to speed up the ROM Bootloader by reducing the delay between SPI flash reads when running the Section Load Command?

2) Why the delay of 11us between every 4-byte read?

3) I've seen some mention in the forum of a [FASTBOOT] option. Can it be used in some way to speed up the data copying?

4) Any other hints on how I can speed up the boot process?  

Thanks in advance for any help or tips.

/ Michel

>>> The AISConfig.ini file 

; Created by AISgen for D800K005 v0.8.2.0

[General]
BootMode = NONE
crcCheckType = NO_CRC

[AIS_SeqReadEnable]

[PLLANDCLOCKCONFIG]
; CPU 456 MHz 
PLLCFG0 = 0x12000403
PLLCFG1 = 0x000501F9
PERIPHCLKCFG = 0x00000008

[EMIF3SDRAM]
SDCR    = 0x0000C621
SDTIMR  = 0x0C912188
SDTIMR2 = 0x78070004
SDRCR   = 0x00000890

[EMIF25ASYNC]
; CS2 == Panel 
A1CR = 0x08640100
; CS3 == DSP and Keyboard
A2CR = 0x00020100
; CS4 Unused 
A3CR = 0x3FFFFFFC
; CS5 Unused 
A4CR = 0x3FFFFFFC

[PSCCONFIG]
LPSCCFG = 0x00000003

[PSCCONFIG]
LPSCCFG = 0x00010003

[PSCCONFIG]
LPSCCFG = 0x00020003

[PSCCONFIG]
LPSCCFG = 0x00030003

[PSCCONFIG]
LPSCCFG = 0x00040003

[PSCCONFIG]
LPSCCFG = 0x00060003

[PSCCONFIG]
LPSCCFG = 0x000A0003

[PSCCONFIG]
LPSCCFG = 0x000B0003

[PSCCONFIG]
LPSCCFG = 0x000C0003

[PSCCONFIG]
LPSCCFG = 0x000D0003

[PSCCONFIG]
LPSCCFG = 0x01010003

[PSCCONFIG]
LPSCCFG = 0x01030003

[PSCCONFIG]
LPSCCFG = 0x01060003

[PSCCONFIG]
LPSCCFG = 0x01080003

[PSCCONFIG]
LPSCCFG = 0x010A0003

[PSCCONFIG]
LPSCCFG = 0x010B0003

[PSCCONFIG]
LPSCCFG = 0x010C0003

[PSCCONFIG]
LPSCCFG = 0x010D0003

[PSCCONFIG]
LPSCCFG = 0x01110003

[PSCCONFIG]
LPSCCFG = 0x01180003

[PSCCONFIG]
LPSCCFG = 0x01190003

[PSCCONFIG]
LPSCCFG = 0x011A0003

[PSCCONFIG]
LPSCCFG = 0x011F0003

[PINMUX]
REGNUM  = 0
MASK    = 0xFFFFFFFF
VALUE   = 0x11112108

[PINMUX]
REGNUM  = 1
MASK    = 0xFFFFFFFF
VALUE   = 0x11111111

[PINMUX]
REGNUM  = 2
MASK    = 0xFFFFFFFF
VALUE   = 0x01111111

[PINMUX]
REGNUM  = 3
MASK    = 0xFFFFFFFF
VALUE   = 0x00000000

[PINMUX]
REGNUM  = 4
MASK    = 0xFFFFFFFF
VALUE   = 0x00000000

[PINMUX]
REGNUM  = 5
MASK    = 0xFFFFFFFF
VALUE   = 0x11111110

[PINMUX]
REGNUM  = 6
MASK    = 0xFFFFFFFF
VALUE   = 0x11111111

[PINMUX]
REGNUM  = 7
MASK    = 0xFFFFFFFF
VALUE   = 0x18111111

[PINMUX]
REGNUM  = 8
MASK    = 0xFFFFFFFF
VALUE   = 0x21122111

[PINMUX]
REGNUM  = 9
MASK    = 0xFFFFFFFF
VALUE   = 0x88888802

[PINMUX]
REGNUM  = 10
MASK    = 0xFFFFFFFF
VALUE   = 0x88888880

[PINMUX]
REGNUM  = 11
MASK    = 0xFFFFFFFF
VALUE   = 0x11281888

[PINMUX]
REGNUM  = 12
MASK    = 0xFFFFFFFF
VALUE   = 0x88888880

[PINMUX]
REGNUM  = 13
MASK    = 0xFFFFFFFF
VALUE   = 0x11088888

[PINMUX]
REGNUM  = 14
MASK    = 0xFFFFFFFF
VALUE   = 0x00111111

[PINMUX]
REGNUM  = 15
MASK    = 0xFFFFFFFF
VALUE   = 0x11000000

[PINMUX]
REGNUM  = 16
MASK    = 0xFFFFFFFF
VALUE   = 0x88888811

[PINMUX]
REGNUM  = 17
MASK    = 0xFFFFFFFF
VALUE   = 0x00011188

[PINMUX]
REGNUM  = 18
MASK    = 0xFFFFFFFF
VALUE   = 0x00111010

[PINMUX]
REGNUM  = 19
MASK    = 0xFFFFFFFF
VALUE   = 0x00000000

; Set Both Test Pin GPIOs high
[AIS_Set]
TYPE    = 2
ADDRESS = 0x01E26010
DATA    = 0xf3ffffff
SLEEP   = 0

[AIS_Set]
TYPE    = 2
ADDRESS = 0x01E26018
DATA    = 0x0C000000
SLEEP   = 0

  • Hi Michel,

    There is nothing much you can do for the ROM Bootloader. ROM Code is pre-programmed in the devices and cannot be changed.

    3) I've seen some mention in the forum of a [FASTBOOT] option. Can it be used in some way to speed up the data copying?


    FASTBOOT is u-boot mode which is entered, in order to re-flash your device, it will not have any effect on reducing the boot time.

    4) Any other hints on how I can speed up the boot process?


    See the following thread:
    e2e.ti.com/.../433901

    Best Regards,
    Yordan