Skip to content

The uart printf statements block or do not print #1188

@stdefeber

Description

@stdefeber

Describe the bug
I have written an srecord loader for the NEORV32.
Please see code attached.
When compiling this code as application, it seems to work, except for being able to write to IMEM, since IMEM becomes a ROM when the
int_bootloader_en flag is false.

When compiling it as bootloader, so with int_bootloader_en flag is true, it does not pass the initial printf statement.
Replacing the neorv32_uart0_printf with a macro, as defined in the bootloader example code, the srecord parser works.
This is what is currently implemented in the attached code.

To Reproduce

  • replace PRINT_TEXT with neorv32_uart0_printf
  • compile attached code with bootloader as target

Expected behavior
The srecord loader should at least print "<>"

Screenshots
If applicable, add screenshots to help explain your problem.

Environment:

  • Ubuntu 24.04.1 LTS
  • GCC Version
    • RISC-V: 13.2.0
    • native: 13.3.0
  • Libraries used: mpfr, libmpc

Hardware:

  • Hardware version 1.10.5
  • Implemented CPU extensions: C, M,
  • peripherals, 2*uart, i2c, spi, gpio, mtime, xbus, imem, dmem, debugger
  • Hardware modifications: None

bootloader.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    SWSoftware-relatedtroubleshootingSomething is not working as expected

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions