- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最佳答案
最小可运行示例
运行方式:
make
qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic -kernel test64.elf -serial mon:stdio
结果:将单个字符 H
打印到 UART,然后进入无限循环。
来源:
==> test64.ld <==
ENTRY(_Reset)
SECTIONS
{
. = 0x40000000;
.startup . : { startup64.o(.text) }
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss COMMON) }
. = ALIGN(8);
. = . + 0x1000; /* 4kB of stack memory */
stack_top = .;
}
==> test64.c <==
volatile unsigned int * const UART0DR = (unsigned int *) 0x09000000;
void print_uart0(const char *s) {
while(*s != '\0') { /* Loop until end of string */
*UART0DR = (unsigned int)(*s); /* Transmit char */
s++; /* Next char */
}
}
void c_entry() {
print_uart0("Hello world!\n");
}
==> startup64.s <==
.global _Reset
_Reset:
mov x0, 0x48
ldr x1, =0x09000000
str x0, [x1]
b .
==> Makefile <==
CROSS_PREFIX=aarch64-linux-gnu-
all: test64.elf
startup64.o: startup64.s
$(CROSS_PREFIX)as -g -c $< -o $@
test64.elf: startup64.o
$(CROSS_PREFIX)ld -Ttest64.ld $^ -o $@
clean:
rm -f test64.elf startup64.o test64.o
您可以将入口地址0x40000000
更改为几乎任何内容(只要它没有映射到某些设备的内存?)。
QEMU 只是解析 Elf 文件中的入口地址,并将 PC 放在那里开始。您可以使用 GDB 进行验证:
qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic -kernel test64.elf -S -s &
gdb-multiarch -q -ex 'file test64.elf' -ex 'target remote localhost:1234'
这里我列出了一些您可能感兴趣的其他设置:How to make bare metal ARM programs and run them on QEMU?
在 Ubuntu 18.04 上测试。
关于kernel - 如何在 QEMU 上运行裸机 ELF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913745/
QtCreator 有一个名为“Bare Metal”的插件。裸机是指没有操作系统的计算机。我对 Qt Bare Metal 的开发了解不多。它是一种为裸机系统开发 Qt 的方法吗? Qt 可以在没有
寻找 docker 对裸机的支持,以便它可以加入 swarm 集群。 可能是一台 docker 机器,因此很容易与 docker swarm 集成。 尝试了很多,但找不到可能的解决方案。 最佳答案 你
我正在尝试使用 LLVM 生成用于裸机 ARM Cortex M4 开发的代码。IR 的创建进展顺利,LLVM 正在生成(在我看来)正确的 ARM Thumb ASM。 我购买了 Arm 开发套件来进
我正在尝试了解裸机 C 应用程序的确切工作原理。我编写了自己的调用 __libc_init_array 的启动程序集代码,我看到它遍历 preinit_array 部分并调用其中的所有函数。据我了解,
我一直在使用 C 为 Raspberry Pi 2 编写内核。为此我一直在关注 Valvers和 Baking Pi (用 Assembly 编写)教程来做到这一点。但每次我尝试移植函数以设置一个引脚
裸机(基于管理程序)和主机虚拟化类型有什么区别? 最佳答案 托管虚拟机管理程序的一个著名示例是 Oracle VM VirtualBox。其他包括 VMWare 服务器和工作站、Microsoft V
我目前有Prometheus安装了裸机并作为docker容器运行。我使用它来监视我们的基础架构以及Kubernetes集群。 为了进行此HA设置,我尝试在2个Prometheus实例之前部署代理或查询
我正在尝试在裸机上使用Istio,我想使用所需的最少资源,以便通过Envoy和Cert-Manager获得一个Ingress Controller (也许以后会发展为使用更高级的服务网格功能)。我尝试
我正在尝试设置一个裸机 Kubernetes 集群。我已经设置了基本的集群,没问题,但我似乎无法让 MetalLB 正常工作以向服务公开外部 IP。 我的最终目标是能够部署具有 2 个以上副本的应用程
我想在 Intel Galileo 板上编写一个小的“hello world”裸机 应用程序。使用 UEFI 打印文本(到 UART-1)当然效果很好,但我想“手动”访问 UART,而无需 UEFI
我正在尝试让“hello world”类型的程序在我的 Beagleboard-xm 版本上运行。 C,通过从程序集调用 C puts 函数。 到目前为止,我一直将其用作引用:http://wiki.
我刚开始在 2 个私有(private)云服务器上设置 2 个节点(主从)上的 Kubernetes。我已经安装了它,做了基本的配置,让它运行了一些简单的从 master 到 minion 的 pod
是否有某个指南描述了如何让 LLVM 为 Cortex-M3 发出二进制文件,我可以将其按摩为运行裸机?我花了大量时间在 Windows 和 Ubuntu 上玩 LLVM,但无济于事。我可以得到类似
我目前正在尝试使我编写的程序在裸机臂设备上运行。由于我还没有该设备,因此我尝试使用 qemu 在 Arm 仿真上运行代码。 我使用以下命令运行我的代码:qemu-system-arm -M realv
我已经在本地集群中设置了Elastic + Kibana + metricbeat。但是metricbeat无法连接到Elastic: ERROR pipeline/output.go:100
OS: RHEL7 | k8s version: 1.12/13 | kubespray | baremetal 我部署了一个标准的 kubespray 裸机集群,我试图了解部署 nginx-ingr
我正在使用 gnu sparc 工具链。我有 sparc-ab-elf-gcc 和 sparc-ab-linux-gcc。 (“ab”是处理器名称)。我想在裸机(没有操作系统)上编译一个使用 mall
我是一个 wicket 新手,想从 wicket-examples 中部署简单的知名 helloworld,但没有 IDE、ant 或 maven。我做了什么: web.xml: Wick
我正在尝试在“CentOS Linux release 7.0.1406”上部署 kubernetes 使用“yum install kubernetes” 其中安装了“kubernetes-0.17
所以我知道 ldr/str on arm 的问题数不胜数。也许这是另一个转折(不太可能),或者我只是错过了一些东西(更有可能。) 所以这是裸机,我想在内存中加载/存储一些变量。因为我坚持我想给它一个名
我是一名优秀的程序员,十分优秀!