From 73c51bd040462964f591ed5168fdb3469a756701 Mon Sep 17 00:00:00 2001 From: Stefan Liebl Date: Mon, 22 Jul 2024 15:27:01 +0200 Subject: [PATCH] invoke --- vimfiles.stefan/plugin/toptica.vim | 94 +++++++++++++++++------------- 1 file changed, 53 insertions(+), 41 deletions(-) diff --git a/vimfiles.stefan/plugin/toptica.vim b/vimfiles.stefan/plugin/toptica.vim index 2e3518d..ec196d4 100644 --- a/vimfiles.stefan/plugin/toptica.vim +++ b/vimfiles.stefan/plugin/toptica.vim @@ -79,7 +79,7 @@ function! s:ProjectSet(project_type, project_base_dir) let g:ProjectSrcDirRel = 'src' let s:ProjectSrcDir = s:ProjectBaseDir.'/'.g:ProjectSrcDirRel - let g:ProjectBuildDir = s:ProjectBaseDir.'/build' + " let g:ProjectBuildDir = s:ProjectBaseDir.'/build' let s:oselas_gcc4_lastname = 'arm-cortexa8-linux-gnueabi' let s:oselas_gcc4_root = '/opt/OSELAS.Toolchain-2012.12.1/'.s:oselas_gcc4_lastname.'/'. @@ -92,7 +92,7 @@ function! s:ProjectSet(project_type, project_base_dir) if s:use_invoke let g:new_compiler = v:false else - let g:GccRoot = s:oselas_gcc4_root + " 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/'.':'. @@ -108,7 +108,7 @@ function! s:ProjectSet(project_type, project_base_dir) if s:use_invoke let g:new_compiler = v:true else - let g:GccRoot = s:oselas_gcc_root + " 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/'.':'. @@ -121,13 +121,15 @@ function! s:ProjectSet(project_type, project_base_dir) function! g:Compiler_version() let cmakefile = g:ProjectBuildDir . '/CMakeCache.txt' - for line in readfile(cmakefile) - if match(line, 'NEW_COMPILER:BOOL=OFF') >= 0 - return 'old' - elseif match(line, 'NEW_COMPILER:BOOL=ON') >= 0 - return 'new' - endif - endfor + if filereadable(cmakefile) + for line in readfile(cmakefile) + if match(line, 'NEW_COMPILER:BOOL=OFF') >= 0 + return 'old' + elseif match(line, 'NEW_COMPILER:BOOL=ON') >= 0 + return 'new' + endif + endfor + endif return 0 endfunction @@ -135,11 +137,11 @@ function! s:ProjectSet(project_type, project_base_dir) execute 'cd '.s:ProjectSrcDir execute 'set path-=./**' execute 'set path+=' . s:ProjectSrcDir.'/**' - execute 'set path+=' . g:ProjectBuildDir.'/**' - let s:jlink_path = '/home/stefan/opt/SEGGER/JLink_Linux_V796k_x86_64' + " execute 'set path+=' . g:ProjectBuildDir.'/**' let s:use_invoke = v:false let s:invoke_tasks = '' + let s:gdb_connect_script = '' if (g:project_type == 'dlcpro') let s:use_invoke = v:true @@ -151,6 +153,9 @@ function! s:ProjectSet(project_type, project_base_dir) 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 + let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/dlcpro' + let s:gdb_connect_script = g:ProjectBuildDir.'/gdb-connect.txt' + " let s:gdb_connect_script = '~/tools/invoke/'.g:project_type.'/gdb-connect.txt' command! DlcproEmissionOn call s:DlcproEmission('1') command! DlcproEmissionOff call s:DlcproEmission('0') command! DlcproShutup call s:DlcproShutup() @@ -262,7 +267,6 @@ function! s:ProjectSet(project_type, project_base_dir) let g:DeviceIP = 'topmode_stefan' let g:DebugRemote = v:true let g:GdbPort = '2345' - let g:GccRoot = s:oselas_gcc4_root let g:SshOpts = "" let g:SshOpts2 = "" call s:set_oselas_gcc4() @@ -285,9 +289,7 @@ function! s:ProjectSet(project_type, project_base_dir) let s:makeprg = 'cmake --build . --target' let g:DebugRemote = v:true let g:GdbPort = '2331' - let g:GccRoot = '/opt/gcc-arm-none-eabi-8-2019-q3-update' - let g:termdebugger = g:GccRoot.'/bin/arm-none-eabi-gdb' - let $PATH = g:GccRoot.'/bin'.':'.s:path_orig + let g:termdebugger = 'arm-none-eabi-gdb' elseif (g:project_type == 'servoboard') let s:Program = '/servo-board-image.bin' let s:Elffile = '/application/servo-board.elf' @@ -295,9 +297,8 @@ function! s:ProjectSet(project_type, project_base_dir) let s:makeprg = 'cmake --build . --target' let g:DebugRemote = v:true let g:GdbPort = '2331' - let g:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-8-2019-q3-update' - let g:termdebugger = g:GccRoot.'/bin/arm-none-eabi-gdb' - let $PATH = g:GccRoot.'/bin'.':'.s:path_orig + " let g:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-8-2019-q3-update' + let g:termdebugger = 'arm-none-eabi-gdb' elseif (g:project_type == 'dl-motor') let s:Program = '/dl-motor-image.bin' let s:Elffile = '/application/dl-motor.elf' @@ -305,9 +306,8 @@ function! s:ProjectSet(project_type, project_base_dir) let s:makeprg = 'cmake --build . --target' let g:DebugRemote = v:true let g:GdbPort = '2331' - 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 + " let g:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-9-2020-q2-update' + let g:termdebugger = 'arm-none-eabi-gdb' elseif (g:project_type == 'pfd') let s:use_invoke = v:true let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug' @@ -317,9 +317,9 @@ function! s:ProjectSet(project_type, project_base_dir) 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 + " let g:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-10.3-2021.10' + let g:termdebugger = 'arm-none-eabi-gdb' + let s:gdb_connect_script = g:ProjectBuildDir.'/gdb-connect.txt' elseif (g:project_type == 'operation-panel-f1') let g:stm32_target = 'STM32F10X' let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin' @@ -328,10 +328,9 @@ function! s:ProjectSet(project_type, project_base_dir) let s:makeprg = 'cmake --build . --target' let g:DebugRemote = v:true let g:GdbPort = '3333' - 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:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-9-2020-q2-update' + let g:termdebugger = 'arm-none-eabi-gdb' let s:stm_cfg = 'stm32f1x' - let $PATH = g:GccRoot.'/bin'.':'.s:path_orig elseif (g:project_type == 'operation-panel-f4') let g:stm32_target = 'STM32F4XX' let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin' @@ -340,10 +339,9 @@ function! s:ProjectSet(project_type, project_base_dir) let s:makeprg = 'cmake --build . --target' let g:DebugRemote = v:true let g:GdbPort = '3333' - 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:GccRoot = '/home/stefan/opt/gcc/gcc-arm-none-eabi-9-2020-q2-update' + let g:termdebugger = 'arm-none-eabi-gdb' let s:stm_cfg = 'stm32f4x' - let $PATH = g:GccRoot.'/bin'.':'.s:path_orig elseif (g:project_type == 'decof') let s:makegoals = ['all'] let s:makeprg = 'cmake --build . --target' @@ -494,8 +492,10 @@ function! s:Make(args, async_mode) let l:args = 'build' " default endif " echom 'l:args2:'.l:args.':' - if l:args =~ ' build ' && g:new_compiler - let l:args .= ' --new-compiler' + if exists("g:new_compiler") + if l:args =~ '\' && g:new_compiler && l:args !~ '--new-compiler' + let l:args .= ' --new-compiler' + endif endif " echom 'l:args3:'.l:args.':' let &makeprg = l:makeprg @@ -662,11 +662,11 @@ function! s:DlcproShutup() endfunction function! s:JLinkFlashProgram() - call term_start(s:ProjectSrcDir.'/flash_firmware.py -j '.s:jlink_path.'/JLinkExe -a 0x8000000 '.g:Program) + call term_start(s:ProjectSrcDir.'/flash_firmware.py -j JLinkExe -a 0x8000000 '.g:Program) endfunction function! g:JLinkSWOviewer() - let cmd = s:jlink_path.'/JLinkSWOViewerCLExe -device STM32H743ZI -itmmask 0xffffffff -swofreq 450000' + let cmd = '/JLinkSWOViewerCLExe -device STM32H743ZI -itmmask 0xffffffff -swofreq 450000' call asyncrun#quickfix_toggle(10, 1) execute 'AsyncRun -mode=async @ ' . cmd endfunction @@ -696,7 +696,7 @@ function! s:DeviceStartGdbServer() 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 &') + call s:Call_and_log('JLinkGDBServer -if SWD -device STM32H743ZI &') elseif ((g:project_type == 'operation-panel-f1') || (g:project_type == 'operation-panel-f4')) call s:Call_and_log('pkill --full openocd') call s:Call_and_log('openocd -f interface/stlink.cfg -f target/'.s:stm_cfg.'.cfg &') @@ -752,16 +752,28 @@ let g:DlcproBasePath = "/jenkins/workspace/pro--firmware_release_1.9.0-DCESJ5C5R function! s:DeviceDebug(attach) if s:use_invoke if g:DebugRemote - execute '!invoke '.s:invoke_tasks.' -e gdb-server --target-ip='.g:DeviceIP autocmd! User TermdebugStartPre autocmd! User TermdebugStartPost autocmd! User TermdebugStopPost - " autocmd User TermdebugStartPost call term_sendkeys('',"cd .build/dlcpro-new\nsource ../../gdb-connect.txt\n") - autocmd User TermdebugStartPost call term_sendkeys('',"cd .build/dlcpro-new\nsource ~/tools/invoke/".g:project_type."/gdb-connect.txt\n") - autocmd User TermdebugStopPost call system('pkill --full gdbserver') + let gdb_server_cmd = 'invoke -e gdb-server' + if exists('g:DeviceIP') + let gdb_server_cmd .= ' --target_ip='.g:DeviceIP + endif + let gdb_server_cmd .= ' --project='.g:project_type + if g:new_compiler + let gdb_server_cmd .= ' --new-compiler' + endif + " call asyncrun#quickfix_toggle(10, 1) + execute 'AsyncRun -mode=async @ '.gdb_server_cmd + autocmd User TermdebugStopPost execute 'AsyncStop' + if s:gdb_connect_script != '' + " autocmd User TermdebugStartPost call term_sendkeys('',"cd .build/dlcpro-new\nsource ".s:gdb_connect_script."\n") + autocmd User TermdebugStartPost call term_sendkeys('',"source ".s:gdb_connect_script."\n") + endif + " autocmd User TermdebugStopPost call system('pkill --full gdbserver') Termdebug " Close Program window - execute '2hide' + " execute '2hide' else call s:StartDebugger(g:Elffile, a:attach) call s:SendToDebugger('file '.g:Elffile)