рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЛрдЪрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдмреЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рдХреЛ рдкреБрдирдГ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдореИрдВрдиреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдпрд╣ рдирд┐рд╖рд┐рджреНрдз рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреЛрдИ рдЧрд▓рддреА рдХреА рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдХрд░реВрдВрдЧрд╛ :)
рдЗрд╕рд▓рд┐рдП...
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛрдб рд▓рд┐рдЦрд╛ Epiphan AV.io рдкрдВрдХреНрддрд┐ рдХрд╛ grabbers:
- AV.io HD - рд╣рдорд╛рд░реЗ рдкрд╛рдпрд▓рдЯ, рдЬрд┐рд╕ рдкрд░ рдмрд╣реБрдд рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- AV.io sdi - рдкрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛
- AV.io 4K - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЕрдм рд╣рдо рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
- KVM2USB 3.0 - AV.io HD рдХрд╛ рдЧрд╣рд░рд╛ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓рдЧрднрдЧ рдХреЛрдИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде, рд╡реЗ рдПрдХ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рд╕рд░реВ FX3 рд╡рд╣рд╛рдБ рд╢рд╛рдорд┐рд▓ рдерд╛ , рдФрд░ SDK рдереНрд░реЗрдбрдПрдХреНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ JTAG рдбрд┐рдмрдЧрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдУрдкрдирдУрд╕реАрдбреА рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдУрд▓реАрдореЗрдХреНрд╕ рдПрдЖрд░рдПрдо-рдпреВрдПрд╕рдмреА-рдУрд╕реАрдбреА-рдПрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдУрдкрдирдУрд╕реАрдбреА рдХреЛ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореВрд▓ рд╕рдорд░реНрдерди рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реНрдЯреИрдХрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд╕реЗ рдЕрд▓рдЧ рдерд╛ред рдореБрдЭреЗ рд╕рдордЭрдирд╛ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдерд╛ ред рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП JTAG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд▓рд╛рдн рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рддрд░рд┐рдд рдХрд╛рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдЗрд╕рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд▓ рд░рд╣рд╛ рд╣реИред рдЕрдм рдпрд╣ Xilinx рдХреЗ FPGA рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдмреНрд▓рд╛рдЬрд╝ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдмрд╛рд░реА рд╣реИ, рдЬрд╣рд╛рдБ рдЖрдк рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП FreeRTOS рд╕рдВрд╕реНрдХрд░рдг 10.x рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реА рд╣реА рд╣реИ: рдбрд┐рдмрдЧрд░ рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ!
XSDK рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧреАрдд
Xilinx рдПрдХ ARM Cortex-A53, ARM Cortex-R5 рдФрд░ MicroBlaze рдХреЛрд░ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕рдХрд░ рдПрдХреАрдХреГрдд рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрдмреНрд▓рд╛рдЬ рдЕрд▓рдЧ рдЦрдбрд╝рд╛ рд╣реИ - рдпрд╣ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИ рдЬрд┐рд╕реЗ FPGA рдХреЗ рдЕрдВрджрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗрд╡рд▓ рдЪрд┐рдк рдореЗрдВ рдореБрдХреНрдд рд╕реНрдерд╛рди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИред
( CPU, FPGA, тАФ Vivado) тАФ XSDK ( 2020 Vitis), Eclipse. FPGA . , JTAG ( OpenOCD!) , . : , , .
, Eclipse, , тАФ XSTC. . .
.
JTAG hw_server
. TCP , тАФ 3121, , , 3000 тАФ GDB :
N+0
(3000) тАФ ARM Cortex-A53N+1
(3001) тАФ ARM Cortex-R5N+2
(3002) тАФ MicroBlaze ( )
-, .
, . , . , ( !) тАФ System Debugger GDB. MicroBlaze GDB тАФ mb-gdb
.
System Debugger . , Xilinx GDB тАФ .
,
, RTOS OpenOCD, , , :
- RTOS TCB (Thread Control Block), , . . ( ) тАФ Reverse Engineering! : , , .
- RTOS тАФ . , , . , , тАФ . .. . тАФ .
- 1 тАФ TCB ( тАФ RTOS).
, GDB GDB , info threads
info registers
thread N
bt
.
, RTOS , , RTOS ( , SDK , ). , .
: . . p
, , . , ThreadX Cypress FX3. , . тАФ .
тАж GDB-client GDB-server , , , MitM ""? , , , , ?
, : . gdbproxy , .
тАФ . C++ ( , , ), Asio, C++17 , , C++2a тАФ , , , 100%, 90% !
,
, тАФ . . Asio , . . .
: . TCB, . тАж GDB- . . тАж ! тАФ . , , ( тАФ ) : qSymbol::
, : - ? тАФ . тАФ , . qSymbol:NAME
, qSymbol:ADDR:NAME
qSymbol::NAME
, nullptr
. - ( , тАФ ) , .
. , , , , тАФ тАж , !
.. , .
, : , . .
, . . (SMP , ) тАФ . GDB ( ) тАФ : . .
, GDB-client . , . : - , - SP (Stack Pointer) FP (Frame Pointer) . , .
: Set Current Thread ( OK EXX тАФ XX тАФ , ), . RTOS, , , . , тАФ . тАФ Current Execution? : тАФ . , . ! . Set Current Thread Set Current Thread , xxxxxxxx
, тАФ ! , RTOS , Set Current Thread , Set Current Thread . : . .
, SP : TCB . SP , .
, . . Stop Reply Packets. , . , breakpoint, watchpoint Break ( , , 0x03 Stop Reply Packet). , , . Stop Reply Packet, . . Stop Reply Packets : vCont
c
тАФ Continue s
тАФ Step ( ).
. , , .
, , . : . тАФ . GDB. MicroBlaze GDB microblaze-tdep.h
enum microblaze_regnum
:
enum microblaze_regnum
{
MICROBLAZE_R0_REGNUM,
MICROBLAZE_R1_REGNUM, MICROBLAZE_SP_REGNUM = MICROBLAZE_R1_REGNUM,
MICROBLAZE_R2_REGNUM,
MICROBLAZE_R3_REGNUM, MICROBLAZE_RETVAL_REGNUM = MICROBLAZE_R3_REGNUM,
MICROBLAZE_R4_REGNUM,
MICROBLAZE_R5_REGNUM, MICROBLAZE_FIRST_ARGREG = MICROBLAZE_R5_REGNUM,
MICROBLAZE_R6_REGNUM,
MICROBLAZE_R7_REGNUM,
MICROBLAZE_R8_REGNUM,
MICROBLAZE_R9_REGNUM,
MICROBLAZE_R10_REGNUM, MICROBLAZE_LAST_ARGREG = MICROBLAZE_R10_REGNUM,
MICROBLAZE_R11_REGNUM,
MICROBLAZE_R12_REGNUM,
MICROBLAZE_R13_REGNUM,
MICROBLAZE_R14_REGNUM,
MICROBLAZE_R15_REGNUM,
MICROBLAZE_R16_REGNUM,
MICROBLAZE_R17_REGNUM,
MICROBLAZE_R18_REGNUM,
MICROBLAZE_R19_REGNUM,
MICROBLAZE_R20_REGNUM,
MICROBLAZE_R21_REGNUM,
MICROBLAZE_R22_REGNUM,
MICROBLAZE_R23_REGNUM,
MICROBLAZE_R24_REGNUM,
MICROBLAZE_R25_REGNUM,
MICROBLAZE_R26_REGNUM,
MICROBLAZE_R27_REGNUM,
MICROBLAZE_R28_REGNUM,
MICROBLAZE_R29_REGNUM,
MICROBLAZE_R30_REGNUM,
MICROBLAZE_R31_REGNUM,
MICROBLAZE_PC_REGNUM,
MICROBLAZE_MSR_REGNUM,
MICROBLAZE_EAR_REGNUM,
MICROBLAZE_ESR_REGNUM,
MICROBLAZE_FSR_REGNUM,
MICROBLAZE_BTR_REGNUM,
MICROBLAZE_PVR0_REGNUM,
MICROBLAZE_PVR1_REGNUM,
MICROBLAZE_PVR2_REGNUM,
MICROBLAZE_PVR3_REGNUM,
MICROBLAZE_PVR4_REGNUM,
MICROBLAZE_PVR5_REGNUM,
MICROBLAZE_PVR6_REGNUM,
MICROBLAZE_PVR7_REGNUM,
MICROBLAZE_PVR8_REGNUM,
MICROBLAZE_PVR9_REGNUM,
MICROBLAZE_PVR10_REGNUM,
MICROBLAZE_PVR11_REGNUM,
MICROBLAZE_REDR_REGNUM,
MICROBLAZE_RPID_REGNUM,
MICROBLAZE_RZPR_REGNUM,
MICROBLAZE_RTLBX_REGNUM,
MICROBLAZE_RTLBSX_REGNUM,
MICROBLAZE_RTLBLO_REGNUM,
MICROBLAZE_RTLBHI_REGNUM,
MICROBLAZE_SLR_REGNUM, MICROBLAZE_NUM_CORE_REGS = MICROBLAZE_SLR_REGNUM,
MICROBLAZE_SHR_REGNUM,
MICROBLAZE_NUM_REGS
};
, . - , , 00000000
xxxxxxxx
, тАФ , тАФ : unavail. тАФ . , qFeatures
(TBD: !) , тАФ .
, ?
: https://github.com/h4tr3d/gdbproxy/
, BSD MIT. OpenOCD (, : , , , ). .
: . , , RTOS, . . .
?
XSDK:
- тАФ GDB , System Debugger
- GDB, 4002 (
gdbproxy
, ) gdbproxy
, XSDK hw_server
:
./gdbproxy --port 4002 --remote-host localhost --remote-port 3002 -- mb_freertos
- ...
- PROFIT!
рд░рд┐рдореЛрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ hw_server
, XSDK рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЫреЛрдЯреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдХрд╛рд░рдг, рдЗрд╕реЗ gdbproxy
рдЙрд╕реА рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП hw_server
ред
рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо
рдХреЛрдИ рдирд╣реАрдВред рдмрд╕ рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛: FreeRTOS рдФрд░ MicroBlaze рдкрд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред