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.

TICSPRO-SW: GUI Interface not loading

Part Number: TICSPRO-SW
Other Parts Discussed in Thread: LMX2595, USB2ANY

I've been using the TICS Pro software on several machines for months without any problems. I now can't get TICS Pro software to work on any of those machines, I get stuck on the GUI loading screen. The GUI never initializes.  I have also tried uninstalling and reinstalling the software, but no success. 

I seem to be having the same issues from this previous question (+) TICSPRO-SW: GUI interface not loading - Clock & timing forum - Clock & timing - TI E2E support forums

I tried these suggestions, but am still not able to get the GUI to successfully load. Please help!

  • Hi Sofia,

    Sorry to hear that you're having this problem. I'd like to ask a few questions to get a better idea of what's going on:

    • What device profile(s) is TICS Pro trying to open across all of these machines?
    • If you try to start TICS Pro without connecting a device/board to the computer, does it still get stuck?
    • Are there any recent entries inside of the ErrorLog00.txt file in the TICS Pro install directory? If so, please provide it here.
    • Did your machines receive any updates recently?

    In my experience, TICS Pro sometimes doesn't load when a device profile is corrupted or there are issues with the driver that interfaces the software with the board's communication bus. The former should be fixed by a clean reinstall however so that might not be the problem here. I have paged one of our software experts for additional support.

    Best,

    Evan Su

  • Sofia,

    I need some more details:

    • Are you getting stuck at the same point as the linked issue (loading Raw Registers on the device)?
    • Were you using the same method for automation as the linked issue (ActiveX COM automation) prior to your own issues manifesting?
  • Hi Evan,

    Thanks for your  help! 

    • I'm using the LMX2595 profile. 
    • TICS Pro gets stuck with and without a device connected.
    • I'm not seeing an error log after the re-install.
    • My machines may have had recent updates, but I was hoping issues related to that would be mitigated with the re-install I did yesterday. 
  • Hi Derek,

    Thanks for your help! 

    • I am getting stuck at the same "raw registers... loading" described in the linked issue. 
    • I have not been using automation methods at this time. I was hoping to use the GUI manually.
  • Thanks for the reply.

    Have you used any other TI GUIs that utilize USB2ANY on these machines?

    ---

    I have never been able to reproduce this issue on my own machines, so I've never had a chance to investigate what's happening. I'd like to build a custom version of the main TICS Pro binary that has more logging embedded, and have you run this on your machine. Once I have this put together, would you be willing to test it? It may take a few rounds to narrow in on the precise location of the hangup.

  • This sounds like a great idea! I'd be happy to test it out on my machine!

  • Hi Sofia,

    Thanks for the info, it's interesting how the previous thread also had a problem with a LMX25xx profile. I was wondering about the no-device-connected case because I recently dealt with a situation where an unstable driver would sometimes prevent TICS Pro from booting, but without a device TICS Pro would start in Demo Mode and then bypass the driver.

    Derek will get the modified TICS Pro to you when he is available, I hope we'll be able to find and fix the root cause.

    Best,

    Evan Su

  • I had hoped to provide a new binary today, but several things came up that prevented me from working on it. Working on getting you something we can test tomorrow.

  • No worries! Thank you both for the updates!

  • Let's try this. E2E won't let me upload this as an exe, so I'm uploading it as "TICS Pro.exe.txt".

    TICS Pro.exe.txt

    Steps to use:

    1. save "TICS Pro.exe.txt" to your drive somewhere
    2. open a cmd window in the folder and run:
      1. move "TICS Pro.exe.txt" "TICS Pro.exe"
    3. overwrite the existing TICS Pro instance in your install directory
      1. Should be located at C:\Program Files (x86)\Texas Instruments\TICS Pro
    4. run TICS Pro. A file called _debugLog.txt will be created in the main program directory.

    If TICS Pro loads successfully... I guess working as intended? Slight smile 

    If it doesn't, can you please upload the _debugLog.txt?

    My suspicion is that we were deadlocked on a condition in a separate thread that never occurs due to some race condition. There's a good chance that printf debugging causes the deadlock to resolve incidentally, so if this ends up working without issues I'd like to try one more build that removes the printf debugging and changes a few things in the code that I think might have been potential deadlock spots.

  • Thanks for this! It looks like I'm still having the same issue (stuck on raw register initialization). I've uploaded the debugLog. Please let me know if this provides you with enough information!

    FilePaths initialized
    Error log initialized
    Device selections initialized
    User Devices initialized
    Status Bar and default logging initialized
    TCP initialized from INI contents
    Beginning device load
    Loading Device LMX2572...
    Block writes enabled
    Read device.ini
    Main device INI located at C:\ProgramData\Texas Instruments\TICS Pro\Configurations\Devices\PLL + VCO\LMX2572\LMX2572\LMX2572.ini
    Main device INI read and parsed
    TCB file read and parsed (if exist)
    PLL page count = 0
    Clock distribution page count = 0
    Flex page count = 2
    Modes = 2
    Initializing default configuration menu
    Added mode 00: Default Mode 2021-8-15
    Added mode 01: Test Mode
    Default configuration menu initialized
    Initializing help menu
    Help menu initialized
    Populating all data structures
    Creating field POWERDOWN
    Creating field RESET
    Creating field MUXOUT_LD_SEL
    Creating field DBL_BUF_EN_5
    Creating field DBL_BUF_EN_4
    Creating field DBL_BUF_EN_3
    Creating field DBL_BUF_EN_2
    Creating field DBL_BUF_EN_1
    Creating field DBL_BUF_EN_0
    Creating field FCAL_EN
    Creating field ACAL_EN
    Creating field FCAL_LPFD_ADJ
    Creating field FCAL_HPFD_ADJ
    Creating field OUT_MUTE
    Creating field VCO_PHASE_SYNC_EN
    Creating field RAMP_EN
    Creating field CAL_CLK_DIV
    Creating field MUXOUT_CTRL
    Creating field LDO_DLY
    Creating field OUT_FORCE
    Creating field VCO_CAPCTRL_FORCE
    Creating field VCO_DACISET_FORCE
    Creating field OSC_2X
    Creating field MULT
    Creating field PLL_R
    Creating field PLL_R_PRE
    Creating field CPG
    Creating field VCO_DACISET
    Creating field VCO_DACISET_STRT
    Creating field VCO_CAPCTRL
    Creating field VCO_SEL_FORCE
    Creating field VCO_SEL
    Creating field PLL_N[18:16]
    Creating field PLL_N
    Creating field PFD_DLY_SEL
    Creating field MASH_SEED_EN
    Creating field PLL_DEN[31:16]
    Creating field PLL_DEN
    Creating field MASH_SEED[31:16]
    Creating field MASH_SEED
    Creating field PLL_NUM[31:16]
    Creating field PLL_NUM
    Creating field MASH_ORDER
    Creating field MASH_RESET_N
    Creating field OUTA_PD
    Creating field OUTB_PD
    Creating field OUTA_PWR
    Creating field OUTB_PWR
    Creating field OUTA_MUX
    Creating field OUTB_MUX
    Creating field INPIN_FMT
    Creating field INPIN_LVL
    Creating field INPIN_HYST
    Creating field INPIN_IGNORE
    Creating field LD_TYPE
    Creating field LD_DLY
    Creating field MASH_RST_COUNT[31:16]
    Creating field MASH_RST_COUNT
    Creating field SYSREF_REPEAT
    Creating field SYSREF_EN
    Creating field SYSREF_PULSE
    Creating field SYSREF_DIV_PRE
    Creating field SYSREF_DIV
    Creating field JESD_DAC1_CTRL
    Creating field JESD_DAC2_CTRL
    Creating field JESD_DAC3_CTRL
    Creating field JESD_DAC4_CTRL
    Creating field SYSREF_PULSE_CNT
    Creating field CHDIV
    Creating field VCO_CAPCTRL_STRT
    Creating field QUICK_RECAL_EN
    Creating field RAMP_TRIG_CAL
    Creating field RAMP_THRESH[32]
    Creating field RAMP_THRESH[31:16]
    Creating field RAMP_THRESH
    Creating field RAMP_LIMIT_HIGH[32]
    Creating field RAMP_LIMIT_HIGH[31:16]
    Creating field RAMP_LIMIT_HIGH
    Creating field RAMP_LIMIT_LOW[32]
    Creating field RAMP_LIMIT_LOW[31:16]
    Creating field RAMP_LIMIT_LOW
    Creating field RAMP_BURST_COUNT
    Creating field RAMP_BURST_EN
    Creating field RAMP_BURST_TRIG
    Creating field RAMP_TRIGA
    Creating field RAMP_TRIGB
    Creating field RAMP0_DLY
    Creating field RAMP0_RST
    Creating field RAMP0_INC[29:16]
    Creating field RAMP0_INC
    Creating field RAMP0_LEN
    Creating field RAMP0_NEXT
    Creating field RAMP0_NEXT_TRIG
    Creating field RAMP1_DLY
    Creating field RAMP1_RST
    Creating field RAMP1_INC[29:16]
    Creating field RAMP1_INC
    Creating field RAMP1_LEN
    Creating field RAMP1_NEXT
    Creating field RAMP1_NEXT_TRIG
    Creating field RAMP_DLY_CNT
    Creating field RAMP_MANUAL
    Creating field RAMP_SCALE_COUNT
    Creating field rb_VCO_SEL
    Creating field rb_LD_VTUNE
    Creating field rb_VCO_CAPCTRL
    Creating field rb_VCO_DACISET
    Creating field IPBUF_TYPE
    Creating field IPBUF_TERM
    Creating field MULT_HI
    Creating field FSK_EN
    Creating field FSK_SPI_LEVEL
    Creating field FSK_SPI_DEV_SEL
    Creating field FSK_MODE_SEL
    Creating field FSK_DEV_SCALE
    Creating field FSK_DEV0
    Creating field FSK_DEV1
    Creating field FSK_DEV2
    Creating field FSK_DEV3
    Creating field FSK_DEV4
    Creating field FSK_DEV5
    Creating field FSK_DEV6
    Creating field FSK_DEV7
    Creating field FSK_SPI_FAST_DEV
    Linked key base lookup: PLL_N
    Base key: PLL_N
      linking: PLL_N[18:16]
    Linked key base lookup: PLL_DEN
    Base key: PLL_DEN
      linking: PLL_DEN[31:16]
    Linked key base lookup: MASH_SEED
    Base key: MASH_SEED
      linking: MASH_SEED[31:16]
    Linked key base lookup: PLL_NUM
    Base key: PLL_NUM
      linking: PLL_NUM[31:16]
    Linked key base lookup: MASH_RST_COUNT
    Base key: MASH_RST_COUNT
      linking: MASH_RST_COUNT[31:16]
    Linked key base lookup: RAMP_THRESH[31:16]
      next: RAMP_THRESH
    Base key: RAMP_THRESH
      linking: RAMP_THRESH[31:16]
      linking: RAMP_THRESH[32]
    Linked key base lookup: RAMP_LIMIT_HIGH[31:16]
      next: RAMP_LIMIT_HIGH
    Base key: RAMP_LIMIT_HIGH
      linking: RAMP_LIMIT_HIGH[31:16]
      linking: RAMP_LIMIT_HIGH[32]
    Linked key base lookup: RAMP_LIMIT_LOW[31:16]
      next: RAMP_LIMIT_LOW
    Base key: RAMP_LIMIT_LOW
      linking: RAMP_LIMIT_LOW[31:16]
      linking: RAMP_LIMIT_LOW[32]
    Linked key base lookup: RAMP0_INC
    Base key: RAMP0_INC
      linking: RAMP0_INC[29:16]
    Linked key base lookup: RAMP1_INC
    Base key: RAMP1_INC
      linking: RAMP1_INC[29:16]
    Data structure populated
    Initializing pages
    Creating IronPython scope
    Successfully created IronPython scope
    Begin Raw Registers load
    Default Interface/Protocol is USB2ANY/SPI
    Building RegisterMap object
    Anticipate 126 registers
    Length in bytes of register transactions: 3
    Length in bytes of register addressing: 8
    LSB of addressing: 16
    Readback is enabled
    Laying out raw register page tree view
    Populating raw register page header
    Initializing communication interface
    

  • Okay, I think I know what happened. At some point in the last while, we updated the USB2ANY DLL and up-revisioned the firmware we use to a custom revision, 2.9.1.1. In most cases, USB2ANY at 2.7.0.0 should seamlessly upgrade the moment a 2.9.1.1 DLL opens a handle to the devices. However, it seems like the USB2ANY DLL is failing to properly display the firmware update dialog. For confirmation, can you check in Documents\USB2ANY\Logs\ and look for files named TICS Pro API Debug.txt dated from your most recent TICS Pro run, and post these files? There may be several. 

    Meanwhile, we can try to trick your system into displaying the firmware loader dialog. I have some python code below that should run on any system with 32-bit python installed. If you have a 32-bit python interpreter on your machines, can you try running this script? Note it must be 32-bit, as WinDLL will behave strangely in 64-bit python with 32-bit DLLs. All this script does is open a handle to the USB2ANY, which should automatically prompt a firmware upgrade dialog, so any USB2ANY you plan to use should be plugged in when you run this script.

    import ctypes
    u2adll = ctypes.WinDLL(r"C:\Program Files (x86)\Texas Instruments\TICS Pro\USB2ANY.dll")
    
    # Scan available USB2ANY devices, open the first one
    if u2adll.u2aFindControllers() > 0:
        handle = u2adll.u2aOpen(0)
    else:
        print("No controllers found!")
    
    if handle >= 0:
        u2adll.u2aClose(handle)

  • Hi again,

    Sorry for the delayed response! I can't find any files for the TICS Pro API Debug. I also have a 64-bit python interpreter and I did try your script and was unable to run it. Do you have any other ideas, or could you provide me with a 64-bit script?

    Thanks again for all your help with this issue!!

  • USB2ANY as provided by TICS Pro is 32-bit. ctypes.WinDLL cannot wrap a 32-bit DLL in a 64-bit interpreter. So there's not really a way to run the example unless you can get a 32-bit interpreter.

    Do you have anything in Documents\USB2ANY\Logs\ folder? Does this path even exist on your machine?

  • I'll look into getting a 32 bit interpreter. The Documents\USB2ANY\Logs\ folder and path do not exist on my machine. Is there somewhere else it might be located?

  • Thanks to your suggestion with the USB2ANY folder I was able to find the problem! I looked into the missing USB2ANY folder, and it turns out my company's IT department had blocked some access to modifications in the documents folder. They we able to give me access and all seems to be working again! Thank you so much for your help!

  • Sofia, that's fantastic. You've helped me narrow down the actual problem - USB2ANY writes a debug log to the documents folder, but had no graceful handling in case permissions were denied to write there. At some point soon I'll make an update to USB2ANY that handles log file permission denial gracefully. Thanks for all your help!