From 28916c67c5b8e149784f008afc066fe024460e80 Mon Sep 17 00:00:00 2001 From: Stefan Liebl Date: Wed, 3 Jul 2024 09:08:52 +0200 Subject: [PATCH] + invoke, pfd, - dlcpro-fw-file --- vimfiles.stefan/plugin/toptica.vim | 311 +++++++++++++++++++---------- 1 file changed, 206 insertions(+), 105 deletions(-) diff --git a/vimfiles.stefan/plugin/toptica.vim b/vimfiles.stefan/plugin/toptica.vim index bd148f0..8ee94a8 100644 --- a/vimfiles.stefan/plugin/toptica.vim +++ b/vimfiles.stefan/plugin/toptica.vim @@ -1,4 +1,5 @@ command -nargs=1 -complete=dir DlcPro call s:ProjectSet('dlcpro', '') +command -nargs=1 -complete=dir DlcProOld call s:ProjectSet('dlcpro-old', '') command -nargs=1 -complete=dir DlcProShg call s:ProjectSet('shg', '') command -nargs=1 -complete=dir DlcProGui call s:ProjectSet('dlcpro-gui', '') command -nargs=1 -complete=dir DlcProTui call s:ProjectSet('dlcpro-tui', '') @@ -6,10 +7,13 @@ command -nargs=1 -complete=dir DlcProTuiSimulator call s:ProjectSet('dlcpro-tui- command -nargs=1 -complete=dir DlcProCan call s:ProjectSet('dlcpro-can', '') command -nargs=1 -complete=dir DlcProSpecalyser call s:ProjectSet('dlcpro-specalyser', '') command -nargs=1 -complete=dir Topmode call s:ProjectSet('topmode', '') +command -nargs=1 -complete=dir TopmodeOld call s:ProjectSet('topmode-old', '') command -nargs=1 -complete=dir TopmodeGui call s:ProjectSet('topmode-gui', '') +command -nargs=1 -complete=dir TopmodeGuiOld call s:ProjectSet('topmode-gui-old', '') command -nargs=1 -complete=dir DigiFalc call s:ProjectSet('digifalc', '') command -nargs=1 -complete=dir ServoBoard call s:ProjectSet('servoboard', '') command -nargs=1 -complete=dir DlMotor call s:ProjectSet('dl-motor', '') +command -nargs=1 -complete=dir Pfd call s:ProjectSet('pfd', '') command -nargs=1 -complete=dir OperationPanelF1 call s:ProjectSet('operation-panel-f1', '') command -nargs=1 -complete=dir OperationPanelF4 call s:ProjectSet('operation-panel-f4', '') command -nargs=1 -complete=dir DeCoF call s:ProjectSet('decof', '') @@ -37,6 +41,8 @@ function! s:ProjectSet(project_type, project_base_dir) " defaults if (g:project_type == 'dlcpro') let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' + elseif (g:project_type == 'dlcpro-old') + let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' elseif (g:project_type == 'dlcpro-tui') let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' elseif (g:project_type == 'dlcpro-tui-simulator') @@ -51,14 +57,20 @@ function! s:ProjectSet(project_type, project_base_dir) let s:ProjectBaseDir = '/home/stefan/dlcpro/pc-gui' elseif (g:project_type == 'topmode') let s:ProjectBaseDir = '/home/stefan/topmode/firmware' + elseif (g:project_type == 'topmode-old') + let s:ProjectBaseDir = '/home/stefan/topmode/firmware' elseif (g:project_type == 'topmode-gui') let s:ProjectBaseDir = '/home/stefan/topmode/pc-gui' + elseif (g:project_type == 'topmode-gui-old') + let s:ProjectBaseDir = '/home/stefan/topmode/pc-gui' elseif (g:project_type == 'digifalc') let s:ProjectBaseDir = '/home/stefan/dlcpro/falc/firmware' elseif (g:project_type == 'servoboard') let s:ProjectBaseDir = '/home/stefan/dlcpro/mta/firmware' elseif (g:project_type == 'dl-motor') let s:ProjectBaseDir = '/home/stefan/dlcpro/dl-motor' + elseif (g:project_type == 'pfd') + let s:ProjectBaseDir = '/home/stefan/dlcpro/pfd/firmware' else echo "no project" endif @@ -76,26 +88,34 @@ function! s:ProjectSet(project_type, project_base_dir) \'gcc-12.3.1-glibc-2.33-binutils-2.39-kernel-5.4-sanitized/' function! s:set_oselas_gcc4() - let g:GccRoot = s:oselas_gcc4_root - " let g:termdebugger = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gdb' - let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb' - let g:oselas_gcc_solib_paths = s:oselas_gcc4_root.'/'.s:oselas_gcc4_lastname.'/lib/'.':'. - \ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/lib/'.':'. - \ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/usr/lib/' - " let $PATH = s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/usr/include'.':'.s:path_orig - let g:analyser = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gcc' - let g:new_compiler = ' -DNEW_COMPILER=OFF' + if s:use_invoke + let g:new_compiler = v:false + else + let g:GccRoot = s:oselas_gcc4_root + " let g:termdebugger = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gdb' + let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb' + let g:oselas_gcc_solib_paths = s:oselas_gcc4_root.'/'.s:oselas_gcc4_lastname.'/lib/'.':'. + \ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/lib/'.':'. + \ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/usr/lib/' + " let $PATH = s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/usr/include'.':'.s:path_orig + let g:analyser = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gcc' + let g:dnew_compiler = ' -DNEW_COMPILER=OFF' + endif endfunction function! s:set_oselas_gcc() - let g:GccRoot = s:oselas_gcc_root - let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb' - let g:oselas_gcc_solib_paths = s:oselas_gcc_root.'/'.s:oselas_gcc_lastname.'/lib/'.':'. - \ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/lib/'.':'. - \ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/usr/lib/' - " let $PATH = s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/usr/include'.':'.s:path_orig - let g:analyser = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gcc' - let g:new_compiler = ' -DNEW_COMPILER=ON' + if s:use_invoke + let g:new_compiler = v:true + else + let g:GccRoot = s:oselas_gcc_root + let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb' + let g:oselas_gcc_solib_paths = s:oselas_gcc_root.'/'.s:oselas_gcc_lastname.'/lib/'.':'. + \ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/lib/'.':'. + \ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/usr/lib/' + " let $PATH = s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/usr/include'.':'.s:path_orig + let g:analyser = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gcc' + let g:dnew_compiler = ' -DNEW_COMPILER=ON' + endif endfunction function! g:Compiler_version() @@ -115,9 +135,23 @@ function! s:ProjectSet(project_type, project_base_dir) execute 'set path-=./**' execute 'set path+=' . s:ProjectSrcDir.'/**' execute 'set path+=' . g:ProjectBuildDir.'/**' - let s:jlink_path = '/home/stefan/opt/SEGGER/JLink_Linux_V654a_x86_64' + let s:jlink_path = '/home/stefan/opt/SEGGER/JLink_Linux_V796k_x86_64' + + let s:use_invoke = v:false if (g:project_type == 'dlcpro') + let s:use_invoke = v:true + set wildignore-=**/firmware/src/device-control/** + set wildignore+=**/shg-firmware/** + " set titlestring=%<%t\ (%{expand('%:p:h')})%=compiler:\ %{Compiler_version()} + let g:DeviceIP = 'dlc_pro__040083' + call s:set_oselas_gcc() + let g:termdebugger = '/opt/OSELAS.Toolchain-2022.10.2/arm-v7a-linux-gnueabihf/gcc-12.3.1-glibc-2.33-binutils-2.39-kernel-5.4-sanitized/bin/arm-v7a-linux-gnueabihf-gdb' + let g:DebugRemote = v:true + command DlcproEmissionOn call s:DlcproEmission('1') + command DlcproEmissionOff call s:DlcproEmission('0') + command DlcproShutup call s:DlcproShutup() + elseif (g:project_type == 'dlcpro-old') let s:Program = '/device-control/device-control' let s:Elffile = s:Program let g:ProgramRemote = '/opt/app/bin/device-control' @@ -200,6 +234,12 @@ function! s:ProjectSet(project_type, project_base_dir) let g:termdebugger = 'gdb' let g:DebugRemote = v:false elseif (g:project_type == 'topmode') + let s:use_invoke = v:true + let g:DeviceIP = 'topmode_stefan' + call s:set_oselas_gcc4() + let g:termdebugger = '/opt/OSELAS.Toolchain-2022.10.2/arm-v7a-linux-gnueabihf/gcc-12.3.1-glibc-2.33-binutils-2.39-kernel-5.4-sanitized/bin/arm-v7a-linux-gnueabihf-gdb' + let g:DebugRemote = v:true + elseif (g:project_type == 'topmode-old') let s:Program = '/topmode' let s:Elffile = s:Program let g:ProgramRemote = '/usr/toptica/topmode' @@ -213,6 +253,10 @@ function! s:ProjectSet(project_type, project_base_dir) let g:SshOpts2 = "" call s:set_oselas_gcc4() elseif (g:project_type == 'topmode-gui') + let s:use_invoke = v:true + let g:new_compiler = v:false + let g:DebugRemote = v:false + elseif (g:project_type == 'topmode-gui-old') let s:Program = '/TOPAS_Topmode' let s:Elffile = s:Program let s:makegoals = [] @@ -249,6 +293,18 @@ function! s:ProjectSet(project_type, project_base_dir) let g:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-9-2020-q2-update' let g:termdebugger = g:GccRoot.'/bin/arm-none-eabi-gdb' let $PATH = g:GccRoot.'/bin'.':'.s:path_orig + elseif (g:project_type == 'pfd') + let s:use_invoke = v:true + let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug' + let s:Program = '/pfd-firmware.bin' + let s:Elffile = '/pfd-firmware.elf' + let s:makegoals = ['cmake', 'build', 'unit_tests', 'cdd', 'cubemx', 'jlink', 'gdb'] + let s:makeprg = 'invoke -e build' + let g:DebugRemote = v:true + let g:GdbPort = '2331' + let g:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-10.3-2021.10' + let g:termdebugger = g:GccRoot.'/bin/arm-none-eabi-gdb' + let $PATH = g:GccRoot.'/bin'.':'.s:jlink_path.':'.s:path_orig elseif (g:project_type == 'operation-panel-f1') let g:stm32_target = 'STM32F10X' let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin' @@ -325,9 +381,11 @@ function! s:ProjectSet(project_type, project_base_dir) augroup END function! s:DeviceFirmwareUpdate() - if (g:project_type == 'dlcpro-can') + if s:use_invoke + execute "!invoke -e flash-and-run --target-ip ".g:DeviceIP + elseif (g:project_type == 'dlcpro-can') call s:DeviceUpdateProgramLinux() - elseif ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor')) + elseif ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor') || (g:project_type == 'pfd')) call s:JLinkFlashProgram() else call s:DeviceFirmwareUpdateStartLinux() @@ -362,14 +420,29 @@ endfunction " Make " ==== function! GetAllMakeCompletions(ArgLead, CmdLine, CursorPos) - return join(s:makegoals + s:makeopts + glob(a:ArgLead.'*', 1, 1), "\n") + if s:use_invoke + let l:makegoals = split(system('invoke targets')) + let l:invoke_targets = ['--target'] + return join(l:makegoals + l:invoke_targets + glob(a:ArgLead.'*', 1, 1), "\n") + else + return join(s:makegoals + s:makeopts + glob(a:ArgLead.'*', 1, 1), "\n") + endif endfunction function! s:Make(args, async_mode) - let &makeprg = s:makeprg call asyncrun#quickfix_toggle(10, 1) -" execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ --directory='.g:ProjectBuildDir.' '.a:args - execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make -cwd='.g:ProjectBuildDir. ' @ '.a:args + if s:use_invoke + " let l:makeprg = 'invoke -e build --project '.g:project_type + let l:makeprg = 'invoke -e build' + if g:new_compiler + let l:makeprg .= ' --new-compiler' + endif + let &makeprg = l:makeprg + execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ '.a:args + else + let &makeprg = s:makeprg + execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make -cwd='.g:ProjectBuildDir. ' @ '.a:args + endif endfunction function! s:MakeTestBuild() @@ -396,41 +469,52 @@ function! s:MakeCheck(filename, async_mode) endfunction function! s:Cmake(options, async_mode) - if !isdirectory(g:ProjectBuildDir) - call mkdir(g:ProjectBuildDir) + if s:use_invoke + let l:options = a:options.' --project '.g:project_type + if g:new_compiler + let l:options .= ' --new-compiler' + else + let l:options .= ' --no-new-compiler' + endif + execute '!echo "invoke cmake '.l:options.'"' + execute 'AsyncRun -mode='.a:async_mode.' -save=2 @ invoke -e cmake '.l:options + else + if !isdirectory(g:ProjectBuildDir) + call mkdir(g:ProjectBuildDir) + endif + execute "!rm -f ".g:ProjectBuildDir."/cmake-cmd*" + call asyncrun#quickfix_toggle(10, 1) + let args = "" + let args .= " ../".g:ProjectSrcDirRel."/" + if (g:project_type == 'decof') + let args .= "/targets/simulator" + endif + let args .= " --graphviz=dependencies.dot" + let args .= " ".a:options + let args .= " -DCMAKE_EXPORT_COMPILE_COMMANDS=1" + if ((g:project_type == 'dlcpro-old') || (g:project_type == 'dlcpro-tui')) + let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/Toolchain-target.cmake" + let args .= " -DBUILD_TARGET=target" + let args .= g:dnew_compiler + elseif (g:project_type == 'dlcpro-tui-simulator') + let args .= " -DBUILD_TARGET=simulation" + let args .= " -DQT5_INSTALL_PATH=/usr/lib/x86_64-linux-gnu/qt5" + elseif (g:project_type == 'topmode') + let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/Toolchain-target.cmake" + let args .= " -DSYSROOT=~/topmode/topmode-sdk/sysroot-target" + elseif (g:project_type == 'topmode-gui') + elseif ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor')) + let args .= " -G Ninja" + let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/GNU\\ Arm\\ Embedded.toolchain.cmake" + elseif ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4')) + let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/gnu-arm-none-eabi.toolchain.cmake" + let args .= " -DOPC_TARGET=".g:stm32_target + elseif (g:project_type == 'decof') + let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/ci/Toolchain-dlcpro-target.cmake" + endif + execute '!echo "cmake '.args.'" > ' g:ProjectBuildDir."/cmake_cmd" + execute 'AsyncRun -mode='.a:async_mode.' -save=2 -cwd='.g:ProjectBuildDir.' @ cmake '.args endif - execute "!rm -f ".g:ProjectBuildDir."/cmake-cmd*" - call asyncrun#quickfix_toggle(10, 1) - let args = "" - let args .= " ../".g:ProjectSrcDirRel."/" - if (g:project_type == 'decof') - let args .= "/targets/simulator" - endif - let args .= " --graphviz=dependencies.dot" - let args .= " ".a:options - let args .= " -DCMAKE_EXPORT_COMPILE_COMMANDS=1" - if ((g:project_type == 'dlcpro') || (g:project_type == 'dlcpro-tui')) - let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/Toolchain-target.cmake" - let args .= " -DBUILD_TARGET=target" - let args .= g:new_compiler - elseif (g:project_type == 'dlcpro-tui-simulator') - let args .= " -DBUILD_TARGET=simulation" - let args .= " -DQT5_INSTALL_PATH=/usr/lib/x86_64-linux-gnu/qt5" - elseif (g:project_type == 'topmode') - let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/Toolchain-target.cmake" - let args .= " -DSYSROOT=~/topmode/topmode-sdk/sysroot-target" - elseif (g:project_type == 'topmode-gui') - elseif ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor')) - let args .= " -G Ninja" - let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/GNU\\ Arm\\ Embedded.toolchain.cmake" - elseif ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4')) - let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/gnu-arm-none-eabi.toolchain.cmake" - let args .= " -DOPC_TARGET=".g:stm32_target - elseif (g:project_type == 'decof') - let args .= " -DCMAKE_TOOLCHAIN_FILE=../".g:ProjectSrcDirRel."/ci/Toolchain-dlcpro-target.cmake" - endif - execute '!echo "cmake '.args.'" > ' g:ProjectBuildDir."/cmake_cmd" - execute 'AsyncRun -mode='.a:async_mode.' -save=2 -cwd='.g:ProjectBuildDir.' @ cmake '.args endfunction function! s:Ctest(args, async_mode) @@ -544,7 +628,12 @@ function! s:DeviceFirmwareUpdateStartLinux() endfunction function! s:DeviceStartGdbServer() - if ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor')) + if (g:project_type == 'pfd') + call system('killall --quiet JLinkGDBServer') + call s:Call_and_log('invoke -e jlink&') + autocmd User TermdebugStopPost call system('killall --quiet JLinkGDBServer') + sleep 1 + elseif ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor')) call s:Call_and_log('pkill --full JLinkGDBServer') call s:Call_and_log(s:jlink_path.'/JLinkGDBServer -if SWD -device STM32H743ZI &') elseif ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4')) @@ -558,7 +647,7 @@ function! s:DeviceStartGdbServer() endfunction function! s:DeviceStartGdbServerAttach() - if ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor')) + if ((g:project_type == 'digifalc') || (g:project_type == 'servoboard') || (g:project_type == 'dl-motor') || (g:project_type == 'pfd')) else call s:Call_and_log('pkill --full gdbserver') call s:Call_and_log('ssh -o RemoteCommand=none '.g:SshOpts.' -L localhost:'.g:GdbPort.':localhost:'.g:GdbPort.' "root@'.g:DeviceIP.'" '.g:SshOpts2.' "gdbserver localhost:'.g:GdbPort.' --attach \`pidof '.fnamemodify(g:ProgramRemote, ':t').'\` &"') @@ -600,52 +689,66 @@ endfunction let g:DlcproBasePath = "/jenkins/workspace/pro--firmware_release_1.9.0-DCESJ5C5R577IG5QFEWTML22UFDDZCJDGFLMDA4DCD3V2ZAGVEJA/source/" function! s:DeviceDebug(attach) - if (a:attach == 0) -" let r = s:DeviceFirmwareUpdate() - let r = 0 - if (r != 0) - echoerr "DeviceFirmwareUpdate() failed!" - else - if (g:DebugRemote == v:false) - call s:StartDebugger(g:Elffile, a:attach) - call s:SendToDebugger('file '.g:Elffile) - call s:SendToDebugger('break main') - call s:SendToDebugger('run') - else - call s:DeviceStartGdbServer() - sleep 1 - call s:StartDebugger(g:Elffile, a:attach) - sleep 1 - call s:SendToDebugger('target extended-remote localhost:'.g:GdbPort) - sleep 1 - if exists("g:ProgramRemote") - call s:SendToDebugger('set remote exec-file '.g:ProgramRemote) - sleep 1 - endif - call s:SendToDebugger('file '.g:Elffile) - call s:SendToDebugger('set solib-search-path '. g:oselas_gcc_solib_paths) - if ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4')) - call s:SendToDebugger('y') - call s:SendToDebugger('monitor reset') - call s:SendToDebugger('load') - call s:SendToDebugger('break main') - else - call s:SendToDebugger('break main') - sleep 1 - call s:SendToDebugger('run') - endif - execute '2hide' - endif + if s:use_invoke + if v:DebugRemote + execute "!invoke -e gdb-server --target-ip=".g:DeviceIP + autocmd! User TermdebugStartPost + autocmd! User TermdebugStopPost + autocmd User TermdebugStartPost call term_sendkeys('',"source gdb-connect.txt\n") + autocmd User TermdebugStopPost call system('pkill --full gdbserver') endif + Termdebug else - call s:DeviceStartGdbServerAttach() - call s:StartDebugger(a:attach) - call s:SendToDebugger('target remote localhost:'.g:GdbPort) - " get remote src path with gdb: info sources or gdb: break main - call s:SendToDebugger('set substitute-path '.g:DlcproBasePath.' '.s:ProjectSrcDir) - endif + if (a:attach == 0) + " let r = s:DeviceFirmwareUpdate() + let r = 0 + if (r != 0) + echoerr "DeviceFirmwareUpdate() failed!" + else + if (g:DebugRemote == v:false) + call s:StartDebugger(g:Elffile, a:attach) + call s:SendToDebugger('file '.g:Elffile) + call s:SendToDebugger('break main') + call s:SendToDebugger('run') + else + call s:DeviceStartGdbServer() + sleep 1 + call s:StartDebugger(g:Elffile, a:attach) + sleep 1 + call s:SendToDebugger('target extended-remote localhost:'.g:GdbPort) + sleep 1 + if exists("g:ProgramRemote") + call s:SendToDebugger('set remote exec-file '.g:ProgramRemote) + sleep 1 + endif + call s:SendToDebugger('file '.g:Elffile) + if (g:project_type != 'pfd') + call s:SendToDebugger('set solib-search-path '. g:oselas_gcc_solib_paths) + endif + if ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4')) + call s:SendToDebugger('y') + call s:SendToDebugger('monitor reset') + call s:SendToDebugger('load') + call s:SendToDebugger('break main') + else + call s:SendToDebugger('break main') + sleep 1 + call s:SendToDebugger('run') + endif + " Close Program window + execute '2hide' + endif + endif + else + call s:DeviceStartGdbServerAttach() + call s:StartDebugger(a:attach) + call s:SendToDebugger('target remote localhost:'.g:GdbPort) + " get remote src path with gdb: info sources or gdb: break main + call s:SendToDebugger('set substitute-path '.g:DlcproBasePath.' '.s:ProjectSrcDir) + endif -" call s:SendToDebugger('set can-use-hw-watchpoints 0') + " call s:SendToDebugger('set can-use-hw-watchpoints 0') + endif endfunction " ================ @@ -723,8 +826,6 @@ function! s:DlcproRegtestCmd(ip, powerswitch_ip, powerplug, laser_count, laser_t \"--powerswitch_passwd=nimda ". \"--power_plug=".a:powerplug." ". \"--power_plug_fan=8"." ". - \"--version_file=".archive_dir."/VERSION ". - \"--firmware_file=".archive_dir."/DLCpro-archive.fw ". \"--license_tool=".licensetool." ". \"--license_keyfile=".s:ProjectSrcDir."/license/libdlcprolicense/rsa-private.key ". \"--log-cli-level=INFO "