+ 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 DlcProOld call s:ProjectSet('dlcpro-old', '<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 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 DlcProSpecalyser call s:ProjectSet('dlcpro-specalyser', '<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 TopmodeGuiOld call s:ProjectSet('topmode-gui-old', '<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 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 OperationPanelF4 call s:ProjectSet('operation-panel-f4', '<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
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,6 +88,9 @@ 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()
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'
@ -84,10 +99,14 @@ function! s:ProjectSet(project_type, project_base_dir)
\ 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'
let g:dnew_compiler = ' -DNEW_COMPILER=OFF'
endif
endfunction
function! s:set_oselas_gcc()
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/'.':'.
@ -95,7 +114,8 @@ function! s:ProjectSet(project_type, project_base_dir)
\ 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'
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)
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
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,6 +469,16 @@ function! s:MakeCheck(filename, async_mode)
endfunction
function! s:Cmake(options, async_mode)
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
@ -409,10 +492,10 @@ function! s:Cmake(options, async_mode)
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'))
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:new_compiler
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"
@ -431,6 +514,7 @@ function! s:Cmake(options, async_mode)
endif
execute '!echo "cmake '.args.'" > ' g:ProjectBuildDir."/cmake_cmd"
execute 'AsyncRun -mode='.a:async_mode.' -save=2 -cwd='.g:ProjectBuildDir.' @ cmake '.args
endif
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,8 +689,18 @@ endfunction
let g:DlcproBasePath = "/jenkins/workspace/pro--firmware_release_1.9.0-DCESJ5C5R577IG5QFEWTML22UFDDZCJDGFLMDA4DCD3V2ZAGVEJA/source/"
function! s:DeviceDebug(attach)
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
if (a:attach == 0)
" let r = s:DeviceFirmwareUpdate()
" let r = s:DeviceFirmwareUpdate()
let r = 0
if (r != 0)
echoerr "DeviceFirmwareUpdate() failed!"
@ -623,7 +722,9 @@ function! s:DeviceDebug(attach)
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')
@ -634,6 +735,7 @@ function! s:DeviceDebug(attach)
sleep 1
call s:SendToDebugger('run')
endif
" Close Program window
execute '2hide'
endif
endif
@ -645,7 +747,8 @@ function! s:DeviceDebug(attach)
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 "