Forum Replies Created
-
AuthorPosts
-
curtis.hendrixParticipant
I’ve created a new project and it also has this issue. I did notice this only happens when Advanced Clang Intellisense is selected. This does not happen with the VC++ IntelliSense.
Unfortunately I cannot upload the project due to size limitation on the forum. The zipped project folder is 11MB. I created a new nRF52832 project with the S132 softdevice, and used the LED Blink example. The only setting I changed from default was to select the Advanced Clang Intellisense.
curtis.hendrixParticipantI changed the project setting to use the Clang-format (under VisualGDB Project Properties->IntelliSense Settings->Code formatting settings), and the issue went away. I set it back to Default (legacy), and the issue came back.
I reset all my settings in Visual Studio to C++, and the issue remained.
I also renamed the registry key, rebooted, and the issue remained.
I recently got a new computer, and this issue shows up on both systems. Both are running Windows 10, but the new computer is using VS 2019. The old computer is using VS 2017
- This reply was modified 3 years, 5 months ago by curtis.hendrix.
curtis.hendrixParticipantThis is only with C++ style comments (//). C style comments (/**/) at the end of a line do no exhibit the issue.
curtis.hendrixParticipantUnfortunately that does not work. I set the Build Results Window Stickiness to 0 and the build window still steals focus.
curtis.hendrixParticipantI selected a few functions in Dynamic Analysis -> Instrumented Functions that I know get called on every pass through main, but the Real-time watch window remains empty. I see the problem with both release and debug builds.
Attachments:
You must be logged in to view attached files.curtis.hendrixParticipantThis appears to be an issue only when the SysTick handler is instrumented for profiling.
curtis.hendrixParticipantI partially figured out the issue. I needed to select “Instrument functions to record their time” in the “New Profiling Session”.
Now I have a new problem. I can’t profile the application with the bootloader in place. The bootloader calculates a CRC32 over the entire application image and compares it with a pre-calculated CRC32. The pre-calculated CRC is generated during the build process and is automatically flashed to the target hardware before the application runs.
It appears the profiler is changing the firmware after the build process, so the CRCs don’t match and the bootloader does not launch the application.
curtis.hendrixParticipantI found a work-around that appears to work. I put the following code in the reset handler:
/*Fill the stack with the magic value so the stack monitoring can monitor
*the stack in VisualGDB.*/
uint32_t stackPointer;
__ASM volatile("MOV %0, SP\n" : "=r" (stackPointer));for (; stackPointer >= &_ebss; stackPointer -= sizeof(stackPointer))
{
*(uint32_t*)stackPointer = 0xA5A5A5A5;
}And it appears to work. I’m still confused as to why the plugin can’t handle this automatically.
curtis.hendrixParticipantScratch that. I power cycled my board and the issue came back.
curtis.hendrixParticipantFinally figured out my issue.
I removed these 2 lines from my linker script, which forces the live stack monitoring to use the _ebss linker variable for the bottom end of the stack.
__StackLimit = __StackTop - SIZEOF(.co_stack);
PROVIDE(__stack = __StackTop);
curtis.hendrixParticipant0x20001e8c . = ALIGN (0x4)
0x20001e8c _ebss = .
0x20001e8c PROVIDE (__bss_end__ = _ebss)
.co_stack 0x20001e8c 0x4 load address 0x000093b4
0x20001e90 . = ALIGN (0x8)
*fill* 0x20001e8c 0x4
*(.co_stack .co_stack.*)
0x20007ff8 __StackTop = ((ORIGIN (ram) + LENGTH (ram)) - 0x8)
0x20007ff4 __StackLimit = (__StackTop - SIZEOF (.co_stack))
0x20007ff8 PROVIDE (__stack = __StackTop)
I’m not sure what I’m doing wrong. Here’s the output of the .map file for my firmware, showing the stack symbols. I removed the bootloader and everything else that isn’t part of the actual firmware I’m trying to run the stack monitor on.
I was able to get it to work on an MKV31F, but I’m having trouble getting it working on a PAC5532.
curtis.hendrixParticipantNo idea why this worked, but it worked.
I deleted the “VCTargetsPath” Environment Variable from the build server and now everything is working correctly again.
curtis.hendrixParticipantA little more information:
It would appear I cannot register VisualGDB under the service account used to run the builds. I opened a command prompt as the service account, went to %VISUALGDB_DIR%, and executed “visualgdb /about”. I got the “About VisualGDB” window, entered the license key, clicked “OK”. But when I ran “visualgdb /about” from the command line again, it reverted to “Unknown” under “This copy of VisualGDB has been licensed to:”
curtis.hendrixParticipantI also tried creating a new VisualGDB project in Visual Studio on the build server and got this error:
VisualGDB version: 5.5.104.3920
------------------ System.InvalidOperationException ------------------
System.InvalidOperationException: Platform 'VisualGDB' referenced in the project file 'EmbeddedProject2' cannot be found.
at Microsoft.Verify.FailOperation(String message, Object[] args)
at Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim.<AddPlatformNoEventsAsync>d__343.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim.<>c__DisplayClass63_0.<<AddPlatform>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.ApartmentMarshaler.<>c__DisplayClass7_0.<<Invoke>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Threading.JoinableTask.CompleteOnCurrentThread()
at Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.ApartmentMarshaler.Invoke(Func`1 method)
at Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim.AddPlatform(String platformName)
at mr.AddNewPlatformAndEnsureConfigurations(String b, String[] a)
at s33.r(e13 c, IProjectEditContext f, e b, dx1 a, h g, Boolean e, y[] d)
at ti2.b(EmbeddedWizardState a, IProjectEditContext e, zf2 b, e13 c, String d, dx1 f)
at ti2.DoRunWizardOrThrowException(dx1 a, String b, String c)
at n23`1.Execute(Object b, Int32 c, Object[]& e, Object[]& d, wizardResult& a)
trace=[Microsoft.Verify.FailOperation:12, Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim+<AddPlatformNoEventsAsync>d__343.MoveNext:174, System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess:39, System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification:40, Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim+<>c__DisplayClass63_0+<<AddPlatform>b__0>d.MoveNext:187, System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess:39, System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification:40, Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.ApartmentMarshaler+<>c__DisplayClass7_0+<<Invoke>b__0>d.MoveNext:221, System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess:39, System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification:40, Microsoft.VisualStudio.Threading.JoinableTask.CompleteOnCurrentThread:556, Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.ApartmentMarshaler.Invoke:37, Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim.AddPlatform:32, mr.AddNewPlatformAndEnsureConfigurations:0, s33.r:153, ti2.b:1102, ti2.DoRunWizardOrThrowException:2172, n23`1.Execute:210]curtis.hendrixParticipantFigured out the problem. I had a breakpoint set in a file that had been renamed or moved, but it was still listed in the “Breakpoint” window. I deleted that breakpoint and now everything is working like it should.
-
AuthorPosts