codex653

Forum Replies Created

Viewing 12 posts - 31 through 42 (of 42 total)
  • Author
    Posts
  • in reply to: Embedded Profiler Incredibly Slow #12942
    codex653
    Participant

    Got it. I ended up needing to do a repair/upgrade on VS, but now communication between VisualGDB and my Nucleo board is back up to speed. Unfortunately, I went to go test the Real-Time Watch window with the basic blinking LED program and still did not see any output. I have dynamic analysis set up and it is instructed to instrument all functions. I asked it to watch for when HAL_GPIO_WritePin gets called, but only get a blank screen, even after the function has been called multiple times already.

    Attachments:
    You must be logged in to view attached files.
    in reply to: Embedded Profiler Incredibly Slow #12933
    codex653
    Participant

    Oh, and it definitely does affect other programs, mainly Visual Studio 2017. It keeps crashing. However this is only localized to my desktop. The exact same code and VS2017 setup works perfectly fine on my laptop.

    in reply to: Embedded Profiler Incredibly Slow #12932
    codex653
    Participant

    By temporary directory do you mean my folder under C:\LocalTempProjects\embeddedUKFTesting\embeddedUKFTesting\VisualGDB\Debug\???  Or do you mean the Windows temp under C:\Windows\Temp, or maybe the VisualGDB temp folder in C:\Users\<myusername>\AppData\Local\VisualGDB?? I don’t want to accidentally delete the wrong thing.

    in reply to: Embedded Profiler Incredibly Slow #12910
    codex653
    Participant

    The logging worked this time. I’ve attached the output of the console.

    Attachments:
    You must be logged in to view attached files.
    in reply to: Embedded Profiler Incredibly Slow #12906
    codex653
    Participant

    I have reinstalled using the given file, yet no error message was displayed after the project properties window crashed.

    in reply to: Embedded Profiler Incredibly Slow #12903
    codex653
    Participant

    That does not appear to be the problem. I re-applied the license, got a “thank you for purchasing VisualGDB” message, restarted my computer, and still had the same issue.

    On another note, I noticed while digging through the ProfileDriver_STM32_HAL.cpp file that the default Timer was set to 2. Coincidentally, that is the same timer I use in some of the code that I am trying to profile. Once I get this crash issue resolved I am going to switch the default Timer instance and see if that fixes it.

     

    • This reply was modified 7 years ago by codex653.
    in reply to: Embedded Profiler Incredibly Slow #12901
    codex653
    Participant

    I went to go try out the LEDBlink project and found that I could not check the box for “Allow tracing function calls in Real-Time Watch” under the dynamic analysis page. When I click it, the box turns slightly grey for a moment and then the entire VisualGDB project properties window crashes without applying anything.  The same thing happens when attempting to click any of the other tick boxes in that window as well.

    I also opened up my slow project I originally mentioned and found that the Real-Time Watch functionality had been disabled (not by me) between when I posted the original question and now. I tried to re-enable it, but discovered that the project properties window crashed.

    I tried reinstalling VisualGDB, but that did no good. What’s going on?

     

    in reply to: Embedded Eigen Matrix Debugging Visualizer #12845
    codex653
    Participant

    Good to know! I’ll try that out.

    in reply to: Embedded Eigen Matrix Debugging Visualizer #12813
    codex653
    Participant

    For anyone coming across this later, I’ve ended up using what I think might be a better option for viewing the full matrix in a manner similar to Matlab. I wrote a quick ‘n dirty function that prints out the contents of a generic Eigen matrix to the VisualGDB provided ARM Semihosting Console. It actually works pretty well! I’d like to still get the .natvis file working, but this is ok for now.

    template <typename T>
     void prettyPrint(T matrix, std::string name)
     {
        size_t num_rows = matrix.rows();
        size_t num_cols = matrix.cols();
    
        //Matrix header name
        printf(name.data());
        printf("Size: [%d,%d]\n", num_rows, num_cols);
    
        //Create column labels
        printf("\t");
        for (size_t col = 0; col < num_cols; col++)
            printf("[%d]\t", col);
        printf("\n\n");
    
    
        //Create row data
        double data = 0.0;
        for (size_t row = 0; row < num_rows; row++)
        {
           printf("[%d]\t", row);
           for (size_t col = 0; col < num_cols; col++)
           {
              data = matrix(row, col);
              printf("%.2f\t", data);
    
           }
           printf("\n\n\n");
        }
    }
    • This reply was modified 7 years ago by codex653.
    • This reply was modified 7 years ago by codex653.
    in reply to: Embedded Eigen Matrix Debugging Visualizer #12800
    codex653
    Participant

    I have done this, but I still only see the first value in memory. I’ve experiment with the .natvis file a bit and it seems that the XML structure is unable to discern what value is associated with the wildcard character “*” in the DisplayString block. For example, if I have a dynamic [3×3] matrix, the value in the debugger window will read “[ERROR, ERROR] (fixed matrix)”. For whatever reason, the wildcard * is not read into $T2 and $T3, and the matrix is not identified as dynamic. An example of the XML section that gets triggered is shown below:

    <!-- Fixed x Fixed Matrix -->
     <Type Name="Eigen::Matrix&lt;*,*,*,*,*,*&gt;">
     
     <DisplayString>[{$T2},{$T3}] (fixed matrix)</DisplayString>
     <Expand>
     <ArrayItems Condition="Flags%2">
     <!-- row major layout -->
     <Rank>2</Rank>
     <Size>$i==0 ? $T2 : $T3</Size>
     <ValuePointer>m_storage.m_data.array</ValuePointer>
     </ArrayItems>
     <ArrayItems Condition="!(Flags%2)">
     <!-- column major layout -->
     <Direction>Backward</Direction>
     <Rank>2</Rank>
     <Size>$i==0 ? $T2 : $T3</Size>
     <ValuePointer>m_storage.m_data.array</ValuePointer>
     </ArrayItems>
     </Expand>
     </Type>
    • This reply was modified 7 years ago by codex653.
    in reply to: Live Variables Unable to Start #12306
    codex653
    Participant

    Manually adding it worked. In the past when I’ve tried to manually add the variable it did not work, so I’m a tad perplexed. Oh well. It works now and that’s all that matters!

    in reply to: Live Variables Unable to Start #12293
    codex653
    Participant

    It’s just a local variable inside of my primary .cpp file that has the main(void) function. This variable, shown below as “flag”, is only accessed by the main  function and a callback function from TIM2_IRQHandler().

     

    /*****************UartTesting.cpp************************/

    #include <stm32f7xx_hal.h>
    #include “core.h”
    #include “definitions.h”
    #include “gpio.h”
    #include “uart.h”
    #include “event.h”

    /****************

    *Some setup code went here

    ****************/

    //Variable I am trying to watch live
    volatile bool flag = false;

    int main(void)
    {
    HAL_Init();
    SystemClockConfig();

    /****************

    *Place holder for  non-important code here…

    ****************/
    for (;;)
    {
    if (flag)
    //Do a thing
    }
    }

    void testCallback()
    {
    testPin.toggle();
    ledPin_Blue.toggle();
    flag = true;
    }

    void TIM2_IRQHandler()
    {
    uint32_t isrflags = READ_REG(TIM2->SR);
    isrflags &= ~(1 << 1u);

    testCallback();

    WRITE_REG(TIM2->SR, isrflags);
    HAL_NVIC_DisableIRQ(TIM2_IRQn);
    }

Viewing 12 posts - 31 through 42 (of 42 total)