Hi Lwazi,

I've got semihosting syslog working, thanks to your precious insight.

I had to add this into my defconfig:
 - CONFIG_ARM_SEMIHOSTING_SYSLOG=y
 - CONFIG_DEV_CONSOLE=n
 - CONFIG_SYSLOG_DEFAULT=y

And remove:
 - CONFIG_UART0_SERIAL_CONSOLE=y

I also had to enclose up_putc in rp2040_serial.c like you did in uart_16550, 
and also modified arm_lowputc to direct output to up_putc.

Best regards,
Jean.

> On 9 Oct 2025, at 22:45, Lwazi Dube <[email protected]> wrote:
> 
> 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