I thought there was no NAND flash boot mode for BF52x processors. Now I see it in the data sheet. What's the deal?
The NAND flash boot mode is now supported in BF523/5/7 Rev 0.2+ and BF522/4/6 Rev 0.1+. Check the anomaly list for differences between revisions of silicon.
Thanks for your information. I am ADI FAE.
My customer using BF526 silicon version 0.1, but failed when do NAND boot now. May you tell me more on how you verify NAND boot?
1) Which board you are using and which mode you choose (My customer use own made BF526 board, and configure BMODE=1100)
2) Which flash programmer you used (I use an example code from Andy)
3) on LDR generation, anything special to take care? (my customer use NAND-Hex-8bit, default start address)
During troubleshooting, we found boot kernel did load bytes from NAND flash, but still result failure boot. I need a verified method to help customer quickly run out of trouble with trials.
BTW, SPI boot without problem for my customer's case.
The following procedures can be used in order to debug the booting procedure.
It is important the loader stream is of the correct format, when generating the loader stream for the NAND flash can you add the following two additional options to see if this resolves your problem:
-width 16 -dmawidth 16
Once the executable file is created containing the symbol information you are better prepared to debug the booting procedure. The next step required is to power up the target and connect to the target with an emulator. The emulator session must be configured for "do not disturb" or "halt". It should not be set to "halt then reset".
Upon connecting to the target with the appropriate VisualDSP++ session, halt the target if it is still running and load the symbols from the executable created previously.
It is most likely that if something has gone wrong, the processor will be within the "_bootrom.assert.error" function. If this is indeed the case then the address of the instruction that resulted in the assertion error can be obtained from the "RETS" register. Take a note of this value and then find the corresponding function that this instruction belongs to by reviewing the xml symbol map. This should then provide an indicator as the potential source of the error. Once the source of the error has been determined then the required steps can be taken to correct the problem.
Further information relating to the general boot procedure and the NAND specific boot mode can obtained by opening up an expressions window and then observing the contents of all the data structures related to the boot mode.
Firstly enter the following expression in the expressions window:
(ADI_BOOT_DATA *) $P5
During the boot procedure at virtually all times the contents of register P5 points to the ADI_BOOT_DATA structure. This can then be used to further understand and debug the boot process. For NAND flash boot a number of other structures are used. To gain access to these structures from within the expressions window type the following:
(ADI_BOOT_NAND *)(*((ADI_BOOT_DATA *) $P5)).dUserLong
If the additional loader options do not resolve the problem then use the techniques above to further determine the cause of the problem, when you have some further information on the function that seems to be causing the error then let us know and we can then dig deeper into the boot structures to find the root cause.
Hi, Andy: Thanks, it works and can boot successfully after correct the dma width. regards, robin.
Retrieving data ...