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.

AIS booting on DM648 for flash(LH28F160BJE-TTL90)

Hi,
 
This is regarding Flash booting..for Target board TI's DM648 board.
 
 
1. On flash booting, the ais image is parsed successfully by the UBL.
 
2. It also finds the correct application jump address in DDR(I checked the value of gEntryPoint it is updated with the address of C_int00 of appliaction  ). But the application does not run.

3.While debugging I checked  DDR ,PLL,EMIF ,PINMUX and other settings are set correctly by the UBL and the application code has also been copied to the DDR correctly.This thing I checked through DPREAd command
 
4.Accessing DDR address via BAR2 by the follwoing command(some offset)
 
DPWRITE -L -I BAR2 0x0485d4 0xE0000000
 
DPREAD -L BAR5 0x000073A0 10
(NOTE:Here 0xe00073a0 is the address of array in the main application where the values are memset to 01..and so on...  )


When I run the same UBL with the emulator, it even correctly copies the application code to the DDR and runs it correctly.

I mean After boot process.I restart the target PC.And then again from other system connect thru CCS and just run the UBL . and I could see the values are set correctly in application's main
 
function.(.I could check this from target  PC with the same above mentioned command)
 
 
5.As of my understanding UBL does not seem to jump to that image even after finding the correct app entry point and after the calls:
   bootFunction = gEntryPoint;
            (*bootFunction)();
 
I have checked few communities and they too faced same problem.But one of the solution I could find was ..setting some callback function in HWI/NMI in dsp/BIOS settings.But I am not sure of how to do this.
 
and other suspect would be the values that we set in INIT functions in PLL ,DDR2 ..may be with respect to timing constraint or so ...
 
 
Please can u suggest some thing on it...
 
6.I have also updated code generation tool to 6.1.5.the latest
7. kept the emulator connected, power-cycle the board to boot from flash, then open CCS and again close CCS. Then the application in flash runs correctly.

In CCS I included  gel file but did not  run any code. Just open and close CCS helps to run the flashed application. (Sometimes It worked even without gel file too. Just connect and disconnect CCS )

 

Any clue...??

 

 

Regards,

Geeta

  • Hello,

     

    I could see one more strange thing.

    On completion of flash burn .

    I restarted target PC and then power-on emulater and connect CCS.After connecting to CCS and with out gel file  added . I did  Debug->CPU reset and then disconnected CCS.Then I could see the application is running on target PC .correctly.

     

    Any clue??

     

    Regards,

    Geeta

  • Hi Geeta,

    I'm not sure I fully understand the nature of the problem you are facing. My first suggestion is to follow the suggestions found in another thread here (I know you posted there, but I still want to mention this as part of due diligence). There are some pretty important tips in my findings which you should follow in order to boot successfully.

    Are you working with the DM648 EVM or on custom hardware? You should have an easier time working with the EVM as the software is designed specifically for it. Note that the UBL approach would not be necessary if not for the MSP430 built onto the DM648 EVM. Because the MSP430 controls some peripherals and such the UBL must take over the boot process as the ROM Bootloader is not aware of it.

    CCS does not do much when a GEL file is not loaded. CPU->Reset will reset the Program Counter to address 0x0, and it may reset some of the MMRs but I believe that's about it. I cannot think of anything it would do that would be critical in the boot process.

  • Your description sounds as if the reset you perform through CCS is fixing your issue.  This might indicate a problem with your power-up sequence or your reset.  You should double-check your power ramp-up and make sure that reset is being held for a sufficiently long period of time.

    Do you have a reset button on your board?  Is it possible to do a hardware reset after power-up rather than a CCS reset?  That would help solidify (or disprove) my theory.

    Brad

  • Hi TimHarron,

    Thanks for response..

    I am working for custom Hardware and yes ...UBL peripheral configuration values are modified as per the hardware .Yes I have edited device file .For this Custom hardware there is PLL2 settings too.

    and almost all values differ from original values found default in flashutil.

     

    Yes CPU reset ..it reset the Program counter to ROM base Address 0x00800000.But,and also  after I do CPU -reset and then disconnect CCS ..on the other side on PC ..I could see application is working correctly .

    So i am struck here...thinking this could be cause....

    And also in the same thread u mentioned ...Subashini came accross the same problem and she could fix it through HWI/NMI putting call_back function ..But I am not aware of this...Can u please suggest me

    which could be the right way to proceed.....?

  • Hi Brad,

     

    Thanks for your Response.

    Yes you are righte reset which I perform through CCS is fixing the issue.And also found that there is no reset button on board.So how shall I proceed to do the same...?

    Regards,

    Geeta

    Brad Griffis said:

    Your description sounds as if the reset you perform through CCS is fixing your issue.  This might indicate a problem with your power-up sequence or your reset.  You should double-check your power ramp-up and make sure that reset is being held for a sufficiently long period of time.

    Do you have a reset button on your board?  Is it possible to do a hardware reset after power-up rather than a CCS reset?  That would help solidify (or disprove) my theory.

    Brad

  • Perhaps you could short the /RESET pin to ground.  (Be careful to short the correct side of the resistor so you are not shorting power to ground!)  That would be a quick hack to perform a reset without the need for CCS.

    More importantly I think you need to capture the power rails and the reset line during power-up to make sure they meet the timing/voltage requirements.

  • Hi,

     

       The problem we found on our custom hardware was that the NMI pin on the DM648 had been triggering a false interrupt. So, in the tcf file, you can add an dummy function to process this HWI1 (NMI).

    Also, did you try a simple LED-blinking kind of program which runs only from the internal RAM and does not use any TCF files.

    To debug, you can also use your emulator in Real-time mode and check the program counter.

     

    Regards

    Suba.

     

     

     

  • Hi Subashini,

     

    Actually problem was with exception Routine.In the properties section of Hardware Intruppt Rountine Manager.

     

    "Enable exc module exception processing "  this option was enabled .After disabling this (Uncheck).Applciation is working fine .

     

     

    Thanks for al l your support

    Best regards,

    Geeta

  • Hi Subashini,

    Initial problem which I mentioned in this forum was solved..Now I am given with new custom board.

    which has flash memory of 8MB and 8MB which is not continious.

    Well I used TI norwriter ..and modified the same norwriter to burn UBL and application on to this new custom board.

    I used first 8MB flash memory only.Now I want to check ..whether application is running correctly or not....But ..before that

    I would like to check with simple LED -blinking program..which u told in your earlier mail.

    Can you suggest me..what actually LED blink does and how to start that application .

    Waiting for your reply.

    Regards,

    Geetha