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.

how to solve the error "No source available for "0x978e" "?

Other Parts Discussed in Thread: CC3200, UNIFLASH, CC3200SDK

I am working on my own design for cc3200. I am using CCS and have connected all JTAG (4 Pins) of my CC3200 board to CC3200 Launchpad. when I try to debug the project from CCS it is giving me error as "No source available for "0x978e" ". I can't understand what does it mean?

Can anyone help me to solve this issue.

another problem I am facing is how to use uniflash to load serial flash on my cc3200 board. I have connected UART pins & GND of my cc3200 board to J6, J7 (pin 1) and GND of IT cc3200 Launchpad.

I also have XDS100v2 but do not know how to connect it to  my CC3200 board.

I am really close to deadline. If anyone can help me here.

  • PARTH JOSHI said:
    "No source available for "0x978e"

    You probably tries to Step-Into a Function from a Library from which there is no Debug information available, or you have disabled debug information for this source.

    Enable Debug information, tries to locate the function source code or Step-Over the function call or put a Break point after the call and Run to it.

  • I will try that now. but same code without any modifications run proper on ti cc3200 launchpad. Is it possible that though the code is running proper on one hardware and fails in my designed cc3200 hardware.
  • Does this appears when debug stepping?

    On the other hand it looks like the address 0x978e is not assigned to a valid location. Maybe you are missing an ISR and your custom board reaches a situating in which it want to call this address. Maybe in conjunction with your UART problem.
  • you are right Leo. It appears while debug stepping only. what should I do.
  • And it also happens when you stepping on the same lines using the CC3200 LaunchPad?

  • no error occurs if I am using cc3200 Ti Launchpad.
  • Does it happen randomly in the program or only on specific code lines?
    And if on specific code lines, can you post these lines.
  • I see you have not connected your custom board Vcc to your LaunchPad Vcc, this can give problems, it’s better to source Vcc from your LaunchPad when using the LaunchPad communication.
  •  I tried with VCC & Reset pin connected  between both boards. still It gives error at fixed line. I am uploading detail and wiring dia as well.

  • I was loading "wlan_station" Project. I changed the project still error did not changed.
  • I changed the hardware (same design but another board ) still no modification.
  • there was one point in our discussion.
    "Maybe you are missing an ISR and your custom board reaches a situating in which it want to call this address. Maybe in conjunction with your UART problem."

    what is ISR and how do I solve this problem. can anyone share info or guideline for this?
  • An ISR is an Interrupt Service Routine, but I think they are all handled by RTOS.

    I was looking to your connection schematic and have one question; You connect J6.1 and J7.1 but shouldn’t that be J6.3 and J7.3?

  • I am in debug mode only and hence JTAG pins are used UART is not. am I right?
    also I J6.3 & J7.3 are for boot loader ( which I assume is external loader ) and I am using cc3200 Ti Launchpad itself to load serial flash that's why I am using J6.1 & J7.1; correct me if am wrong..
  • If you want to connect UniFlash via the LaunchPad to load your custom board’s serial flash it must be J6.3 and J7.3. J6.1 and J7.1 are connected to the BoosterPack headers and probably unused.

    To load your program into your custom CC3200 RAM and debug it, you only need JTAG..
    But the JTAG connections must be very well don, short as possible, low capacitance –danger if using flat-cable.
  • Thanks Leo
    In that case I am ready to drop JTAG connection.

    Lets just focus on loading serial flash then. I am connecting J7.1 & J6.1 (where pin 1 as a pin towards USB & FTDI circuit and pin 3 as a pin towards controller which I think for booster pack ) to my board. for above uploaded connection dia. I take the pin 1 as a pin towards USB & FTDI.

    should I still move to J7.3 and J6.3?
  • With Uniflash neither I can format my board nor I can get version successfully. how can I solve that?
  • At the LaunchPad, from both Jumpers, the pins 1 are connected to the BoosterPack header, the pins 2 are connected to the CC3200 and the pins 3 are connected to the USB chip for the PC connection.
    Normally you have closed both pins 2&3 (CC3200<->USB).
    To connect the USB with your custom board, you must remove the Jumpers and connect both pins 3 (USB) to your custom CC3200.
  • Yes Leo that's right I am doing the same all wrong was communication error giving I used wrong pin numbers.
  • But now, I’m curious, does UniFlash works with your custom board?

  • no UniFlash is not working. It cannot format my board neither I can update the service pack. Even get version also failed.
  • That’s ***!

    To read the version only the USB-serial connection (J6&J7) to CC3200 is required, you can disconnect all the JTAG wires (to be sure nothing is wrong here).
    SOP0 & SOP1 connected to GND, and SOP2 (GPIO_25) pulled-up with a small resistor (270R) to Vcc.
    If it still not work post the schematic of your custom board.
  • I have kept most of the component reference name same as the TI board. And  all NET are lable to individual trace.CC3200_sch.pdf 

  • Did check only the important connections, and can’t see a problem but don’t know the resistor values but it’s anyhow good to check the voltage at SOP0, SOP1 and SOP2.

    You take power from J13.1 but the jumper must also be placed, VCC_LDO_3V3 & VCC_BRD must be available.

    Check if TxD & RxD not reversed and if possible check with a scope if there is some signal.

    The CC3200 must proper run, check all supply voltages including the DCDC ones, and if possible check the oscillators.
    I don’t think the other GPIO pins does care but you can compare the voltages with the LaunchPad.

    When ‘Get Version’ does UniFlash ask you to Reset the device?
  • OK Thanks guys my board get formated successfully. now I can use uniflash properly.
  • Good to hear you have solved it, but again I’m curious and also you will help others who have a similar problem.
    What finally solves your problem?
  • there was a faulty component responsible for causing voltage level issue on SOP pins.
  • Thanks! This will help for others to understand that the SOP pins are really important.
    And I guess this also solves your Debug via JTAG problem.
  • Oh no. I am still getting "No source available for "0x978e" " at fixed location. I am still trying to solve it.
  • To determine if it is a software or hardware problem; Can you (serial) flash the software and Run it?
  • NO!!. Actually I was try to solve the same issue. This is what I get while flash the software.

    ========================================================================
    [22:44:24] Begin Program operation.
    [22:44:25] INFO: Checked for update config groups: []
    [22:44:25] INFO: List of files to be generated: []
    [22:44:25] INFO: > Executing Operation: Connect
    [22:44:25] DEBUG: waiting and clearing uart rx buffer
    [22:44:27] INFO: setting break signal
    [22:44:27] INFO: --- please restart the device ---
    [22:44:27] DEBUG: wait for ack
    [22:44:27] INFO: connection succeeded
    [22:44:27] INFO: getting storage list
    [22:44:27] DEBUG: wait for ack
    [22:44:27] INFO: > Executing Operation: Init
    [22:44:27] INFO: reading version info
    [22:44:27] DEBUG: wait for ack
    [22:44:27] INFO: DEVICE CC3200 ES1.33
    [22:44:27] INFO: reading version info
    [22:44:27] DEBUG: wait for ack
    [22:44:27] DEBUG: Bootloader version is 2, 1, 4, 0
    [22:44:27] DEBUG: It's a CC3200 device: PG1.33 or higher
    [22:44:27] DEBUG: Switch UART pinmux to APPS
    [22:44:27] DEBUG: wait for ack
    [22:44:27] DEBUG: wait for ack
    [22:44:28] DEBUG: Switch to NWP bootloader complete
    [22:44:28] INFO: reading version info
    [22:44:28] DEBUG: wait for ack
    [22:44:28] DEBUG: Bootloader version is 2, 0, 4, 0
    [22:44:28] DEBUG: raw storage write
    [22:44:28] DEBUG: wait for ack
    [22:44:28] DEBUG: status request
    [22:44:28] DEBUG: wait for ack
    [22:44:28] DEBUG: BlockSize is 4096, number of blocks is 16
    [22:44:28] DEBUG: erasing 13 blocks starting from 0
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: wait for ack
    [22:44:29] DEBUG: status request
    [22:44:29] DEBUG: wait for ack
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: 0
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: wait for ack
    [22:44:30] INFO: > Executing Operation: Program
    [22:44:30] INFO: > File name: /sys/mcuimg.bin, Update: true, Erase: true
    [22:44:30] INFO: > Erase File: /sys/mcuimg.bin
    [22:44:30] INFO: erasing file "/sys/mcuimg.bin"
    [22:44:30] INFO: deleting file "/sys/mcuimg.bin"
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: Error -49 : No device is loaded
    [22:44:30] INFO: erase file completed
    [22:44:30] INFO: > Size of file = 59632
    [22:44:30] INFO: > Update File: /sys/mcuimg.bin
    [22:44:30] INFO: Downloading file "/sys/mcuimg.bin" with size 59632
    [22:44:30] DEBUG: sending start download command
    [22:44:30] DEBUG: Granularity conversion: G(256) * N(233) = 59648
    [22:44:30] DEBUG: Access code is 3
    [22:44:30] DEBUG: wait for ack/nack
    [22:44:30] DEBUG: receive nack
    [22:44:30] ERROR: Open operation failed
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: Error -49 : No device is loaded
    [22:44:30] INFO: > Executing Operation: Disconnect
    [22:44:30] DEBUG: disconnecting from device . . .
    [22:44:30] DEBUG: wait for ack
    [22:44:30] Operation Program returned.
    ==============================================================================================
  • That’s a long list. You maybe already tried to flash a good known working example program?
    If that all fails it must be a hardware/PCB problem. Do you have a print of the PCB?
  • sorry to upload long one here are main lines...

    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: Error -49 : No device is loaded
    [22:44:30] INFO: erase file completed
    [22:44:30] INFO: > Size of file = 59632
    [22:44:30] INFO: > Update File: /sys/mcuimg.bin
    [22:44:30] INFO: Downloading file "/sys/mcuimg.bin" with size 59632
    [22:44:30] DEBUG: sending start download command
    [22:44:30] DEBUG: Granularity conversion: G(256) * N(233) = 59648
    [22:44:30] DEBUG: Access code is 3
    [22:44:30] DEBUG: wait for ack/nack
    [22:44:30] DEBUG: receive nack
    [22:44:30] ERROR: Open operation failed
    [22:44:30] DEBUG: status request
    [22:44:30] DEBUG: wait for ack
    [22:44:30] DEBUG: Error -49 : No device is loaded
    [22:44:30] INFO: > Executing Operation: Disconnect
    [22:44:30] DEBUG: disconnecting from device . . .
  • ==========================
    Do you have a print of the PCB?
    ==========================

    do you want gerber file for PCB? all four copper layers?

    Which part of the board can cause this error Flash or controller ( UART )? or reset circuit ?
    can you share some hypotheses then I can check them?
  • PCB errors could be; Wrongly placed capacitors. Wrong crystal routing. Bad copper pour ground planes/GND connections. Etc…

    Your serial connections works, but looks like with errors. Reason can be error in baud rate -> crystal oscillator.

    Your JTAG connection works, you can download a large file. I don’t know if crystal frequency has influence on this.
    The debugger stops at a fixed location with the same response. Reason can be that you have started a serial communication in your software before this point and that an unhandled communication exception occurs -> crystal oscillator.
    A bad running processor will give random errors, so it must have to do with the use of a module and/or an interrupt which is unhandled.

    Try;
    Create a (very) small program with only some GPIO use. Try to Flash and/or JTAG debug.
    Run a simple timer and output this to a GPIO pin and check with a scope the signal, here you can see the behavior of the oscillator. Output frequency as high as possible but not too high that your scope can’t display this properly.
  • I tried loading small codes like led blink and so but still same error occurs for location 0x978e. worst part is I still can not understand what this error means!

    is it mean that it can not read/write this location?
    is this location a internal memory or external flash?
    is this mean mis communication with UART?
  • I tried a blank prog.
    ==============================
    int
    main()
    {
    while(1)
    {

    }
    return 0;
    }
    =============================

    this prog also gives me error of "No source available for "0x978e" ".
    how can I make my system ready to run with JTAG connections in Release [Active] configuration.
  • ================================================
    /* Application uses internal RAM for program and data */
    /* RAM Blocks are modified for CC3200 ES 1.33 (XCC3200JR) which supports 240KB (256-16) APP RAM size */
    SRAM_CODE (RWX) : origin = 0x20004000, length = 0x19000 /* 100 KB */
    SRAM_DATA (RWX) : origin = 0x2001D000, length = 0x23000 /* 140 KB */
    ===========================================================

    this is the part from cc3200v1p32.cmd

    from this I learn that memory 0x978e is an internal RAM not the external flash. am I right?
  • The address 0x978e looks to me an internal ROM address, and probably handles an exception. You get this "No source available for "0x978e" " while you don’t have the source code for the internal ROM. You can have a look in the disassembler but if this helps you much!?

    Do you get this error also when you Load and just Run the program, not stepping? And does the Blinking LED continues blinking?

  • You could have a look with the Memory browser from location 0x0 till 0xFFF if you can find the 32-bit address 0x978e and then at which place you find it.
  • ================== according to data sheet======================
    The CC3200 device maintains a proprietary file system on the SFLASH. The CC3200 file system stores
    the service pack file, system files, configuration files, certificate files, web page files, and user files.

    is it possible that any error in one of these files can cause this error in debug mode ?

    using uniflsh service pack is updated and verified OK. does this ensure that there is no error in files stored in SFLASH?
  • PARTH JOSHI said:
    is it possible that any error in one of these files can cause this error in debug mode ?

    When debugging via JTAG all software is loaded into RAM and the serial Flash is unused.

    PARTH JOSHI said:
    using uniflsh service pack is updated and verified OK. does this ensure that there is no error in files stored in SFLASH?

    I guess yes!

  • of course i did look in memory browser; I have uploaded image of memory browse in very same thread on Apr 10, 2015.
    but you will agree It is not much helpful idea.
    0000978e: E7FEE7FE UDF #61054

    ===============================================================
    You could have a look with the Memory browser from location 0x0 till 0xFFF
    ===============================================================
    I did not find "978E", nor its decimal value.
  • Let me summarise our discussion at this point.
    ERROR Definition 1: I can not format or get version using uniflash and Ti FTDI circuit as loader; connected to my cc3200 (my own designed and produced) board.
    STATUS : solved.
    ERROR: improper voltage level at SOP pins due to faulty components.

    ERROR Definition 2: using CCS. In debug mode that is JTAG connection from TI board to my board; error message received is "No source available for "0x978e"".
    STATUS : unsolved.

    ERROR Definition 3: using uniflash while program file to my board; fatal error occurs. (when any of the Erase, Update or Verify of any system file is ticked)
    error message received in console
    [18:49:14] INFO: > File name: /sys/mcuimg.bin, Update: true, Erase: false
    [18:49:14] FATAL: > File "location on local machine" does not exist on local File System
    [18:49:14] INFO: > Executing Operation: Disconnect
    STATUS: unsolved

    Progress: at least we are sure that error definition 2 & 3 are irrelevant. Because error 2 is relative to internal ROM and error 3 is relative to external SFLASH.

    My priority is to solve error 3 and then error2.
  • PARTH JOSHI said:
    I tried a blank prog.
    ==============================
    int
    main()
    {
    while(1)
    {

    }
    return 0;
    }
    =============================

    Did you try to Flash this?

  • PARTH JOSHI said:
    I tried loading small codes like led blink

    Did you try to Load (JTAG) and just Run the program, not stepping? And does the Blinking LED continues blinking?

    Did you try to Flash this?

  • no I did not flash it. I load it using (JTAG).
  • Then try with or without Erase.