07-12-2021, 09:14 AM
Hi Manuel,
Thank you for replying. Yes! Actually, that is exactly what we are doing at the moment on the FPGA Genesys2 board, working around the GDB tool to upload ELF files and further using certain GDB commands to try to read and write to memory locations. And alongside, we have OpenOCD as well. For now, we are using GDB commands such as the following to see minor operations
info all-registers
print $esi
and these seem to be working. In addition, we used the following command to see instruction set registers, if I am not wrong,
print $mm1
so then the above command shows the following
( gdb ) print $ mm1
$ 5 = { uint64 = 32768 , v2 int32 = { 32768 , 0 } , v4 int16 = { -32768 , 0 , 0 , 0 ) . V8 int8 = { 0 , -128 , 0 , 0 , 0 , 0 , 0 , 0 } }
and here I am trying to manipulate certain register values,
( gdb ) set $ mml.uint64 = 0x00000001
Remote connection closed
( gdb ) print $ mm1
$ 6 = { uint64 = 1 , v2_int32 = { 1 , 0 } . v4_int16 = { 1 , 0 , 0 , 0 ) , V8 int8 = { 1 , 2 , 0 , 0 , 0 , 0 , 0 , 0 } }
is there any other GDB approach or maybe commands we should focus on, in order to directly write and read to memory locations? I am trying to study and search more, but maybe I am not sure how put the commands together or something?
Thanks again!
Uruj
Thank you for replying. Yes! Actually, that is exactly what we are doing at the moment on the FPGA Genesys2 board, working around the GDB tool to upload ELF files and further using certain GDB commands to try to read and write to memory locations. And alongside, we have OpenOCD as well. For now, we are using GDB commands such as the following to see minor operations
info all-registers
print $esi
and these seem to be working. In addition, we used the following command to see instruction set registers, if I am not wrong,
print $mm1
so then the above command shows the following
( gdb ) print $ mm1
$ 5 = { uint64 = 32768 , v2 int32 = { 32768 , 0 } , v4 int16 = { -32768 , 0 , 0 , 0 ) . V8 int8 = { 0 , -128 , 0 , 0 , 0 , 0 , 0 , 0 } }
and here I am trying to manipulate certain register values,
( gdb ) set $ mml.uint64 = 0x00000001
Remote connection closed
( gdb ) print $ mm1
$ 6 = { uint64 = 1 , v2_int32 = { 1 , 0 } . v4_int16 = { 1 , 0 , 0 , 0 ) , V8 int8 = { 1 , 2 , 0 , 0 , 0 , 0 , 0 , 0 } }
is there any other GDB approach or maybe commands we should focus on, in order to directly write and read to memory locations? I am trying to study and search more, but maybe I am not sure how put the commands together or something?
Thanks again!
Uruj