I am using ADSP-21489, and I've designed it to boot from SPI Flash The Flash chip is W25Q32,and i used the same circuit as the ADSP-21489 EZ Board. Also my BOOT_CFG[1:0] is 01, i.e. SPI master mode, clock config is 16:1 and i used following options in project options.
boot type: spi flash
kernel: default kernel file,
After 1 second of power on, I am providing following pattern on reset pin,
400ms ON time, 400ms OFF time and then continuously HIGH
The issue I'm facing is, sometimes (randomly you can say) ADSP 21489 does not boot from flash.
During not booting condition,
The chip select stays always low and there is no data flow between ADSP and flash. My circuit of flash is similar to ADSP 21489 EZ-KIT. Only difference is MISO pin is not pulled up.
another observation is, ADSP reads some of the data and then automatically data receiving gets stop. E.g. consider ADSP takes 0.5ms to read complete data, but after reading around 0.1ms, it stops reading the data. CS of flash stays low continuously.
Please revert back ASAP.
Hi Pankaj,Apologies for delayed response. In order to narrow down this issue further can you please check the below points and provide more information to assist you better.1) Ensure that the /TRST signal of the JTAG ICE is connected to board ground. Do not leave this signal floating. Letting this signal float may cause boot failures or other memory access failures.2) Ensure that you have selected the correct parameters while generating the .LDR file. Selecting an inappropriate parameter may cause the boot to fail (Please choose the loader option as ‘SPI Master’ for booting from the external flash).3) Ensure that the correct boot kernel is used before generating the loader (.LDR) file. If you are using a modified boot kernel, try using the default boot kernel supplied with CCES (or) VDSP++ together with an example application to confirm basic boot-loading.4) Verify the Power-Up Sequencing timing diagram which is mentioned in the ADSP-21xxx datasheet. And make sure that the processor is properly coming out of RESET.5) Can you please confirm that all clock domain are under specification as mentioned in the datasheet?6) Did you confirm the working of your application using emulator? when using custom board please ensure that your application is working correctly in debug mode. If yes then you can proceed to boot your application.7) Make sure that the PLL is configured correctly. The default boot kernel may have the PLL configuration as per the EZ-KIT Lite board. This need to be changed if your application uses a different CLKIN. Check the CLKCFG signals and ensure that the PLL is not overdriven. Ensure that the ratio selected in combination with the CLKIN frequency does not exceed the core clock to a value greater than specified.Kindly perform these debugging steps and share us the feedback, so that I can assist you better with this issue.Also to debug a target that is booting from Flash, you need to configure the way in which Cross Core Embedded Studio connects to your target, to ensure that when it does connect to your board it does not reset the processor. In order to implement this the important steps are to ensure that you enable the "Load Symbols Only" option, and disable the "Reset Core before load" option. Here are example steps to create a suitable debug configuration: 1) Open Cross Core Embedded Studio and go to ‘Run’->’Debug Configurations’2) Click on the “New launch configuration” button, or right click on “CrossCore Embedded Studio Application’ and select ‘New’.3) In the Session Wizard, select the 'Processor Family' and 'Processor Type' that match your target.4) On the next page, select either "EZ-KIT Lite" or "Emulator", depending on what you are using. If you use an emulator, the next page will let you select your specific target/emulator.5) Once the Session Wizard is complete, and you are back at the "Debug Configurations" window, you need to set up the "Program(s) to Load" settings.6) For each Core/Processor that you need to load a DXE to, click on the core/processor and select "Add". Browse to the DXE you need to load and select it.7) Disable the "Reset Core Before Load" option8) Enable the "Load Symbols Only" option When you launch your Debug Configuration, the symbols (global data and function names) will be loaded, but your application will not be re-loaded or interrupted. You can then halt the target and inspect the disassembly to determine where your application is. If your DXE was built with Debug Information, you may also have source-level debugging available. You can also debug the entire execution of your application (rather than just 'breaking in' at whatever its current PC may be, as above) by putting the 'JUMP (PC,0);' instruction in the boot-kernel.asm (such that the first executed instruction is JUMP(PC,0);.) and build an LDR. This way, the part will load the boot-kernel and then just sit there executing the same instruction over and over again. After you reset the board and it starts booting, you connect the DSP with the emulator (be sure the session is configured to NOT reset upon connection), change that instruction to a NOP; in the disassembly window, and then step/run through the rest of the boot sequence. By this way you can exactly find the flow of your code. You can also put 'JUMP (PC,0);' instruction in the beginning of your application code and do the debug steps as mentioned above.Please look into the below FAQ to debug the target which fails to boot.FAQ: How to debug a target board which boots from Flash?Also, I suggest you to refer the Application note EE-355, This application note discusses how serial and parallel FLASH devices can be interfaced with SHARC processors: ADSP-2126x, ADSP-2136x, ADSP-2137x, ADSP-214xx processors. Regards,Lalitha.S