#arm #qemu #uart #xpack
#arm #qemu #uart #xpack
Вопрос:
Я очень новичок в программировании QEMU и mcu, недавно практикую управление uart на QEMU. То, что я пытаюсь сделать, это виртуально подключить QEMU к хост-компьютеру через USART2.
Я узнал, что этот параметр -serial
, вероятно, может это сделать, и попытался добавить
-serial mon:stdio
=> ничего не произошло
-serial stdio
=> ошибка, но в консоли ничего не отображается.
Процессор: STM32F407VG
Плата: STM32F4-Discovery
IDE: Eclipse IDE
Хост-устройство ОС: macOS Catalina 10.15.7
Ниже приведены мои коды и конфигурация запуска
#include "stm32f4xx.h"
void UART2_Init(void);
void UART2_Write(int ch);
void delayMs(int delay);
int main(void){
UART2_Init();
while(1){
UART2_Write('H');
delayMs(500);
UART2_Write('i');
delayMs(500);
}
}
void UART2_Init(void){
RCC -> APB1ENR |= 0x20000; // Enable usart2 clock
RCC -> AHB1ENR |= 0x8; // Enable PD5 clock
GPIOD -> AFR[0] = 0x700000; // access PD5 AF7
GPIOD -> MODER |= 0x800;
USART2 -> BRR = 0x0683; // Set buad rate to 9600
USART2 -> CR1 = 0x8; // Tx enable
USART2 -> CR1 = 0x2000; // USART enable
}
void UART2_Write(int ch){
// wait until Tx buffer is empty
while(!(USART2 -> SR amp; 0x80)){
USART2 -> DR = (ch amp; 0xff);
}
}
Комментарии:
1. Функции UART Cortex-M в QEMU на момент написания этого поста недоступны. Они закомментированы из файла uart.c . Боюсь, что вам нечего делать, если вы не хотите реализовывать это самостоятельно.