I am working on getting the Vyrbid VF6xx to boot through UART in order to download our custom bootloader that has been developed previously (which works just fine when sending the image through DS-5). I currently have a working TeraTerm TTL script to interface through the SDP and can associate, read registers, and write a file to a location. What I have been unsuccessful in doing is being able to actually boot an image. I have realized that I need the image to be formatted with an IVT and DCD header, and that is where I have gotten stuck. Currently, we have an elf32-little image that I know contains some of the DCD and must also contain the IVT, but I am having difficulty in parsing it and translating it to an image that the SDP can understand and use. In the reference manual, there is information on what to include for these headers, but I do not see those headers anywhere in the elf32 image. I was led to believe that the elf32 image SHOULD have these headers, and that is how it knows to set up DDR and flash locations, etc. (the point of the DCD...) The fact that these headers are missing when I inspect the elf32 image leads me to believe that the image does not actually set up any of the memory or flash data, but is instead handled by DS-5 or some other IDE sending the image (it also works using j-link in SourceryCodebench).
What I am asking for is some kind of a template or a step-by-step guide to generating an image that is recognizable by the bootROM when transferred through the SDP via UART. If this entails editing the elf32 image or editing the pure binary image generated from the elf32 file, I just need to know what to include and where. I know this has been posted before in regards to USB, but the real problem for me is that I know the image works, and ideally I would just parse through the elf file, find the relevant memory addresses that we are using, and translate them into the IVT/DCD format that the BootROM expects.
Also, I noticed in some of the various communities posts that the memory location for executable code is slightly different than what Ihad originally thought. Currently, I am sending the image to the 0x3F040000 address, and once I send the image, I send the JUMP_ADDRESS command to start executing at 0x3F040000. I have been led to believe (through some related post) that only code that lives in the external RAM (0x80000000) can be executed. Is this correct? And if so, how would I go about transferring the executable to that location? Would it just be a subsequent WRITE_FILE command?
Thank you in advance for your time and effort in helping me to resolve this issue. I look forward to a reply.