Commit 70a6791b authored by Damien George's avatar Damien George

shared/runtime/semihosting_arm: Add mp_semihosting_rx_chars.

Signed-off-by: default avatarDamien George <damien@micropython.org>
parent 9f9c283e
......@@ -34,6 +34,7 @@
#define SYS_OPEN 0x01
#define SYS_WRITEC 0x03
#define SYS_WRITE 0x05
#define SYS_READ 0x06
#define SYS_READC 0x07
// Constants:
......@@ -91,6 +92,20 @@ int mp_semihosting_rx_char() {
return mp_semihosting_call(SYS_READC, NULL);
}
// Returns 0 on success.
int mp_semihosting_rx_chars(char *str, size_t len) {
struct {
uint32_t fd;
const char *str;
uint32_t len;
} args = {
.fd = mp_semihosting_stdout,
.str = str,
.len = len,
};
return mp_semihosting_call(SYS_READ, &args);
}
static void mp_semihosting_tx_char(char c) {
mp_semihosting_call(SYS_WRITEC, &c);
}
......
......@@ -38,6 +38,8 @@ Then make sure the debugger is attached and enables semihosting. In OpenOCD thi
done with ARM semihosting enable followed by reset. The terminal will need further
configuration to work with MicroPython (bash: stty raw -echo).
If mp_semihosting_rx_char() doesn't work then try mp_semihosting_rx_chars(str, 1).
*/
#include <stddef.h>
......@@ -45,6 +47,7 @@ configuration to work with MicroPython (bash: stty raw -echo).
void mp_semihosting_init();
int mp_semihosting_rx_char();
int mp_semihosting_rx_chars(char *str, size_t len);
uint32_t mp_semihosting_tx_strn(const char *str, size_t len);
uint32_t mp_semihosting_tx_strn_cooked(const char *str, size_t len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment