bare-metal相关内容

arm裸机系统上的CPU使用率测量

我正在开发一个 ARM cortex M4 评估板,它是一个 bare metal 应用程序,上面没有运行任何操作系统. 现在我想测量给定进程/算法的 CPU 使用情况,最好的方法是什么? 我应该实现一个操作系统来测量具有这种需求功能的 CPU 使用率吗? 解决方案 这个问题几乎自己回答了.当您的裸机应用程序不在该进程/算法中时,它在做什么?测量一个或另一个或两者.如果你有一个 ..
发布时间:2022-01-25 13:09:18 C/C++开发

Qt 裸机是什么?

QtCreator 有一个名为“Bare Metal"的插件.裸机是指没有操作系统的计算机.我对 Qt Bare Metal 开发的了解不多.这是为裸机系统开发 Qt 的一种方式吗?Qt 可以在没有操作系统的系统上运行吗?如果是,这种方法对嵌入式系统开发有什么好处? 解决方案 这是为裸机系统开发 Qt 的一种方式吗? 没有. Qt 是否可以在没有操作系统的系统上运行? ..
发布时间:2022-01-25 12:59:14 其他开发

malloc 什么时候在裸机环境中返回 NULL?

有一个c内存模型如下: +--------+ RAM 最后地址|堆栈 |||||v |+--------+内存 ||||+--------+|^ |||||堆 |+--------+|紫 |+--------+|RW |+========+ RAM 的首地址 堆栈和堆空间以相反的方向增加.它们将在中间相互重叠.所以我的问题是: 在裸机环境中,malloc 什么时候返回 NULL? 在 ..
发布时间:2022-01-22 12:58:37 其他开发

在没有用户干预的情况下执行裸机程序后如何干净地退出 QEMU?

我正在为 ARM 系统组装一个交叉编译单元测试平台,并使用 qemu-system-arm 在主机上运行测试.具体来说,我使用 qemu 来模拟 Stellaris LM3S6965 评估板,因为它包含一个 Cortex M3 处理器,就像我的目标环境一样.在 qemu 中运行的二进制文件是使用 GNU Tools for ARM 构建的. 不涉及操作系统.测试套件作为裸机应用程序在 -no ..
发布时间:2022-01-17 14:00:53 其他开发

装配中的搬迁

我有一个用汇编语言编写的裸机 ARM 的启动代码,我正试图了解它是如何工作的.该二进制文件被写入一些外部闪存中,并在启动时将其自身的部分复制到 RAM 中.尽管我阅读了这篇 wikipedia,但我仍然没有完全理解在这种情况下重新定位的概念条目.RAM 映射到低地址窗口,闪存映射到高地址窗口.有人能解释一下为什么我们在这里测试链接寄存器的值吗? /* 测试我们是否从一个地址运行,我们没有链接在 ..
发布时间:2022-01-17 13:32:36 其他开发

如何使用 GCC 生成最小的 BIOS hello world 引导扇区,该扇区可通过 USB 记忆棒在真实硬件上运行?

我已经设法制作了一个适用于 QEMU 2.0.0 Ubuntu 14.04 的最小引导扇区: .code16.global _start_开始:命令行mov $msg, %simov $0x0e, %ah环形:lodsb或 %al, %aljz停止整数 $0x10jmp循环停:高留言:.asciz “你好世界".org 510.word 0xaa55 编译: as -o main.o mai ..
发布时间:2021-12-18 09:31:32 其他开发

如何防止“main.o:(.eh_frame+0x1c): relocation truncated to fit: R_AARCH64_PREL32 against `.text'";创建 aarch64 裸机程序时?

在创建裸机可执行文件时,我遇到了这个错误: main.o:(.eh_frame+0x1c): 重定位被截断以适应:R_AARCH64_PREL32 对 `.text'collect2:错误:ld 返回 1 个退出状态 然后我设法创建了一个最小的复制示例: main.c void _start(void) {} notmain.S .skip 32 link.ld ENTRY(_ ..
发布时间:2021-11-17 22:44:23 其他开发

从头开始创建 RTOS

我在读大学四年级,决定使用 MSP432 控制器来解决创建我自己的 RTOS 内核的任务.事实证明这很棘手,我希望得到这样做的人的建议.需要什么总体布局?你在做这件事时有什么经验?我知道这似乎是一项艰巨的任务,但我觉得我能做到.明天我将深入研究并尝试扩展我的知识.我知道这是一个广泛的话题,但如果可能的话,我只是寻求一点建议.非常感谢.希望大家都平安. 解决方案 我建议您学习其中一门课程或书 ..
发布时间:2021-11-17 22:42:28 其他开发

Linux 内核模块作弊 - Qemu Baremetal Xilinx Zynq A9

我的目标是模拟 Zynq-7000 上的 ARM A9 处理器,运行裸机软件.我为此尝试了 2 种不同的方法,但都遇到了障碍.任何有关如何进行的建议将不胜感激. StackOverflow 上的当前答案: 如何制作裸机 ARM 程序并在 QEMU 上运行它们? 链接到 Linux 内核模块作弊 (LKMC, 使用 v3.0) 使用 ./build --arch arm qem ..
发布时间:2021-11-17 22:39:15 其他开发

对裸机使用 pthread 的交叉编译程序

好吧,这可能是一个非常笼统的问题,但我不熟悉这个话题,很高兴得到任何提示. 我有一个来自 SoucereyCodeBench for ARM 的交叉编译工具链 (arm-xilinx-linux-gnueabi-).我交叉编译了一个使用编译器选项的库:-DSC_INCLUDE_FX -DSC_USE_PTHREADS -pthreads -fPIC -DPIC 所以如果我想将库用于裸机 ..
发布时间:2021-11-17 22:38:55 其他开发

为什么这个汇编程序以无限循环结束?

这个程序是我教科书中的一个例子,这个程序的目的是计算 N+N-1+...+2+1 ,并将结果存储在 R1 中.为什么它以死循环块结束,它可以做什么? ; asm4-1.sN EQU 10Stack_Size EQU 0x00000400AREA MyStack,NOINIT,READWRITE,ALIGN=3Stack_Mem 空间 Stack_Size__initial_sp区域重置,数据,只 ..
发布时间:2021-11-17 22:37:31 其他开发

在手臂皮质 m4 上进入睡眠模式

我正在尝试让 cortex m4 处理器休眠不到一秒钟.我希望能够让它进入睡眠状态,然后一秒钟后,或者当按下按钮时,从我离开的地方开始.我查看了参考手册,VLPS 模式看起来很适合我的需要.我不知道如何开始进入该模式或如何对 NVIC 进行编程. 更多信息:我在裸机上用 C 语言做这件事. 解决方案 您可以下载并检查实现 这个演示.尽管演示是针对 RTOS 的,但无论是使用 RTOS ..
发布时间:2021-11-17 22:28:36 其他开发

裸机编程树莓派 3.

我正在学习一些裸机编程教程.在阅读 C 代码执行时,我开始知道我们需要设置 C 执行环境,例如初始化堆栈归零 bss 等. 在某些情况下,您必须在 ram 中复制数据,并且还需要为此提供启动代码.教程的链接 说明在 RAM 中复制数据.现在我有两个疑问. 如果我们需要复制 RAM 中的数据,那么我们为什么不复制代码,即文本段.如果我们不复制文本段,是否意味着在 Raspberry pi ..
发布时间:2021-11-17 22:24:41 其他开发

PendSV/SVC 异常是否会立即引发?

我正在 Cortex-M4 上研究上下文保存和恢复机制,以便我可以实现简单的多任务处理.我使用 arm-none-eabi-g++ 来编译这段代码.便携性暂时不是问题. 当任务可以调用 yield 函数时,我将它用于协作多任务处理的形式,该函数将通过引发 PendSV 异常使执行返回到内核.(然后内核可以安排另一个任务运行并最终返回当前任务.) void Task::yield() {// ..
发布时间:2021-11-17 22:22:14 C/C++开发

如何使用 QEMU 的简单跟踪后端?

这是对这个问题的跟进其他详细信息,因为没有人帮助回答.我克隆了最新的 QEMU 存储库并遵循 本 教程为 arm-softmmu 创建一个 Hello World 程序.我使用辅助函数跟踪了 TCG,而不是基本块中的寄存器,但我遇到了跟​​踪功能,我想尝试一下.遵循 文档,这是我取消对跟踪事件文件的注释后的/tmp/events 文件. exec_tbexec_tb_exit trace-ev ..
发布时间:2021-11-17 22:19:03 其他开发

arm裸机系统CPU使用率测量

我正在开发一个 ARM cortex M4 评估板,它是一个 裸机 应用程序,上面没有运行任何操作系统. 现在我想测量给定进程/算法的 CPU 使用情况,最好的方法是什么? 我是否应该实现一个操作系统来衡量具有此类需求的功能的 CPU 使用率? 解决方案 这个问题几乎可以自圆其说.当您的裸机应用程序不在该流程/算法中时,它在做什么?测量一个或另一个或两者.如果您的裸机应用程序没 ..
发布时间:2021-11-17 22:17:35 C/C++开发

如何在 C 或内联汇编中设置 ARM 中断向量表分支?

谁能告诉我如何在没有 RTOS 或 Linux 操作系统的裸机环境中使用 C 或内联汇编设置 ARM9 中断向量表的示例? 具体来说,我如何使用内联汇编或 C 将分支设置为以 C 编码的 IRQ 中断处理程序 ISR? ////timer1 64 位模式中断处理程序连接到 TINT2 中断=#34///\todo 我想一旦我开始工作就需要确认它中断无效interruptHandlerTim ..
发布时间:2021-11-17 22:17:26 其他开发