Настройка клавиатуры Arm aarch64 для эмулятора qemuLinux

Ответить Пред. темаСлед. тема
Anonymous
 Настройка клавиатуры Arm aarch64 для эмулятора qemu

Сообщение Anonymous »

Хотите добавить ввод с клавиатуры для эмулятора qemu. У меня есть файл C для логики UART:

Код: Выделить всё

void uart_puts(const char *str);
void uart_putc(char c);

void notmain(void) {
volatile char *uart = (char *)0x1c090000;  // UART базова адреса
char c;

uart_puts("UART test...\n");

while (1) {
c = *uart;  // Читаємо символ з UART
if (c != 0) {  // Перевіряємо, чи є дані
uart_putc(c);  // Виводимо символ на екран
}
}
}

void uart_puts(const char *str) {
while (*str) {
uart_putc(*str++);
}
}

void uart_putc(char c) {
volatile char *uart = (char *)0x1c090000;
*uart = c;  // Виведення символа в UART
}
А вот файл .s:

Код: Выделить всё

    .globl _start
_start:
mov sp, #0x20000          // Встановлюємо стековий вказівник
bl notmain                // Викликаємо C-функцію notmain
hang:
b hang                    // Безкінечний цикл

.globl PUT32
PUT32:
str w1, [x0]              // Записуємо значення з регістра w1 в адресу, на яку вказує x0
ret                       // Повертаємося з функції
Итак, в коде C я написал логику для символов визуализации, когда я нажимаю кнопку BTS на клавиатуре. Я использую aarch64-linux-gnu для компиляции всех файлов. Вот команда для компиляции asm-файла:

Код: Выделить всё

 aarch64-linux-gnu-as --warn --fatal-warnings -march=armv8-a strap.s -o strap.o
Вот для компиляции файла C:

Код: Выделить всё

aarch64-linux-gnu-gcc -c -Wall -O2 -nostdlib -nostartfiles -ffreestanding -march=armv8-a notmain.c -o notmain.o
Я также связываю все файлы с помощью компоновщика, код которого такой:

Код: Выделить всё

/*memmap*/
MEMORY
{
ram :ORIGIN = 0x10000, LENGTH = 32K
}
SECTIONS
{
.text : { *(.text*)} > ram
.bss  : { *(.bss*)} > ram
}
И команда для связывания:

Код: Выделить всё

aarch64-linux-gnu-ld strap.o notmain.o -T memmap -o notmain.elf
а для использования объектов я использую команду objcopy:

Код: Выделить всё

aarch64-linux-gnu-objcopy notmain.elf -O binary os.bin
Когда я визуализировал, я не видел никаких символов в консоли при нажатии кнопок:
Изображение
Для визуализации я использую эту команду:

Код: Выделить всё

qemu-system-aarch64 -M virt -cpu cortex-a53 -m 128 -serial mon:stdio -kernel os.bin
Я использую систему WSL Ubuntu
Итак, что мне нужно исправить:
  • визуализировать bin в qemu gui virt (без параметра -noghraphic)
  • клавиатура «ответит» в эмуляторе


Подробнее здесь: https://stackoverflow.com/questions/790 ... u-emulator
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Есть ли способ запустить библиотеку .so (составленную NDK для Android aarch64) в Linux aarch64 (cent7 Arm)?
    Anonymous » » в форуме Linux
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Проблема с DNS-сервером в гостевой системе Alpine при использовании qemu-system-aarch64 на хосте Android
    Anonymous » » в форуме Android
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Cross Compilled Arm Readyabquebaboble все еще показывается как aarch64
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Cross Compilled Arm Readyabquebaboble все еще показывается как aarch64
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Можно ли скомпилировать программное обеспечение ARM Windows C++ на хосте ARM Windows?
    Anonymous » » в форуме C++
    0 Ответы
    70 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»