shared/runtime/semihosting_arm: Add mp_semihosting_rx_chars.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -34,6 +34,7 @@
|
|||||||
#define SYS_OPEN 0x01
|
#define SYS_OPEN 0x01
|
||||||
#define SYS_WRITEC 0x03
|
#define SYS_WRITEC 0x03
|
||||||
#define SYS_WRITE 0x05
|
#define SYS_WRITE 0x05
|
||||||
|
#define SYS_READ 0x06
|
||||||
#define SYS_READC 0x07
|
#define SYS_READC 0x07
|
||||||
|
|
||||||
// Constants:
|
// Constants:
|
||||||
@@ -91,6 +92,20 @@ int mp_semihosting_rx_char() {
|
|||||||
return mp_semihosting_call(SYS_READC, NULL);
|
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) {
|
static void mp_semihosting_tx_char(char c) {
|
||||||
mp_semihosting_call(SYS_WRITEC, &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
|
done with ARM semihosting enable followed by reset. The terminal will need further
|
||||||
configuration to work with MicroPython (bash: stty raw -echo).
|
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>
|
#include <stddef.h>
|
||||||
@@ -45,6 +47,7 @@ configuration to work with MicroPython (bash: stty raw -echo).
|
|||||||
|
|
||||||
void mp_semihosting_init();
|
void mp_semihosting_init();
|
||||||
int mp_semihosting_rx_char();
|
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(const char *str, size_t len);
|
||||||
uint32_t mp_semihosting_tx_strn_cooked(const char *str, size_t len);
|
uint32_t mp_semihosting_tx_strn_cooked(const char *str, size_t len);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user