I just tried this on an am335x board (armv7a) and got some logs after the
gdb prompt.

1) I am using openocd 0.12.0

2) The board's uart driver is uart_16550. I exclude (16550) up_putc so that
the other one in "arm_semi_syslog.c" is used.

#ifndef CONFIG_ARM_SEMIHOSTING_SYSLOG <-----
#ifdef HAVE_16550_CONSOLE
void up_putc(int ch)
{
  FAR struct u16550_s *priv = (FAR struct u16550_s *)CONSOLE_DEV.priv;

  u16550_putc(priv, ch);
}
#endif
#endif

3) Fix multiple definition error in "arm_nputs.c" ...

#ifndef CONFIG_ARM_SEMIHOSTING_SYSLOG <----
void up_nputs(const char *str, size_t len)
{
  while (len-- > 0 && *str)
    {
      up_putc(*str++);
    }
}
#endif

4)
[*] Enable Debug Features
         *** Debug SYSLOG Output Controls ***
   [*]   Enable Error Output
   [*]     Enable Warnings Output
   [*]       Enable Informational Debug Output

  [*]   Memory Manager Debug Features
   [*]     Memory Manager Error Output
   [*]     Memory Manager Warnings Output
   [*]     Memory Manager Informational Output

5) Load and run using gdb

adapter speed: 16000 kHz
core state: ARM
semihosting is enabled
semihosting fileio is enabled
(gdb) load
Loading section .text, size 0x205c4 lma 0x8a000000
Loading section .ARM.exidx, size 0x8 lma 0x8a0205c4
Loading section .data, size 0x394 lma 0x8a0205cc
Start address 0x8a0002e0, load size 133472
Transfer rate: 210 KB/sec, 12133 bytes/write.
(gdb) c
Continuing.
mm_initialize: Heap: name=Umem, start=0x8a0229e4 size=368956956
mm_addregion: Region 1: base=0x8a022b44 size=368956600
mm_malloc: Allocated 0x8a022b58, size 72
mm_malloc: Allocated 0x8a022ba0, size 40
mm_malloc: Allocated 0x8a022bc8, size 48
mm_malloc: Allocated 0x8a022bf8, size 48
mm_malloc: Allocated 0x8a022c28, size 48
mm_malloc: Allocated 0x8a022c58, size 48
mm_malloc: Allocated 0x8a022c88, size 48
mm_malloc: Allocated 0x8a022cb8, size 48
mm_malloc: Allocated 0x8a022ce8, size 1000
mm_malloc: Allocated 0x8a0230d0, size 2056

Program stopped.
_vector_start () at armv7-a/arm_vectortab.S:68
68              ldr             pc, .Lsvchandler                /* 0x08:
Software interrupt */
(gdb)


On Wed, 8 Oct 2025 at 14:00, Adam Feuer <[email protected]> wrote:

> Thanks Jean and Alan. At work right now, and I also don't remember exactly
> what I did for that– I'll need to reply privately.
>
> Yes, Alan, if I do remember what I did I would be grateful if you did
> update the docs.
>
> -adam
>
> On Wed, Oct 8, 2025 at 10:06 AM Alan C. Assis <[email protected]> wrote:
>
> > Hi Jean,
> >
> > Looking at boards/ seems like the semihost for file system is the most
> > common usage, but yes there is one and only one board with SEMIHOST
> SYSLOG
> > support, that you found.
> >
> > According to git blame this support was added by Adam Feuer (CC here),
> but
> > there is no Documentation/ about it.
> >
> > Adam, do you remember how to test it? If you can share details here I
> will
> > expand the semihost documentation to include syslog support.
> >
> > BR,
> >
> > Alan
> >
> > On Wed, Oct 8, 2025 at 1:41 PM Jean Thomas <[email protected]>
> wrote:
> >
> >> Hi everyone,
> >>
> >> I've been trying to get ARM semihosting syslog working on a RP2040 board
> >> for a little while (debugged using Pi's debugprobe). I added this into
> my
> >> defconfig:
> >>
> >> CONFIG_ARM_SEMIHOSTING_SYSLOG=y
> >> CONFIG_SYSLOG_CHARDEV=y
> >>
> >> (inspired by sama5d3-xplained's ethernet-over-usb-2-high-speed
> defconfig)
> >>
> >> and this in my OpenOCD script:
> >>
> >> monitor arm semihosting enable
> >> monitor arm semihosting_fileio enable
> >>
> >> Syslog disappears from the UART console, but doesn't appear in
> OpenOCD...
> >> Am I doing something wrong? Does someone have an example of a working
> >> syslog over ARM semihosting example? Is there an easy way to debug
> what's
> >> going on?
> >>
> >> Cheers,
> >> Jean
> >
> >
>
> --
> Adam Feuer <[email protected]>
>

Reply via email to