+ invoke, pfd, - dlcpro-fw-file

This commit is contained in:
Stefan Liebl 2024-07-03 09:08:52 +02:00
parent 7195f61705
commit 28916c67c5

View File

@ -1,4 +1,5 @@
command -nargs=1 -complete=dir DlcPro call s:ProjectSet('dlcpro', '<args>') command -nargs=1 -complete=dir DlcPro call s:ProjectSet('dlcpro', '<args>')
command -nargs=1 -complete=dir DlcProOld call s:ProjectSet('dlcpro-old', '<args>')
command -nargs=1 -complete=dir DlcProShg call s:ProjectSet('shg', '<args>') command -nargs=1 -complete=dir DlcProShg call s:ProjectSet('shg', '<args>')
command -nargs=1 -complete=dir DlcProGui call s:ProjectSet('dlcpro-gui', '<args>') command -nargs=1 -complete=dir DlcProGui call s:ProjectSet('dlcpro-gui', '<args>')
command -nargs=1 -complete=dir DlcProTui call s:ProjectSet('dlcpro-tui', '<args>') command -nargs=1 -complete=dir DlcProTui call s:ProjectSet('dlcpro-tui', '<args>')
@ -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', '<args>') command -nargs=1 -complete=dir DlcProCan call s:ProjectSet('dlcpro-can', '<args>')
command -nargs=1 -complete=dir DlcProSpecalyser call s:ProjectSet('dlcpro-specalyser', '<args>') command -nargs=1 -complete=dir DlcProSpecalyser call s:ProjectSet('dlcpro-specalyser', '<args>')
command -nargs=1 -complete=dir Topmode call s:ProjectSet('topmode', '<args>') command -nargs=1 -complete=dir Topmode call s:ProjectSet('topmode', '<args>')
command -nargs=1 -complete=dir TopmodeOld call s:ProjectSet('topmode-old', '<args>')
command -nargs=1 -complete=dir TopmodeGui call s:ProjectSet('topmode-gui', '<args>') command -nargs=1 -complete=dir TopmodeGui call s:ProjectSet('topmode-gui', '<args>')
command -nargs=1 -complete=dir TopmodeGuiOld call s:ProjectSet('topmode-gui-old', '<args>')
command -nargs=1 -complete=dir DigiFalc call s:ProjectSet('digifalc', '<args>') command -nargs=1 -complete=dir DigiFalc call s:ProjectSet('digifalc', '<args>')
command -nargs=1 -complete=dir ServoBoard call s:ProjectSet('servoboard', '<args>') command -nargs=1 -complete=dir ServoBoard call s:ProjectSet('servoboard', '<args>')
command -nargs=1 -complete=dir DlMotor call s:ProjectSet('dl-motor', '<args>') command -nargs=1 -complete=dir DlMotor call s:ProjectSet('dl-motor', '<args>')
command -nargs=1 -complete=dir Pfd call s:ProjectSet('pfd', '<args>')
command -nargs=1 -complete=dir OperationPanelF1 call s:ProjectSet('operation-panel-f1', '<args>') command -nargs=1 -complete=dir OperationPanelF1 call s:ProjectSet('operation-panel-f1', '<args>')
command -nargs=1 -complete=dir OperationPanelF4 call s:ProjectSet('operation-panel-f4', '<args>') command -nargs=1 -complete=dir OperationPanelF4 call s:ProjectSet('operation-panel-f4', '<args>')
command -nargs=1 -complete=dir DeCoF call s:ProjectSet('decof', '<args>') command -nargs=1 -complete=dir DeCoF call s:ProjectSet('decof', '<args>')
@ -37,6 +41,8 @@ function! s:ProjectSet(project_type, project_base_dir)
" defaults " defaults
if (g:project_type == 'dlcpro') if (g:project_type == 'dlcpro')
let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' 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') elseif (g:project_type == 'dlcpro-tui')
let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware' let s:ProjectBaseDir = '/home/stefan/dlcpro/firmware'
elseif (g:project_type == 'dlcpro-tui-simulator') 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' let s:ProjectBaseDir = '/home/stefan/dlcpro/pc-gui'
elseif (g:project_type == 'topmode') elseif (g:project_type == 'topmode')
let s:ProjectBaseDir = '/home/stefan/topmode/firmware' 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') elseif (g:project_type == 'topmode-gui')
let s:ProjectBaseDir = '/home/stefan/topmode/pc-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') elseif (g:project_type == 'digifalc')
let s:ProjectBaseDir = '/home/stefan/dlcpro/falc/firmware' let s:ProjectBaseDir = '/home/stefan/dlcpro/falc/firmware'
elseif (g:project_type == 'servoboard') elseif (g:project_type == 'servoboard')
let s:ProjectBaseDir = '/home/stefan/dlcpro/mta/firmware' let s:ProjectBaseDir = '/home/stefan/dlcpro/mta/firmware'
elseif (g:project_type == 'dl-motor') elseif (g:project_type == 'dl-motor')
let s:ProjectBaseDir = '/home/stefan/dlcpro/dl-motor' let s:ProjectBaseDir = '/home/stefan/dlcpro/dl-motor'
elseif (g:project_type == 'pfd')
let s:ProjectBaseDir = '/home/stefan/dlcpro/pfd/firmware'
else else
echo "no project" echo "no project"
endif 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/' \'gcc-12.3.1-glibc-2.33-binutils-2.39-kernel-5.4-sanitized/'
function! s:set_oselas_gcc4() function! s:set_oselas_gcc4()
let g:GccRoot = s:oselas_gcc4_root if s:use_invoke
" let g:termdebugger = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gdb' let g:new_compiler = v:false
let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb' else
let g:oselas_gcc_solib_paths = s:oselas_gcc4_root.'/'.s:oselas_gcc4_lastname.'/lib/'.':'. let g:GccRoot = s:oselas_gcc4_root
\ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/lib/'.':'. " let g:termdebugger = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gdb'
\ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/usr/lib/' let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb'
" let $PATH = s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/usr/include'.':'.s:path_orig let g:oselas_gcc_solib_paths = s:oselas_gcc4_root.'/'.s:oselas_gcc4_lastname.'/lib/'.':'.
let g:analyser = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gcc' \ s:oselas_gcc4_root.'/sysroot-'.s:oselas_gcc4_lastname.'/lib/'.':'.
let g:new_compiler = ' -DNEW_COMPILER=OFF' \ 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 endfunction
function! s:set_oselas_gcc() function! s:set_oselas_gcc()
let g:GccRoot = s:oselas_gcc_root if s:use_invoke
let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb' let g:new_compiler = v:true
let g:oselas_gcc_solib_paths = s:oselas_gcc_root.'/'.s:oselas_gcc_lastname.'/lib/'.':'. else
\ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/lib/'.':'. let g:GccRoot = s:oselas_gcc_root
\ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/usr/lib/' let g:termdebugger = s:oselas_gcc_root . 'bin/'.s:oselas_gcc_lastname.'-gdb'
" let $PATH = s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/usr/include'.':'.s:path_orig let g:oselas_gcc_solib_paths = s:oselas_gcc_root.'/'.s:oselas_gcc_lastname.'/lib/'.':'.
let g:analyser = s:oselas_gcc4_root . 'bin/'.s:oselas_gcc4_lastname.'-gcc' \ s:oselas_gcc_root.'/sysroot-'.s:oselas_gcc_lastname.'/lib/'.':'.
let g:new_compiler = ' -DNEW_COMPILER=ON' \ 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 endfunction
function! g:Compiler_version() function! g:Compiler_version()
@ -115,9 +135,23 @@ function! s:ProjectSet(project_type, project_base_dir)
execute 'set path-=./**' execute 'set path-=./**'
execute 'set path+=' . s:ProjectSrcDir.'/**' execute 'set path+=' . s:ProjectSrcDir.'/**'
execute 'set path+=' . g:ProjectBuildDir.'/**' 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') 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:Program = '/device-control/device-control'
let s:Elffile = s:Program let s:Elffile = s:Program
let g:ProgramRemote = '/opt/app/bin/device-control' 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:termdebugger = 'gdb'
let g:DebugRemote = v:false let g:DebugRemote = v:false
elseif (g:project_type == 'topmode') 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:Program = '/topmode'
let s:Elffile = s:Program let s:Elffile = s:Program
let g:ProgramRemote = '/usr/toptica/topmode' let g:ProgramRemote = '/usr/toptica/topmode'
@ -213,6 +253,10 @@ function! s:ProjectSet(project_type, project_base_dir)
let g:SshOpts2 = "" let g:SshOpts2 = ""
call s:set_oselas_gcc4() call s:set_oselas_gcc4()
elseif (g:project_type == 'topmode-gui') 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:Program = '/TOPAS_Topmode'
let s:Elffile = s:Program let s:Elffile = s:Program
let s:makegoals = [] 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:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-9-2020-q2-update'
let g:termdebugger = g:GccRoot.'/bin/arm-none-eabi-gdb' let g:termdebugger = g:GccRoot.'/bin/arm-none-eabi-gdb'
let $PATH = g:GccRoot.'/bin'.':'.s:path_orig 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') elseif (g:project_type == 'operation-panel-f1')
let g:stm32_target = 'STM32F10X' let g:stm32_target = 'STM32F10X'
let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin' let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin'
@ -325,9 +381,11 @@ function! s:ProjectSet(project_type, project_base_dir)
augroup END augroup END
function! s:DeviceFirmwareUpdate() 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() 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() call s:JLinkFlashProgram()
else else
call s:DeviceFirmwareUpdateStartLinux() call s:DeviceFirmwareUpdateStartLinux()
@ -362,14 +420,29 @@ endfunction
" Make " Make
" ==== " ====
function! GetAllMakeCompletions(ArgLead, CmdLine, CursorPos) 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 endfunction
function! s:Make(args, async_mode) function! s:Make(args, async_mode)
let &makeprg = s:makeprg
call asyncrun#quickfix_toggle(10, 1) call asyncrun#quickfix_toggle(10, 1)
" execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ --directory='.g:ProjectBuildDir.' '.a:args if s:use_invoke
execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make -cwd='.g:ProjectBuildDir. ' @ '.a:args " 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 endfunction
function! s:MakeTestBuild() function! s:MakeTestBuild()
@ -396,41 +469,52 @@ function! s:MakeCheck(filename, async_mode)
endfunction endfunction
function! s:Cmake(options, async_mode) function! s:Cmake(options, async_mode)
if !isdirectory(g:ProjectBuildDir) if s:use_invoke
call mkdir(g:ProjectBuildDir) 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 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 endfunction
function! s:Ctest(args, async_mode) function! s:Ctest(args, async_mode)
@ -544,7 +628,12 @@ function! s:DeviceFirmwareUpdateStartLinux()
endfunction endfunction
function! s:DeviceStartGdbServer() 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('pkill --full JLinkGDBServer')
call s:Call_and_log(s:jlink_path.'/JLinkGDBServer -if SWD -device STM32H743ZI &') 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')) elseif ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4'))
@ -558,7 +647,7 @@ function! s:DeviceStartGdbServer()
endfunction endfunction
function! s:DeviceStartGdbServerAttach() 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 else
call s:Call_and_log('pkill --full gdbserver') 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').'\` &"') 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/" let g:DlcproBasePath = "/jenkins/workspace/pro--firmware_release_1.9.0-DCESJ5C5R577IG5QFEWTML22UFDDZCJDGFLMDA4DCD3V2ZAGVEJA/source/"
function! s:DeviceDebug(attach) function! s:DeviceDebug(attach)
if (a:attach == 0) if s:use_invoke
" let r = s:DeviceFirmwareUpdate() if v:DebugRemote
let r = 0 execute "!invoke -e gdb-server --target-ip=".g:DeviceIP
if (r != 0) autocmd! User TermdebugStartPost
echoerr "DeviceFirmwareUpdate() failed!" autocmd! User TermdebugStopPost
else autocmd User TermdebugStartPost call term_sendkeys('',"source gdb-connect.txt\n")
if (g:DebugRemote == v:false) autocmd User TermdebugStopPost call system('pkill --full gdbserver')
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
endif endif
Termdebug
else else
call s:DeviceStartGdbServerAttach() if (a:attach == 0)
call s:StartDebugger(a:attach) " let r = s:DeviceFirmwareUpdate()
call s:SendToDebugger('target remote localhost:'.g:GdbPort) let r = 0
" get remote src path with gdb: info sources or gdb: break main if (r != 0)
call s:SendToDebugger('set substitute-path '.g:DlcproBasePath.' '.s:ProjectSrcDir) echoerr "DeviceFirmwareUpdate() failed!"
endif 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 endfunction
" ================ " ================
@ -723,8 +826,6 @@ function! s:DlcproRegtestCmd(ip, powerswitch_ip, powerplug, laser_count, laser_t
\"--powerswitch_passwd=nimda ". \"--powerswitch_passwd=nimda ".
\"--power_plug=".a:powerplug." ". \"--power_plug=".a:powerplug." ".
\"--power_plug_fan=8"." ". \"--power_plug_fan=8"." ".
\"--version_file=".archive_dir."/VERSION ".
\"--firmware_file=".archive_dir."/DLCpro-archive.fw ".
\"--license_tool=".licensetool." ". \"--license_tool=".licensetool." ".
\"--license_keyfile=".s:ProjectSrcDir."/license/libdlcprolicense/rsa-private.key ". \"--license_keyfile=".s:ProjectSrcDir."/license/libdlcprolicense/rsa-private.key ".
\"--log-cli-level=INFO " \"--log-cli-level=INFO "