gpt4 book ai didi

使用 Qemu 进行 ARM 汇编

转载 作者:行者123 更新时间:2023-12-04 22:13:58 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




好吧,我已经在整个互联网上搜索了将使用 arm-linux-gnueabi-as 和 qemu 运行的代码。
打印一个整数值。从字符串。例行公事会有所帮助。

最佳答案

显然你没有搜索整个互联网......因为,如果没有别的,qemu源代码包含你问题的所有答案......

QEMU 模拟系统。您是否尝试在模拟的 ARM 系统上做一些裸机?或者您是否正在尝试运行 arm linux 操作系统并在操作系统中创建一个在 qemu 上运行的操作系统上运行的程序集?如果是后者,则与qemu无关,这是操作系统问题而不是qemu问题。这不是语言问题(asm),而是操作系统问题。 asm 和低级是两个不同的东西。 asm 并不意味着低级访问,对于低级的东西绝对不需要(并且很少使用)。

如果您对操作系统不感兴趣,而只是对裸机感兴趣,这里是在 qemu 控制台上获取串行输出的众多方法之一。字符串和整数等是无语言问题(相同的解决方案可以应用于任何编程语言,asm、c、python 等解决问题然后将语言应用于问题)。

开始.s

.globl _start
_start:
ldr r0,=0x101f1000
mov r1,#0
loop:
add r1,r1,#1
and r1,r1,#7
add r1,r1,#0x30
str r1,[r0]
mov r2,#0x0D
str r2,[r0]
mov r2,#0x0A
str r2,[r0]
b loop

内存映射
MEMORY
{
rom : ORIGIN = 0x00010000, LENGTH = 32K
}

SECTIONS
{
.text : { *(.text*) } > rom
}

生成文件
CROSS_COMPILE ?= arm-none-linux-gnueabi

AOPS = --warn --fatal-warnings
COPS = -Wall -Werror -O2 -nostdlib -nostartfiles -ffreestanding

hello_world.bin : startup.s memmap
$(CROSS_COMPILE)-as $(AOPS) startup.s -o startup.o
$(CROSS_COMPILE)-ld startup.o -T memmap -o hello_world.elf
$(CROSS_COMPILE)-objdump -D hello_world.elf > hello_world.list
$(CROSS_COMPILE)-objcopy hello_world.elf -O binary hello_world.bin

运行
qemu-system-arm -M versatilepb -m 128M -nographic -kernel hello_world.bin

但我不知道如何离开控制台

相反,如果你这样做:
qemu-system-arm -M versatilepb -m 128M -kernel hello_world.bin

然后 ctrl-alt-3 (不是 F3 而是 3) 将切换到串行控制台
你可以看到输出,并且可以通过关闭控制台窗口来关闭 qemu。

通用 pb qemu 目标中的 uart tx 寄存器位于地址 0x101f1000。因为这是一个模拟,您可以“尝试”并发现写入该地址而不进行任何真实世界的 uart 设置“正常工作”,并且作为一个模拟系统,它可能会立即传输字符,因此您不必等待让它完成或轮询一个空的 tx 缓冲区插槽或类似的东西。炸开就行了。这将使您开始,然后如果您感兴趣,您可以稍后尝试做真实的事情。 (其他目标中的其他 uart 可能更接近现实世界,需要一些初始化,并等待一个空的 tx buf)。

asm 使上述内容更加痛苦,只需将 C 用于低级/裸机程序即可。

此外,如果做 arm 裸机,您可以使用 arm-none-linux-gnueabi,如果您知道自己在做什么,但最终会发现 arm-none-eabi 更合适,因为您没有使用操作系统,更不用说 linux。

关于使用 Qemu 进行 ARM 汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com