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.

Connecting and debugging Low Level driver on TI814x EVM board

Hi,

 

Guddi here, I have an TI814x EVM board, Blackhawk USB560-M emulator and CCS v5.0.2 IDE.

I have written Low Level driver for PLL configuration. I am able to create configuration file i.e. TI814x.ccxml file.

I can able to compile my code without any errors, but while starting debugger and while connection establishment and I am getting 

"No source available for "0x20088"" as shown below .

I dont know how to proceed.

 

Thanks in Advance,

Guddi :)

  • Make sure adaptive clocking is turned on:

    http://processors.wiki.ti.com/index.php/XDS560#Q:_Does_the_XDS560_support_ARM_Adaptive_clocking.3F

    I have found that making PLL modifications without adaptive clocking generally results in very unstable JTAG, so there's a pretty good chance this could be your issue.

    Brad

  • Hi Brad,

    1) I followed the same and set the adaptive clock as "Adaptive without any limit at all", option for "TCLK Frequency".Still the same problem persists i.e. "No source available for 0x20008".

    2) One more thing, how to enter into "Supervisor/Priviledge mode" from user mode on TI8148.

    3) Is GEL file executed in  "Supervisor/Priviledge mode"??

    Thing is I am writing a Low level driver for different PLL modules i.e. for DDR, DSP, ARM.. etc..

    for that to configure I need to unlock and lock some "MMR_LOCK and PLL_MMR_LOCK" registers, if I make the change in GEL file and execute, it works fine but from the driver code I cant able to change/configure the values.

    Please  let me know about this.... :)

     

    Regards,

    Guddi

     

  • Guddi said:

    1) I followed the same and set the adaptive clock as "Adaptive without any limit at all", option for "TCLK Frequency".Still the same problem persists i.e. "No source available for 0x20008".

    That's not an error.  It's telling you that when you connected to the device the Program Counter (PC) was pointing to address 0x20008.  If you have not loaded program/symbols then there is no way for CCS to know what source code corresponds to PC = 0x20008 and so it displays that warning.

    Sorry, not sure why I didn't recognize that before!  In any case my original advice to make sure adaptive clocking is enabled is still a good thing so make sure to keep it that way!

    Guddi said:

    2) One more thing, how to enter into "Supervisor/Priviledge mode" from user mode on TI8148.

    There are a bunch of controls under Tools -> Advanced ARM Features.  I don't recall at the moment if this was one of the options or not.  Check it out.

    I believe that after CPU reset the ARM should be in Supervisor mode.  If you right-click on your target CPU you can enable "Halt on Reset", like this:

    Note that almost EVERYTHING is disabled through the PRCM after a reset, i.e. the ROM code enables parts of it.  For example, even the internal RAM is disabled so you cannot load a program to internal RAM without first enabling it through a gel file.

    Guddi said:

    3) Is GEL file executed in  "Supervisor/Priviledge mode"??

    GEL is executed in whatever state the CPU happens to be in.

     

  • Hi Brad,

    Thanks for your suggestions.

    Brad said:

    I want to execute driver in Supervisor/Priviledged mode because we are unable to configure the registers i.e. values are not getting updated.

    Is there any asm file that we have to include and call so that we can jump into supervisor mode and run our driver so that we can configure those registers??

    We are testing the drivers(Low Level Driver) which is OS independent on TI8148 EVM board.

    Please let me know how to do it.

      

     

    Regards,

    Guddi... :)

     

     

     

     

     

  • Just reset the device through CCS to get into supervisor mode.  You end up in abort mode because you don't have any valid code programmed into the device.  There are ways of doing this programmatically but I don't have any readily available examples.  This is obviously done inside Linux, etc.

  • Brad said:

    As i see other team, they are using OMAPL-138 (ARM-9 architecture) processor, they are using initStack, initHandler and initVector asm  files and are calling

    _cal_swi(ARM_PRIV_MODE_KEY) where ARM_PRIV_MODE_KEY = 327680 to jump to supervisor mode.

    Is there any asm files or calls which is for TI8148 ARM (ARMv7 architecture) processor.

     

    Regards,

    Guddi :)

  • Guddi said:
    Is there any asm files or calls which is for TI8148 ARM (ARMv7 architecture) processor.

    Sorry, no there is not.  We do not currently support bare metal programming of this device.  I recommend using the Linux BSP we provide or else you will need to contract an ARM expert.

  • Brad,

    Actually we got the solution i.e. from ARM website he says to use "SVC" instruction.

    We had written an asm function where we were configuring "CPSR" register for supervisor mode. Since we were in "User mode" we could not suceed

    in updating CPSR register.

    So we tried "SVC" instruction, we could successfully update the "CPSR" register after that we are getting "No source available for 0x20084" i.e. "PC" is pointing to that address where we have no code/handler and hangs.

     

    Regards,

    Guddi :)