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.
Hello,
I've followed to http://processors.wiki.ti.com/index.php/File:C6678_directROM_boot_examples.zip to make a bootable image/program it on the SPI flash memory and succeeded to see "Hello World" output on UART.
However it fails to boot when I use complex .out(big .out file) files as source image.
I found http://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#SPI_boot workaround regarding this issue but it didn't help.
Could you please advice - is there anything else to do / modify source for this?
Regards
Andranik
Please find attached the binary file which I try to make bootable with next sequence:
I don't see any error while building the binary / creating bootable image.
FYI: The attached binary is compiled from C:\ti\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_test example source and it shows UART output pretty well when I load / execute it by using JTAG chain instead of making the binary executable / program to the SPI flash / boot from it.
Regards
Andranik
Andranik,
We were pinged by Philip on this issue and we are picking this issue up from where we left off. I apologize for the delay as I was out of in the month of December. you mentioned the image is loaded into the device from SPI flash, correct? Have you connected to core0 and looked at where the program counter is ? This is will help determine if the DSP Boot ROM exited and there is some issue with transfering control to the application binary.
The other issue that I noticed was that in the platform_test MSMC section is defined to start at oxc000000 and length of 0x200000 but the led_blink.rmd file used for the led_blink example, creates binary starting from 0xc000000 maximum upto length 0x100000. Can you please change that in the .cmd file and let us know if this changes the behavior.
Regards,
Rahul
Rahul,
Currently I built an application which returns UART output on our C6678-based board - you can find the file attached to this message.
UART_BasicExample_C6678_c66xExampleProject.out.zip
In the other hand I have downloaded the C6678 SPI direct ROM boot example from there. I am able to see the the UART output after compiling the led_play application, making it bootable with the tools/methods provided in this example, re-configuring/re-building the nor writer tool (since our SPI NOR flash differs from the one C6678 evaluation module) and programming to the SPI NOR flash.
Next step I do just replacing the led_play.out file with the attached file which execution gave me a proper UART output.
After re-building the bootable image and programming the SPI NOR flash (the newer image is bigger than default one) I don't see any UART output.
Could you please also mention the possible root causes for such kind of issue?
Regards
Andranik
Rahul,
Thank you for quick answer.
So my first goal should be making a bootable flash with the platform_test example which doesn't need an extra DDR configuration.
But the thing is I can't see the UART output event when I try to make the platform_test example bootable and write it to SPI NOR flash despite the facts that:
- I've succeeded to see the output when I load the platform_test example via JTAG
- I've succeeded to see the UART output with the same bootable image making + SPI NOR flash writing procedures for the led_play example
- I've verified the bootable image write / boot image fetch procedures with the logic analizer
By the way:
We develop our Board Support Package based on Processor SDK RTOS for C667x DSPs and the platform_test example is from the MCSDK.
Could you please mention the examples from the Processor SDK which don't need the DDR configuration / addition?
Regards
Andranik
Andranik,
I was able to take the platform_test.out file was able to boot it on my EVM but the application doesn`t run any tests because there is a file IO operation at the start of the platform_test.out which will hang when there is no emulator connected to the platform.
I have attached the pre-built binary for you to try. After the booting, the boot image, if you connect to the DSP Core0 without a GEL file, you will notice that the code is at address 0x0c04c1a0 where the symbol _dofgets RTS function is defined.
Here are screenshot for you to reproduce the result. After you flashed the app.dat, Change the boot switches, and then power on the DSP. Connect an emulator to the EVM and launch debug view. Remove the GEL file as this will change device state. Now connect to the DSP and you will see the program counter is at 0x0c04c1a0. Now you can got to Run-> load symbols and browse to platform_test.out that you provided and see the location where the DSP is hung.
This proves to me that the boot is working, it is an issue of running the application without JTAG that causes it to fail.
Let me know if you disagree.
Regards,
Rahul
Rahul,
I see the same behavior with the application sent by you - the debugger points to 0x0c04c1a0 address.
As far as you describe - it means the SPI boot procedure is correct.
So could you please mention the possible differences between loading the application via the JTAG chain and programming to/ booting from the SPI flash and workarounds for those differences?
It will let us combine all those workarounds into the universal script for making bootable images.
Regards
Andranik
Hi,
I am Rahul's colleague. Is that correct "main goal is to add a UART output on top of the PCIE_evmc6678_wSoCFile_C66BiosExampleProject example functionality included into the TI Processor SDK RTOS C667x."?
Regards, Eric
Hi,
There are standalone PCIE example and UART example CCS projects in SYSBIOS. Please run them seperately to make sure they worked. Then you need to merge them together. Attached is an example how we merge several SYSBIOS examples together on another processor, the same applies to your case.
-Merge SYSBIOS Configuration File
-Merge Compiler and Linker Options and Linked Libraries
Then replace PCIE_logPrintf with UART_printf.
Regards, Eric