Sysprogs forums › Forums › VisualGDB › ARM Semihosting console not work in Example
- This topic has 24 replies, 4 voices, and was last updated 8 years, 4 months ago by Rumchiller.
-
AuthorPosts
-
August 27, 2015 at 20:03 #6874supportKeymaster
Hi,
The extensibility interfaces are not documented as they are used by a fairly small amount of our users. If you have specific questions about those, feel free to ask here or direct them to our support.
August 31, 2015 at 15:44 #6889StrongArmParticipantHi Brazis,
thank you for all the suggestions.After reviewing all the possibilities I dicided to use openOCD direct. This is the only way to get runtime information from the CPU without the help of a debugger and without the need to stop/restart the CPU for data transfer. I wrote a small test project for this with QT5. An implemented TCP Client connects to the OpenOCD TCP Server on port 6666. Using an elf parser gives the possibilty to get the addresses and sizes from the variable names. Using the ocd_mdw/ocd_mww commands I can read and write variables, using array2mem/mem2array I can transfer whole buffer regions. Works great!
Best regards
P.S. Just tested VisualGDB with my MSP432 Discovery board, works fine!
August 12, 2016 at 08:57 #8814RumchillerParticipantI have the same problem with the VisualGDB 5.2.5.954.
I am using newlib nano without floating point printf support.
The output:
C:\SysGCC\arm-eabi/bin/arm-eabi-g++.exe -o Debug/ERB_FW_SPL_DP.elf -Wl,-gc-sections -Wl,-q --specs=rdimon.specs --specs=nano.specs -TSTM32F429IG_flash.lds -mcpu=cortex-m4 -mthumb -mfloat-abi=hard ...
So I looked into the stm32.mak:
LDFLAGS += --specs=nano.specs
Where could I deactivate this flag? It is not showing in the project settings.
August 12, 2016 at 09:12 #8815RumchillerParticipantWhen I delete the flag from stm32.mak, everything works fine. But after changing project settings, the flag appears again.
August 13, 2016 at 21:55 #8823supportKeymasterHi,
Good to know it works. We actually have out-of-the-box support for embedded unit tests in VisualGDB 5.2 Preview1. You can read more about it here: https://sysprogs.com/w/the-new-unit-test-support-in-visualgdb-5-2/
August 14, 2016 at 19:48 #8849RumchillerParticipantSince the new version 5.2, the Code is hanging in the startup. __libc_init_array();
I am getting into the do_AngelSWI();
reason: AngelSWI_Reason_ReportException 0x18
arg: 0x00020026
I am going back :>
August 14, 2016 at 21:38 #8850RumchillerParticipantOK, now i got it, maybe now you could help me:
I added a sdram section to the linkerscript:
. = ALIGN(4); _sisdraminit = .; .sdraminit : AT( _sisdraminit ) { . = ALIGN(4); _ssdraminit = .; *(.sdraminit) *(.sdraminit*) . = ALIGN(4); _esdraminit = .; } > SDRAM .sdram (NOLOAD) : { . = ALIGN(4); *(.sdram) *(.sdram*) . = ALIGN(4); } > SDRAM
The problem occure, when the “PROVIDE(end = .);” is after the sdram-section.
I dont know why, because my ram is inialized before the “__libc_init_array()” is called.
EDIT: The error occurs only when semihosting is activated.
- This reply was modified 8 years, 4 months ago by Rumchiller.
August 14, 2016 at 21:54 #8852RumchillerParticipantMaybe its a problem with printf() and std::string. Now its to late for me to test it, but earlier i changed some const char* to std::string. I will test it tomorrow.
August 15, 2016 at 05:21 #8855supportKeymasterThe ‘end’ symbol is used to specify the beginning of heap, so defining it after SDRAM will break the malloc() functionality.
Hence we would recommend defining ‘end’ so that it actually points at the end of data in RAM.
August 15, 2016 at 15:55 #8861RumchillerParticipantThanks for reply,
OK, i understand. I didnt know, that it defines the heap, thank you.
-
AuthorPosts
- You must be logged in to reply to this topic.