Other Parts Discussed in Thread: TMS320C5
Hi all,
I have a firmware image designed to run on a TMS320C5 microprocessor. I have no other files for it, i.e. linking/dsphex command files to identify easily how it was build/linked/imaged. Despite this lack of info, I'm assuming that some of the information, such as the load address of the sections, offsets, length etc... are stored somewhere prior to the section/objects so the processor know where/how to load them at run-time. Using IDA pro, I'm seeking where in the generated image file to look for this information for each section in the firmware. This is do I can properly align the various segments so I can link the functions together (CALLs and branches, along with variables in the CINIT section). Below is what I found so far:
The current file I have is a firmware which appears to contain multiple objects, including functions from the RTS50.lib (boot.asm, f_add.asm etc...). I can see the different sections (.text1, .cinit1, .const1, .text2, .cinit2, etc...). I took a look at the first few words of the firmware and saw the follow 4 words:
8000 0000 0000 F001 <c_int0>
And based on this, I assumed the first .text section within the firmware started at 0x8000 and it actually seems to work (the c_int0 and subsequent function aligns). However I can't really understand if I was just lucky and how to understand how the other following sections are loaded. For example, following the CINIT/CONST segments of other objects, I can see similar looking words right before the .text section:
8095 5000 0000 F001 ... 8000 03F0 0000 F009 ... 800A 0000 0000 F089
However when I look at the addresses calls/branching instructions within the .text section following these words, some are in lower addresses which don't appear to work out. For example I can see:
CALL #3CEHh ... BCND #68A3h ...
So I'm currently confused as to how I can determine how/where code sections are loaded program memory using only the firmware image. If anyone can help me, I would be grateful, as I already spend the last 3 days trying to figure it out. The help file in CC doesn't seem to have the details I need. I understand the ROMS/dsphex -image concept, but not the reverse process. Of course there is no symbol information to easily locate this information.
Thanks
J.