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.

DM648 EMIF BOOT problem

Hi.
We designed DM648 boards, but there is a problem in Boot.
Our board fails in Boot with very low probability.

Boot setting is EMIF FAST BOOT.

When failed, we got the following information from JTAG Debugger.
(1) DSP can't escape from a loop in Rom Bootloader.
      The loop address is 0x805BC0 from 0x805BAE.
(2) BOOTCMPLT value is 0x00000000.
      An error does not occur. Boot process is not completed.

I can not understand why (1) rises.
About this matter, could you please give us any advice?

Thanks in advance.

 

  • Let's me rephrase it due to no answer.

    DM648 hangs up around 0x00805BC0-0x00805BAE on the emif fast boot.
    These addresses show the internal built-in rom bootloader.

    Please give us information what is doing in those addresses.

    Additional information
     ・DSP Rev         TMS302DM648ZUT
                       $N11-01A240W
     ・Bootloader Rev  0x00003070

    This hang-up is a very rare case, but it is sure to occur on a specific board.
    We want to find out what is wrong on our board.

    Thanks in advance.

  • Can you copy/paste from the disassembly window to show where it's executing, i.e. the instructions?  Can you also grab the corresponding CPU registers?

    I think that location corresponds to code that is turning on the power domains so my guess is that it is stuck waiting for a domain to transition.  I hope your copy/paste of the disassembly and registers will help me figure out which domain is having an issue and perhaps we can find some kind of hardware or configuration issue related to that domain.

  • Thanks for your reply.
    Disassembly windows is following.
    Unfortunately we were unable to get CPU registers.

    00805BAE 018C                LDW.D1T1      *A7[0],A0
    00805BB0 00002F58            AND.L1        1,A0,A0
    00805BB4 2521                ADD.L2        B2,1,B2
    00805BB6 0826     ||         CMPEQ.L1      0,A0,A1
    00805BB8 4FC9                CMPLTU.L2     B2,B7,B0
    00805BBA 1489                AND.L2X       B0,A1,B0
    00805BBC ED500408            .fphead       p, l, W, BU, nobr, nosat, 1101010
    00805BC0 BDEB         [ B0]  BNOP.S2       0x805BAE (PC-18 = 0x00805bae),5

    Is it enough for you with this information?

    Thanks in advance.

     

  • hi

       I have encountered the same problem with you .

    I have a customed board, I use the demo "  C:\dvsdk_1_11_00_00_DM648\flashutil\DM647_8\CCS\DM648_NORWriter" to burn theUBL.ais and My project.ais.

    It seems that DM648 can not boot throng EMIFA flash.  When i attach the emulator to the DSP through CCS. It stops at a forever loop

    00805B20 0000E760   
    00805B60 000001BD    sat, 1110011
    00805B80 0000EE60    p, l, W, BU, br, nosat, 0011111
    00805BB0 00002F58            AND.L1        1,A0,A0
    00805BB4 2521                ADD.L2        B2,1,B2
    00805BB6 0826     ||         CMPEQ.L1      0,A0,A1
    00805BB8 4FC9                CMPLTU.L2     B2,B7,B0
    00805BBA 1489                AND.L2X       B0,A1,B0
    00805BBC ED500408            .fphead       p, l, W, BU, nobr, nosat, 1101010
    00805BC0 BDEB         [ B0]  BNOP.S2       0x805BAE (PC-18 = 0x00805bae),5
    00805BC2 A5AA         [ A0]  BNOP.S1       0x805BCC (PC+44 = 0x00805bcc),5

     

    The PC  register is 0x00805bb0 .

     

    Have you figured it out ?    How do you solve this problem?

     

    many thanks

  • I did some more digging on this issue.  That code is actually trying to read data from the UART.  So it would appear that your primary boot failed (not sure why at this point) and the bootloader attempted to boot from UART as a last resort.

  • hi

    Brad

    thanks for reply. I think you might be right.  The code in the  loop endlessly read for the UART register LSR,the register address is 0x02047014,and test the LSM,that is DR.

    if there are no data receieved from UART,The code cannot escape from the loop.

     

    00805BAE 018C                LDW.D1T1      *A7[0],A0
    00805BB0 00002F58            AND.L1        1,A0,A0
    00805BB4 2521                ADD.L2        B2,1,B2
    00805BB6 0826     ||         CMPEQ.L1      0,A0,A1
    00805BB8 4FC9                CMPLTU.L2     B2,B7,B0
    00805BBA 1489                AND.L2X       B0,A1,B0
    00805BBC ED500408            .fphead       p, l, W, BU, nobr, nosat, 1101010
    00805BC0 BDEB         [ B0]  BNOP.S2       0x805BAE (PC-18 = 0x00805bae),5
    00805BC2 A5AA         [ A0]  BNOP.S1       0x805BCC (PC+44 = 0x00805bcc),5

    The register value are :

    A7    02047014   it is the UART  LSR  reg address

    B2    006FCE52   I think  it is a counter, when below  B2 0x01000000,it will  endlessly polling the LSR's  LSB. if zero  continues loop

    B7    01000000

     

    Brad May I ask you  some questions.

    1)  can you help explain why the emif boot failed?.   

    2) Do you have the ROM bootloader code in C?

    3) I use the tektronic oscilloscope  to watch UARTTX and UARTRX,  They are always high  ,no start bit  and data .  Let alone BootME.

    4) If I want to use the EMIF direct boot mode(not fast boot), Do you have any experience and DEMO.

     

    Thanks

    li tian

  • LI TIAN said:
    1)  can you help explain why the emif boot failed?.  

    I can't, at least not yet.  I would imagine something is wrong in the AIS image.

    LI TIAN said:

    2) Do you have the ROM bootloader code in C?

    Yes, though I cannot post it on the forum or anything.  If you have a local FAE perhaps you could work with him/her to see it.

    LI TIAN said:

    4) If I want to use the EMIF direct boot mode(not fast boot), Do you have any experience and DEMO.

    You might want to look at this thread:

    http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/112/p/11700/45721.aspx#45721

     

  • Hi ALL

    hi  Brad Griffis

    May I ask you further more on this problem of DM648 EMIF boot .

    I think the UBL AIS   file I have burned into flash  are correct. what do  you think?

    I have dumped a section of memory of FLASH.

    0xA0000000    0x41504954    0x58535901
    0xA0000008    0x00A0C180    0x00000788
    0xA0000010    0x5F433249    0x5F504345
    0xA0000018    0x74697277    0x3A292865
    0xA0000020    0x6D695420    0x74756F65
    0xA0000028    0x69617720    0x676E6974
    0xA0000030    0x206F7420    0x74696E69
    0xA0000038    0x65746169    0x69727720
    0xA0000040    0x0D2E6574    0x0000000A
    0xA0000048    0x5F433249    0x5F504345

    From the above ,we can figure out that  the AIS section load command 0x58535901   will led the ROM bootloader to write data to the address 0x00A0C180.

     

    but I can see from the memory window that the 0x00A0C180 address have not being written as the above content.

    0x00A0C180    0xC8A7F6A9    0xBA69EF91
    0x00A0C188    0xFD3F521B    0x8E834970
    0x00A0C190    0x05D6F7C5    0xCE4B96A1
    0x00A0C198    0xFE9E2848    0xEF1437C3
    0x00A0C1A0    0xAF34DF1A    0x9EA0C179
    0x00A0C1A8    0x52675F3F    0x6D3536DD
    0x00A0C1B0    0xC4F88C97    0xD5A1F835

     

    could any one help analyse this problem . 

     

    thank you

     

    tianli



  • The bootloader will log errors in the BOOTCMPLT register.  See Section 7 "Debugging Boot Failures" in the DM648 Bootloader App Note.

    Also, see Section 5.1 "AIS Boot Image for EMIFA ROM Boot".  Notice that the first word should specify the memory width.

  • Thanks  Brad

    I figured it out .Thank you  very much.

    There is something wrong with my own UBL.ais file .

    The two files i burned into flash are both application AIS. The first one should be UBL.ais.When using the create_ais.bat,I made a mistake.

    This pb happens like this :

    1) I modified the project "C:\dvsdk_1_11_00_00_DM648\flashutil\DM647_8\CCS\UBL" for my own board. I got UBL_256MB.out

    2)I copyed UBL_256MB.out to  "C:\dvsdk_1_11_00_00_DM648\flashutil"

    3) I execute two instructions in the command line,

               first I want to  generate the new UBL.ais   so  I use "C:\dvsdk_1_11_00_00_DM648\flashutil>create_ais.bat UBL_256MB"  I got UBL_256MB.ais"

              I mistakenly regard this ais file was the UBL. It is an application AIS.  The first byte of this AIS file was not 0x00000000.

       If you lookinto the file "create_ais.bat",it will create two AIS file one time . firstly use UBL.out ,secondly use UBL_256MB.out.(There exists a file named UBL.out at the same directory,it is the original file used for lyrtech board)

    Thanks all

    li tian

     

     

  • Li Tian,

    Thanks for posting details as to what the exact issue was.  I'm glad you were able to find it.

    Disaku,

    In light of this new info I hope that helps you resolve your issue as well.

    Best regards,
    Brad