support

Forum Replies Created

Viewing 15 posts - 6,931 through 6,945 (of 7,665 total)
  • Author
    Posts
  • in reply to: VisualGDB hangs under Teamcity #3081
    support
    Keymaster

    Hi,

    Actually you don’t need VisualGDB to do the remote build. Simply run the make.exe provided with your toolchain in the project directory and ensure that the toolchain binary directory is on the PATH.
    Would that work for you?

    in reply to: STemWin compiled Library #3097
    support
    Keymaster

    Hi,

    You can add the full path to the file to the “Additional linker inputs” field. Let us know if that works for you.

    in reply to: A collection of problems I ran into using VisualGDB #3375
    support
    Keymaster

    Hi,

    1. Unfortunately, the Android tools provided by Google are not very stable, so you often need to try several combinations to find one that works.
    Note that if your breakpoints don’t work, this can be caused by 3 independent problems:
    a. Gdbserver fails to get the shared library list from the OS. This can be detected by checking the output of ‘info shared’ for strange things. It can be fixed by trying various gdbserver versions.
    b. Particular versions of gdb and gdbserver are incompatible. This would cause either of them to crash. A workaround would be to try different versions of gdb/gdbserver.
    c. The debug symbols produced by gcc are not correctly recognized by gdb. This would cause the modules to appear properly, but the breakpoints won’t set or the variables will be missing. It can be fixed by changing the debug information format of gcc (-gdwarf-xxx flags) or using a different gcc version.

    2. VisualGDB expects a certain file layout coming from NDK build scripts and the easiest way to support a custom build system is to emulate it just like you are doing it.
    3. This is actually handled by gdb itself, not VisualGDB. When the target loads a library called xxx.so the GDB searches the directories set via set solib-search-path for a library with a matching name and gets symbols from there. The easiest workaround for mismatching names would be to simply make a copy of the file on the Windows side with a matching name. You can also put it into a different directory and specify it via set solib-search-path.
    4. We also don’t have any special flag for starting gdbserver as root. We could add a flag for that, but if the current workaround works, we would suggest using it as it’s a fairly rare scenario.
    5. The normal Attach dialog does not support attaching to Android processes. We will consider adding support for this in one of the next releases.

    in reply to: include <mysql/mysql.h> error"undefined reference to" #3364
    support
    Keymaster

    Hi,

    You need to add the MySQL library to the ‘libraries’ setting in the VisualGDB Project Properties. Specify the name without the ‘lib’ prefix and ‘.a’ suffix. E.g. if the library name is libmysql.a, simply specify ‘mysql’ in the ‘libraries’ field.
    You may also need to put extern “C” around the include file if it does not contain it.

    in reply to: Feature request: The Go lang #3374
    support
    Keymaster

    The Go language currently looks more like a research project than a mature industrial tool, hence we would probably not find enough users to justify any heavy modifications to VisualGDB to support it.
    However if GDB can already debug it, you should be able to use the Quick Debug feature or create a custom project to use VisualGDB as a high-level wrapper around GDB.

    in reply to: Fail to download kernel symbols #3062
    support
    Keymaster

    Yes, VisualKernel is focusing on seamless debugging experience, so configuring debugging is a mandatory step. If you just need to build your module, you can simply use the command line.

    in reply to: Fail to download kernel symbols #3065
    support
    Keymaster

    Hi,

    The Raspberry Pi distro does not include kernel debug packages, so if you want to develop/debug kernel modules for it, you need to build the kernel from source code. Follow this tutorial for more details: http://sysprogs.com/VisualKernel/tutorials/raspberry/basicmodule/

    in reply to: Problem updating VisualGDB to the latest version #3098
    support
    Keymaster

    Hi,

    This looks like a corrupt MSI file. Please try downloading it again.

    in reply to: BUG when gdb remote debug connecting #3371
    support
    Keymaster

    Hi,

    Thanks, this looks like a bug. We’ll add a fix for it to the next maintenance release. As a workaround you can select the manual GDB mode and specify the target selection command manually.

    in reply to: Semihosting broken with latest GCC arm-eabi update #3334
    support
    Keymaster

    Hi,

    This can be related to the implementation of initialize_monitor_handles() in newlib 2.1.0:

    void
    initialise_monitor_handles (void)
    {
    int i;
    
    #ifdef ARM_RDI_MONITOR
    int volatile block[3];
    
    block[0] = (int) ":tt";
    block[2] = 3;     /* length of filename */
    block[1] = 0;     /* mode "r" */
    monitor_stdin = do_AngelSWI (AngelSWI_Reason_Open, (void *) block);
    
    block[0] = (int) ":tt";
    block[2] = 3;     /* length of filename */
    block[1] = 4;     /* mode "w" */
    monitor_stdout = monitor_stderr = do_AngelSWI (AngelSWI_Reason_Open, (void *) block);
    #else
    int fh;
    const char * name;
    
    name = ":tt";
    asm ("mov r0,%2; mov r1, #0; swi %a1; mov %0, r0"
    : "=r"(fh)
    : "i" (SWI_Open),"r"(name)
    : "r0","r1");
    monitor_stdin = fh;
    
    name = ":tt";
    asm ("mov r0,%2; mov r1, #4; swi %a1; mov %0, r0"
    : "=r"(fh)
    : "i" (SWI_Open),"r"(name)
    : "r0","r1");
    monitor_stdout = monitor_stderr = fh;
    #endif
    
    for (i = 0; i < MAX_OPEN_FILES; i ++)
    openfiles.handle = -1;

    openfiles[0].handle = monitor_stdin;
    openfiles[0].pos = 0;
    openfiles[1].handle = monitor_stdout;
    openfiles[1].pos = 0;
    }

    Our toolchain includes a patch that declares this function as __attribute__((weak)), so you can simply get the newlib source code and add this one file to your project, setting ARM_RDI_MONITOR if you need it and modifying anything else you need. You won’t need to rebuild the libc or anything else, the functions from your manually added file will simply replace the default ones.

    in reply to: Evaluating VisualGDB: some issues, thoughts and questions #3124
    support
    Keymaster

    Hi,

    You can change the toolchain shown in the GUI by editing mcu.xml ( field). Again, the reason why we are extremely conservative about allowing the user to change the toolchain for an existing project is the amount of “strange” bugs it can cause. A few examples:

    • Different toolchains can be configured with different –with-fpu, –with-arch and –with-abi flags. If you change the toolchain to a one that was configured differently and forget to rebuild your project, trying to call arbitrary functions can just randomly crash your firmware.
    • If you do rebuild your project, but link against a static library built with another incompatible toolchain, you’ll hit the same problem.
    • Different toolchains can have different multilib configurations (combinations of flags for which separate versions of libc/libgcc are built). Even given that you’ve specified all flags correctly, this could easily link incompatible code together.

    Yes, you know, what you are doing when hacking the toolchains (and that’s why we allow changing it by editing XML/MAK files), but if we support any sort of toolchain swapping feature, we’ll immediately get lots of feedback from people less familiar with GCC guts that their project is suddenly broken for no apparent reason.

    Can you compare the full GDB logs for normal and custom projects to see what is different and hence why “sim” is not working? Normally it should not be affected by the project type.

    The duplication of the toolchain prefix comes from the internal format VisualGDB uses to represent toolchains that does not support variables. We also try to minimize the complexity of the Makefile parsing hence limiting it to querying basic things only and not expanding variables. Yes, we could design a more solid way of storing that information internally, but it would probably affect less than 1% of the users, while potentially introducing bugs that could break more widely used functionality. As a workaround, you can edit the XML files programmatically (example at the end of the message).

    Regarding the ability to control the “10K” format, this sounds reasonable. Would a selection between bytes, kilobytes and automatic modes be reasonable for you?
    As for the Makefile replacement, our main concern is that it could be incompatible with older versions of GNU Make or have strange problems if paths have spaces or some other rare scenarios, so we would like to give it some testing before shipping it. We are currently focusing on the new IntelliSense engine, so we will probably look at the Makefile improvements after it’s done.

    Regarding missing toolchains for custom projects, this sounds like a bug. We’ll look into it more. Normally the toolchains are filtered by the field in Toolchain.xml.
    There is currently no way of synchronizing the VS output directory and the Makefile build directory. Normally when you create a new configuration both should match the configuration name, but if you want to change them, you have to edit them both.

    Finally, here’s an example of a C# tool that can generate a basic BSP including register definitions. Simply add BSPEngine.dll to the project references and build it:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using BSPEngine;
    
    namespace BspGenerator
    {
    class Program
    {
    static void Main(string[] args)
    {
    MCUFamily[] familyList = new MCUFamily[]
    {
    new MCUFamily
    {
    ID = "Family1",
    CompilationFlags = new ToolFlags{COMMONFLAGS = "-mcpu=cortex_m3"},
    }
    };
    
    MCU[] mcus = new MCU[]
    {
    new MCU
    {
    FamilyID = "Family1",
    ID = "Device1",
    FLASHBase = 0x1000,
    FLASHSize = 1024,
    MCUDefinitionFile = "mcu1.xml"
    }
    };
    
    BoardSupportPackage bsp = new BoardSupportPackage
    {
    PackageID = "com.sysprogs.demo",
    PackageDescription = "TestDevices",
    GNUTargetID = "arm-eabi",
    GeneratedMakFileName = "test.mak",
    MCUFamilies = familyList,
    SupportedMCUs = mcus
    };
    
    XmlTools.SaveObject(bsp, "BSP.XML");
    
    string regDefinition = "REG1=0x1234,REG2=0x5678";   //Replace this by a real definition extracted from somewhere
    List registers= new List();
    foreach(var def in regDefinition.Split(','))
    {
    int idx = def.IndexOf('=');
    registers.Add(new HardwareRegister { Name = def.Substring(0, idx), Address = def.Substring(idx + 1) });
    }

    MCUDefinition mcuDef = new MCUDefinition
    {
    MCUName = "MCU Subtype 1",
    RegisterSets = new HardwareRegisterSet[] { new HardwareRegisterSet { Registers = registers.ToArray() } }
    };

    XmlTools.SaveObject(mcuDef, "mcu1.xml");
    }
    }
    }

    in reply to: Linker Error on sprintf #3108
    support
    Keymaster

    Hi,

    Just FYI: our new GCC 4.9.1-based toolchain comes with standard syscall definitions declared as weak, so you can simply override the relevant ones with the STM32-specific implementations without having to modify the library.

    in reply to: visualGDB crashes when trying to debug (ndk-r10) #3340
    support
    Keymaster

    Hi,

    Thanks for letting us know. Good to know there is a workaround.

    in reply to: Toolchain Test Failed #3358
    support
    Keymaster

    Hi,

    The rebuild error is a known issue and can be safely ignored. Simply build the project afterwards and it will build properly.
    The TICK_INT_PRIORITY issue can be solved by regenerating the Device-Specific files folder (change the MCU type and restore it back in VisualGDB Project Properties).

    in reply to: Kinetis K64 Support #3350
    support
    Keymaster

    Thanks for the kind words. Making a product that is powerful and easy to use at the same time is our main intent.
    If you like VisualGDB, you can help it find new users by spreading the word. And if you have suggestions on improving it further, do not hesitate to post them here.

Viewing 15 posts - 6,931 through 6,945 (of 7,665 total)