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.

sd card boot file fails when too big

 

The last time that I added code to my project, I stopped being able to boot from the SD card.  I'm using the C5505 and C5515.

I'm near the end of my project (thus the huge code size), and I hate the thought of changing all kinds of working code around to make it boot.

 

1. What are the size limitations to the boot5505.bin file?   I didn't see anything about this in the docs, but I think I remember a TI person telling me that there is some limitation when the code gets too big.

2. Is there any way around this?  At this point, I need to be able to boot from SD card.

Really, I don't care about question #1 if question #2 can be answered.

Thanks!

 

  • Hi David,

    How big is your boot5505.bin file? The C5505 and C5515 both have...

    • 64K Bytes of Dual-Access RAM (DARAM) - 8 Blocks of 4K x 16-Bit
    • 256K Bytes of Single-Access RAM (SARAM), 32 Blocks of 4K x 16-Bit

    How many unused bytes are shown in the map file? Look at the different sections under MEMORY CONFIGURATION (near the top of the map file)

    Does the program run out of CCS but not from the boot loader?

    Make sure that you dont bootload any code into SARAM31 as SARAM31 (byte address 0x4E000 – 0x4FFFF) is reserved for the bootloader. After boot loading, you can use this section for data. Refer to the Bootloader App Note: http://focus.ti.com/lit/an/sprabd7/sprabd7.pdf

    Hope this helps,
    Mark

     

     

  •  

    Yes, my application runs fine when loaded via JTAG through CCS.  But if I write boot5505.bin from that working main.out, nothing happens.  Then if I take out some code, then both JTAG and boot5505.bin work.

    I was able to get it to boot by changing the length of SARAM to 0x1F000 (from 0x20000) and by moving some of my SARAM stuff into DARAM.

    Thanks for your help.

  • David,

    It appears that some of your code is allocated to the SARAM 31 (0x4E000 - -0x4FFFF). You can't put your code into the SARAM31 block. Please make sure not to put your code to the space.

    Best Regards,

    Peter Chung

     

  • Hi,

    I've got a similar problem - I have a small 'bootloader' application that I can put on the SD Card and boot, and a larger application that I copy onto the SD Card and won't boot.  The bigger application has a heap in SARAM31 (the map file in this region is clear).  My simple bootloader application doesn't have a BIOS configuration, my bigger one does (I don't think this should make any difference).  Are there any 64k boundary issues in the ROM bootloader?  Is it possible to get hold of the source code for the bootloader?

    Also I've posted a question about inserting the register configuration values when using the C55BootImage tool insert of HEX55 - does anyone have any suggestions?http://e2e.ti.com/support/dsp/tms320c5000_power-efficient_dsps/f/109/t/111745.aspx

    Finally again when booting from the SD Card, if I do a hardware reset after I've loaded my small bootloader from the SD card, the board will only boot from the SD card every other time (I can see the short burst on CLKOUT that looks the same length as if there is no SD card plugged in).  Is there any state information the ROM bootloader uses that isn't reset with a hardware reset?

    Many thanks,

    Dave

  • Hello Mark,

     

    How can I exclude SARAM31 as SARAM31 (byte address 0x4E000 – 0x4FFFF) from the BIOS project? Program code size is 280 K, and booting from the SD fails. However, C5505 boots from the SD with 240K.

    What I see on the MEM-Memory Section Manager menu in the Configuration Tool is:

    Comment: 32 blocks of 8K bytes of on-chip Single-Access RAM

    Base:0x008000

    Len:0x38000

     

    Thanks,

     

    Sukru

  • I think I figured this out. Here is .tcf lines for it:

    (Word addresses)

    bios.MEM.instance("SARAM").base = 0x008000;

    bios.MEM.instance("SARAM").len = 0x1efff;