RTSDK: support debugging on 32bit os
authorgyeongmin.ju <gyeongmin.ju@samsung.com>
Mon, 17 Apr 2017 10:34:18 +0000 (19:34 +0900)
committergyeongmin.ju <gyeongmin.ju@samsung.com>
Mon, 17 Apr 2017 10:34:18 +0000 (19:34 +0900)
support debugging on 32bit os

Change-Id: Id0ee52305a6d2f07d8497f069a663fd3dcd61a39
Signed-off-by: gyeongmin.ju <gyeongmin.ju@samsung.com>
rt-ide/tizen.rt.product.plugin/src/org/tizen/rt/ide/Messages.java
rt-ide/tizen.rt.product.plugin/src/org/tizen/rt/ide/launch/LaunchShortcut.java
rt-ide/tizen.rt.product.plugin/src/org/tizen/rt/ide/messages.properties

index be80105..68445b3 100644 (file)
@@ -70,6 +70,8 @@ public class Messages extends NLS {
     public static String RtosBuildDialogPage_lblNewLabel_text;
     public static String RtosBuildDialogPage_clearToolchainBtn_text;
 
+    public static String RtosDebug_ERROR_OPENOCD_NOT_EXIST;
+    
     public static String RtosNewRtAppWizard_WindowTitle;
     public static String RtosNewRtAppWizard_ERROR_APPNAME_INVALID;
     public static String RtosNewRtAppWizard_ERROR_PROJECT_NOT_EXIST;
index 7b74d5b..aa6d591 100644 (file)
@@ -55,6 +55,7 @@ import org.eclipse.ui.IEditorPart;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.tizen.rt.ide.Messages;
+import org.tizen.rt.ide.util.OSChecker;
 
 import ilg.gnuarmeclipse.debug.gdbjtag.openocd.ConfigurationAttributes;
 
@@ -75,19 +76,32 @@ public class LaunchShortcut implements ILaunchShortcut {
     private static final String PATH_BUILD_CONFIGS = "build/configs"; //$NON-NLS-1$
     private static final String PATH_OPENOCD = "openocd"; //$NON-NLS-1$
     private static final String PROGRAM_NAME = PATH_BUILD_OUTPUT + "/bin/tinyara"; //$NON-NLS-1$
-    private static final String OPENOCD_EXECUTABLE = "openocd_0.10_linux64_t20"; //$NON-NLS-1$
+    private static final String OPENOCD_EXECUTABLE_32 = "openocd_0.10_linux32_t20"; //$NON-NLS-1$
+    private static final String OPENOCD_EXECUTABLE_64 = "openocd_0.10_linux64_t20"; //$NON-NLS-1$
     private static final String DEBUGGER_NAME = "arm-none-eabi-gdb"; //$NON-NLS-1$
 
     private final String OPENOCD_LAUNCHTYPE = "ilg.gnuarmeclipse.debug.gdbjtag.openocd.launchConfigurationType"; //$NON-NLS-1$
 
     private ILaunchConfiguration createConfiguration(String projectName, IPath targetPath, String boardName, String debugCfg) throws CoreException {
+        String openocdPath = targetPath.toOSString() + File.separator + PATH_BUILD_CONFIGS + File.separator + boardName + File.separator + PATH_OPENOCD;
+        String openocdExec = null;
+        if (OSChecker.is64bit()) {
+            openocdExec = OPENOCD_EXECUTABLE_64;
+        } else {
+            openocdExec = OPENOCD_EXECUTABLE_32;
+        }
+        openocdExec = openocdPath + File.separator + openocdExec;
+        if (!new File(openocdExec).exists()) {
+            MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", Messages.RtosDebug_ERROR_OPENOCD_NOT_EXIST); //$NON-NLS-1$
+            return null;
+        }
+
         ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
         ILaunchConfigurationType configType = manager.getLaunchConfigurationType(OPENOCD_LAUNCHTYPE);
 
         ILaunchConfigurationWorkingCopy wc = configType.newInstance(null, manager.generateLaunchConfigurationName(targetPath.lastSegment()));
 
-        String openocdPath = targetPath.toOSString() + File.separator + PATH_BUILD_CONFIGS + File.separator + boardName + File.separator + PATH_OPENOCD;
-        wc.setAttribute(ConfigurationAttributes.GDB_SERVER_EXECUTABLE, openocdPath + File.separator + OPENOCD_EXECUTABLE);
+        wc.setAttribute(ConfigurationAttributes.GDB_SERVER_EXECUTABLE, openocdExec);
         wc.setAttribute(ConfigurationAttributes.GDB_SERVER_OTHER, "-f " + debugCfg); //$NON-NLS-1$
 
         wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, projectName);
@@ -168,7 +182,9 @@ public class LaunchShortcut implements ILaunchShortcut {
 
                 try {
                     ILaunchConfiguration config = createConfiguration(proj.getName(), proj.getLocation(), board, debugCfg);
-                    DebugUITools.launch(config, mode);
+                    if (config != null) {
+                        DebugUITools.launch(config, mode);
+                    }
                 } catch (CoreException e) {
                     logger.error(e.getMessage());
                 }
index 8aa11a8..d2a3581 100644 (file)
@@ -35,6 +35,8 @@ RtosFlashDialogPage_Title=Select a Flash option
 RtosFlashDialogPage_Description=To upload a built project to the board, use the flash function.\nSelect a Flash option.
 RtosFlashDialogPage_OptionNameColumn=Flash Options
 
+RtosDebug_ERROR_OPENOCD_NOT_EXIST=OpenOCD must be exist
+
 RtosNewRtAppWizard_WindowTitle=New TizenRT Application
 
 RtosNewRtAppWizard_ERROR_APPNAME_INVALID=Application naming rule \: The package name must start with an alphabetical character and can only contain letters or numbers