Heinz Junkes commented: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5260#note_123230 I try to adapt console-config.c. But what I really don't understand (I don't get it) is why I can't set a breakpoint on 'input_char_pl011'. On 'output_char_pl011' works. ``` (gdb) b input_char_pl011 Function "input_char_pl011" not defined. Make breakpoint pending on future shared library load? (y or [n]) n (gdb) b output_char_pl011 ``` and when the breakpoint is reached I see the input function in the source code in the listing? ``` Make breakpoint pending on future shared library load? (y or [n]) n (gdb) b output_char_pl011 Breakpoint 1 at 0x200b24: file ../../../bsps/arm/raspberrypi/console/console-config.c, line 58. (gdb) c Continuing. Thread 1 hit Breakpoint 1, output_char_pl011 (c=13 '\r') at ../../../bsps/arm/raspberrypi/console/console-config.c:58 58 return arm_pl011_read_polled(&pl011_context.base); (gdb) list 53 54 rpi_fb_context fb_context; 55 56 static int input_char_pl011(void) 57 { 58 return arm_pl011_read_polled(&pl011_context.base); 59 } 60 61 static void output_char_pl011(char c) 62 { ``` My students have implemented the following code (with the help op ChatGPT they say) with which you can read an input: ``` #define PL011_UART_BASE 0x3F201000 #define UART_POLL_INTERVAL 100 // Polling interval in milliseconds typedef void (*BSP_output_char_function_type)(char c); typedef int (*BSP_polling_getchar_function_type)(void); extern BSP_output_char_function_type BSP_output_char; extern BSP_polling_getchar_function_type BSP_poll_char; static int pl011_poll_getchar(void) { volatile uint32_t *regs = (volatile uint32_t *) PL011_UART_BASE; if (regs[0x18 / 4] & (1 << 4)) { // UART_FR_RXFE return -1; } return regs[0x00 / 4] & 0xFF; } rtems_task Init(rtems_task_argument arg) { printf("UART ready. Echoing:\n"); BSP_poll_char = pl011_poll_getchar; while (1) { int c = BSP_poll_char(); // Try to read a character if (c >= 0) { BSP_output_char((char)c); // Echo the character } rtems_task_wake_after(RTEMS_MILLISECONDS_TO_TICKS(UART_POLL_INTERVAL)); // Poll every 100 ms } } #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER #define CONFIGURE_MAXIMUM_TASKS 1 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE #define CONFIGURE_INIT #include <rtems/confdefs.h> ``` -- View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5260#note_123230 You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________ bugs mailing list bugs@rtems.org http://lists.rtems.org/mailman/listinfo/bugs