From c7d505c7b1e5564831266a00a68faeeb00efee19 Mon Sep 17 00:00:00 2001 From: Neo Xu Date: Wed, 5 Feb 2025 11:29:28 +0800 Subject: [PATCH 1/2] gdbstub: fix memory binary upload on latest GDB GDB release 16.2 recently to fix the incompatibility issue with LLDB. For us, the only change is stub must report it support feature 'binary-upload' before GDB will use this feature. For more information, find bug report and discussion in https://sourceware.org/bugzilla/show_bug.cgi?id=32593 Use GDB 16.2, now it works with binary upload. ``` [remote] Sending packet: $x39c,4#a7 [remote] Received Ack [remote] Packet received: b\000\203 ``` Signed-off-by: Neo Xu --- libs/libc/gdbstub/lib_gdbstub.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/libc/gdbstub/lib_gdbstub.c b/libs/libc/gdbstub/lib_gdbstub.c index bbc5a8e0c82b9..ca72821c9851a 100644 --- a/libs/libc/gdbstub/lib_gdbstub.c +++ b/libs/libc/gdbstub/lib_gdbstub.c @@ -1387,11 +1387,11 @@ static int gdb_query(FAR struct gdb_state_s *state) { #ifdef CONFIG_ARCH_HAVE_DEBUG state->pkt_len = sprintf(state->pkt_buf, - "hwbreak+;PacketSize=%zx", + "binary-upload+;hwbreak+;PacketSize=%zx", sizeof(state->pkt_buf)); #else state->pkt_len = sprintf(state->pkt_buf, - "PacketSize=%zx", + "binary-upload+;PacketSize=%zx", sizeof(state->pkt_buf)); #endif gdb_send_packet(state); From e2314d3338d93af776584a44dfd331e67445dfbb Mon Sep 17 00:00:00 2001 From: Neo Xu Date: Wed, 5 Feb 2025 11:42:56 +0800 Subject: [PATCH 2/2] board/msp3-an547: add gdbstub config Add this config so we can test GDB stub feature easily. Signed-off-by: Neo Xu --- .../mps/mps3-an547/configs/gdbstub/defconfig | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 boards/arm/mps/mps3-an547/configs/gdbstub/defconfig diff --git a/boards/arm/mps/mps3-an547/configs/gdbstub/defconfig b/boards/arm/mps/mps3-an547/configs/gdbstub/defconfig new file mode 100644 index 0000000000000..c998d8cb4d9b2 --- /dev/null +++ b/boards/arm/mps/mps3-an547/configs/gdbstub/defconfig @@ -0,0 +1,86 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DEBUG_WARN is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="mps3-an547" +CONFIG_ARCH_BOARD_MPS3_AN547=y +CONFIG_ARCH_CHIP="mps" +CONFIG_ARCH_CHIP_MPS3_AN547=y +CONFIG_ARCH_CHIP_MPS=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV8M_SYSTICK=y +CONFIG_BOARD_MEMORY_RANGE="{0,0x80000,0x5},{0x01000000,0x01200000,0x7},{0x22000000,0x22200000,0x7},{0x60000000,0xdffffff8,0x7},{0,0,0}" +CONFIG_BUILTIN=y +CONFIG_CMSDK_UART0=y +CONFIG_CMSDK_UART0_BASE=0x49303000 +CONFIG_CMSDK_UART0_CLOCK=25000000 +CONFIG_CMSDK_UART0_OV_IRQ=59 +CONFIG_CMSDK_UART0_RX_IRQ=50 +CONFIG_CMSDK_UART0_SERIAL_CONSOLE=y +CONFIG_CMSDK_UART0_TX_IRQ=49 +CONFIG_CMSDK_UART1=y +CONFIG_CMSDK_UART1_BASE=0x49304000 +CONFIG_CMSDK_UART1_CLOCK=25000000 +CONFIG_CMSDK_UART1_OV_IRQ=60 +CONFIG_CMSDK_UART1_RX_IRQ=52 +CONFIG_CMSDK_UART1_TX_IRQ=51 +CONFIG_CMSDK_UART=y +CONFIG_DEBUG_ASSERTIONS=y +CONFIG_DEBUG_BUSFAULT=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_HARDFAULT_ALERT=y +CONFIG_DEBUG_SCHED=y +CONFIG_DEBUG_SCHED_ERROR=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEBUG_USAGEFAULT=y +CONFIG_DEFAULT_TASK_STACKSIZE=4096 +CONFIG_EXAMPLES_HELLO=y +CONFIG_EXPERIMENTAL=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_FS_TMPFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_MEMFD_ERROR=y +CONFIG_LIB_GDBSTUB=y +CONFIG_LIB_GDBSTUB_DEBUG=y +CONFIG_MM_REGIONS=2 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAMLOG=y +CONFIG_RAM_SIZE=2097152 +CONFIG_RAM_START=0x01000000 +CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_HPWORKPRIORITY=192 +CONFIG_SCHED_IRQMONITOR=y +CONFIG_SERIAL_GDBSTUB=y +CONFIG_SPINLOCK=y +CONFIG_STACK_COLORATION=y +CONFIG_STANDARD_SERIAL=y +CONFIG_START_DAY=25 +CONFIG_START_MONTH=4 +CONFIG_START_YEAR=2023 +CONFIG_SYMTAB_ORDEREDBYNAME=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_SYSTEM=y +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_TIMER=y +CONFIG_TIMER_ARCH=y +CONFIG_TTY_FORCE_PANIC=y +CONFIG_USEC_PER_TICK=1000