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.

c6748 sys/bios startup time

Other Parts Discussed in Thread: SYSBIOS

I continue thread here, because ReinierC did not like that I have hijacked his thread: http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/246851/1013631.aspx#1013631

The problem is that I would like to boot C6748 as quickly as possible. Using secondary bootloader and Micron 25Q032A flash should be one of the quickest methods. Because 25Q032A uses clock signal up to 108 MHz and is able to use 4 bit bus, instead of normal 25 MHz 1 bit SPI.

StarterWare bootloader is used as basis of the project: C:\Program Files\Texas Instruments\pdk_C6748_2_0_0_0\C6748_StarterWare_1_20_03_03\bootloader

Currently following tests have been made.

1. boot into production 617 KB sys/bios app takes 2.8 s (it is 0.8 s if bootloader is executed via JTAG connection)

2. boot into test Starterware app happens almost immediately

3. boot into test 670 KB sys/bios app takes 0.2 s.

Times are measured using logic analyzer. Bootloader prints something out before starting app and in app main function some pins are toggled or something is sent to serial. Therefore times can be measured very precisely.

From .map file can be seen what is called from bootloader. Here is example from our sys/bios app.

ENTRY POINT SYMBOL: "_c_int00"  address: c185d360
c185d360    000000a0     boot.ae674 : boot.oe674 (.text:_c_int00)

I thought that first call is made into main function and sys/bios stuff is started with BIOS_started, but I was wrong. There is boot library that handles quite many aspects: http://rtsc.eclipse.org/docs-tip/Using_xdc.runtime_Startup

Production app uses many peripheral devices and libraries I would like to find out which of them causes the long delay. My question is how to check what is actually started with boot, before main is called?

Andres

  • I got 0.2 s with this configuration:

    Program.stack = 0x1000;
    Memory.defaultHeapSize = 20736000;

    And 2.8 s with that one:

    Program.stack = 5242880;
    Memory.defaultHeapSize = 80000000;

    Stack size is the main cause of the delay. If just heap is increased to 80000000 it goes from 0.2 to 0.6 s.

    All the stuff is held in 128 MB DDR2.

    override config string codeMemory = "DDR";
    override config string dataMemory = "DDR";
    override config string stackMemory = "DDR";


    Could you suggest what would be the "right" configuration? Currently application quite heavily relies on dynamic memory allocation and up to 80 MB might be needed. However I noticed that increasing heap size also increases sys/bios startup time quite a lot, therefore I guess I should use only static memory allocation?

    I would like to get some more knowledge why this is happening. Why sys/bios startup time so dramatically increases if lot of heap and stack memory is defined?

    EDIT:

    Delay is caused by stack overflow checker. If I unchecked following checkboxes then I got 0.6 s with my boot test application.

    SYS/BIOS -> Scheduling->Task

    • Initialize stack
    • Check for task stack overflow
    SYS/BIOS -> Scheduling->Hwi
    • Initialize stack
    Andres
  • Andres,

    Thanks for your post.
    Kindly refer the below wiki page for C6748 boot
    http://processors.wiki.ti.com/index.php/C6748_StarterWare_Booting_And_Flashing
    http://processors.wiki.ti.com/index.php/StarterWare_01.20.03.03_Release_Notes

    StarterWare 01.20.03.03 provides no-OS platform support. You are using sysbios based application.
    pdk_C6748_2_0_0_0\C6748_StarterWare_1_20_03_03
    Please give us some more information.

  • I am using Starterware based bootloader, however it is little bit modified to be faster with SPI flash access. Bootloader starts SYS/BIOS based application, the findings that I reported were about this application.

    It seems that unchecking this from my application settings was most important. It reduced sys/bios startup time from 2.7 s to 0.6 s.

    SYS/BIOS -> Scheduling->Hwi
    • Initialize stack

    NB: if I am talking about startup times, I mean time delay from giving control to app entry point to time where application main is started.

    This is snippet from the bootloader that starts sys/bios application:

    appEntry = (void (*)(void)) entryPoint;
    (*appEntry)( );

    Andres