bare-metal相关内容
我正在开发一个 ARM cortex M4 评估板,它是一个 bare metal 应用程序,上面没有运行任何操作系统. 现在我想测量给定进程/算法的 CPU 使用情况,最好的方法是什么? 我应该实现一个操作系统来测量具有这种需求功能的 CPU 使用率吗? 解决方案 这个问题几乎自己回答了.当您的裸机应用程序不在该进程/算法中时,它在做什么?测量一个或另一个或两者.如果你有一个
..
QtCreator 有一个名为“Bare Metal"的插件.裸机是指没有操作系统的计算机.我对 Qt Bare Metal 开发的了解不多.这是为裸机系统开发 Qt 的一种方式吗?Qt 可以在没有操作系统的系统上运行吗?如果是,这种方法对嵌入式系统开发有什么好处? 解决方案 这是为裸机系统开发 Qt 的一种方式吗? 没有. Qt 是否可以在没有操作系统的系统上运行?
..
有一个c内存模型如下: +--------+ RAM 最后地址|堆栈 |||||v |+--------+内存 ||||+--------+|^ |||||堆 |+--------+|紫 |+--------+|RW |+========+ RAM 的首地址 堆栈和堆空间以相反的方向增加.它们将在中间相互重叠.所以我的问题是: 在裸机环境中,malloc 什么时候返回 NULL? 在
..
我正在为 ARM 系统组装一个交叉编译单元测试平台,并使用 qemu-system-arm 在主机上运行测试.具体来说,我使用 qemu 来模拟 Stellaris LM3S6965 评估板,因为它包含一个 Cortex M3 处理器,就像我的目标环境一样.在 qemu 中运行的二进制文件是使用 GNU Tools for ARM 构建的. 不涉及操作系统.测试套件作为裸机应用程序在 -no
..
我试图让这个 tutorial 按预期工作成功(在 bl main 指令之后失败).根据教程命令 (qemu) xp/1dw 0xa0000018 应该导致打印 33(但我得到 0x00 代替) a0000018: 33 这是主调用后寄存器的内容(见startup.s) (qemu) 信息寄存器R00=a000001c R01=a000001c R02=00000006 R03=0000
..
我有一个用汇编语言编写的裸机 ARM 的启动代码,我正试图了解它是如何工作的.该二进制文件被写入一些外部闪存中,并在启动时将其自身的部分复制到 RAM 中.尽管我阅读了这篇 wikipedia,但我仍然没有完全理解在这种情况下重新定位的概念条目.RAM 映射到低地址窗口,闪存映射到高地址窗口.有人能解释一下为什么我们在这里测试链接寄存器的值吗? /* 测试我们是否从一个地址运行,我们没有链接在
..
我已经设法制作了一个适用于 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
..
在创建裸机可执行文件时,我遇到了这个错误: main.o:(.eh_frame+0x1c): 重定位被截断以适应:R_AARCH64_PREL32 对 `.text'collect2:错误:ld 返回 1 个退出状态 然后我设法创建了一个最小的复制示例: main.c void _start(void) {} notmain.S .skip 32 link.ld ENTRY(_
..
我在读大学四年级,决定使用 MSP432 控制器来解决创建我自己的 RTOS 内核的任务.事实证明这很棘手,我希望得到这样做的人的建议.需要什么总体布局?你在做这件事时有什么经验?我知道这似乎是一项艰巨的任务,但我觉得我能做到.明天我将深入研究并尝试扩展我的知识.我知道这是一个广泛的话题,但如果可能的话,我只是寻求一点建议.非常感谢.希望大家都平安. 解决方案 我建议您学习其中一门课程或书
..
我的目标是模拟 Zynq-7000 上的 ARM A9 处理器,运行裸机软件.我为此尝试了 2 种不同的方法,但都遇到了障碍.任何有关如何进行的建议将不胜感激. StackOverflow 上的当前答案: 如何制作裸机 ARM 程序并在 QEMU 上运行它们? 链接到 Linux 内核模块作弊 (LKMC, 使用 v3.0) 使用 ./build --arch arm qem
..
好吧,这可能是一个非常笼统的问题,但我不熟悉这个话题,很高兴得到任何提示. 我有一个来自 SoucereyCodeBench for ARM 的交叉编译工具链 (arm-xilinx-linux-gnueabi-).我交叉编译了一个使用编译器选项的库:-DSC_INCLUDE_FX -DSC_USE_PTHREADS -pthreads -fPIC -DPIC 所以如果我想将库用于裸机
..
这个程序是我教科书中的一个例子,这个程序的目的是计算 N+N-1+...+2+1 ,并将结果存储在 R1 中.为什么它以死循环块结束,它可以做什么? ; asm4-1.sN EQU 10Stack_Size EQU 0x00000400AREA MyStack,NOINIT,READWRITE,ALIGN=3Stack_Mem 空间 Stack_Size__initial_sp区域重置,数据,只
..
我想在裸机皮质 A-15 上初始化 NEON cp.按照 ARM 的指令 我在平台初始化序列的末尾写了这个序列: MOV r0, #0x00F00000MRC p15, 0, r0, c1, c1, 2ORR r0, r0, #0x0C00BIC r0, r0, #0xC000MCR p15, 0, r0, c1, c1, 2为BMRC p15, 4, r0, c1, c1, 2BIC r0,
..
问题: 如何从使用 Qemu 运行的裸机程序获取 UART 输出? 背景 这是我一直在使用的命令行调用: qemu-system-arm -M xilinx-zynq-a9 -cpu cortex-a9 -nographic -kernel $BUILD_DIR/mm.elf -m 512M -s -S 使用机器xilinx-zynq-a9 处理器 cortex-a9 由
..
我正在尝试让 cortex m4 处理器休眠不到一秒钟.我希望能够让它进入睡眠状态,然后一秒钟后,或者当按下按钮时,从我离开的地方开始.我查看了参考手册,VLPS 模式看起来很适合我的需要.我不知道如何开始进入该模式或如何对 NVIC 进行编程. 更多信息:我在裸机上用 C 语言做这件事. 解决方案 您可以下载并检查实现 这个演示.尽管演示是针对 RTOS 的,但无论是使用 RTOS
..
我正在学习一些裸机编程教程.在阅读 C 代码执行时,我开始知道我们需要设置 C 执行环境,例如初始化堆栈归零 bss 等. 在某些情况下,您必须在 ram 中复制数据,并且还需要为此提供启动代码.教程的链接 说明在 RAM 中复制数据.现在我有两个疑问. 如果我们需要复制 RAM 中的数据,那么我们为什么不复制代码,即文本段.如果我们不复制文本段,是否意味着在 Raspberry pi
..
我正在 Cortex-M4 上研究上下文保存和恢复机制,以便我可以实现简单的多任务处理.我使用 arm-none-eabi-g++ 来编译这段代码.便携性暂时不是问题. 当任务可以调用 yield 函数时,我将它用于协作多任务处理的形式,该函数将通过引发 PendSV 异常使执行返回到内核.(然后内核可以安排另一个任务运行并最终返回当前任务.) void Task::yield() {//
..
这是对这个问题的跟进其他详细信息,因为没有人帮助回答.我克隆了最新的 QEMU 存储库并遵循 本 教程为 arm-softmmu 创建一个 Hello World 程序.我使用辅助函数跟踪了 TCG,而不是基本块中的寄存器,但我遇到了跟踪功能,我想尝试一下.遵循 文档,这是我取消对跟踪事件文件的注释后的/tmp/events 文件. exec_tbexec_tb_exit trace-ev
..
我正在开发一个 ARM cortex M4 评估板,它是一个 裸机 应用程序,上面没有运行任何操作系统. 现在我想测量给定进程/算法的 CPU 使用情况,最好的方法是什么? 我是否应该实现一个操作系统来衡量具有此类需求的功能的 CPU 使用率? 解决方案 这个问题几乎可以自圆其说.当您的裸机应用程序不在该流程/算法中时,它在做什么?测量一个或另一个或两者.如果您的裸机应用程序没
..
谁能告诉我如何在没有 RTOS 或 Linux 操作系统的裸机环境中使用 C 或内联汇编设置 ARM9 中断向量表的示例? 具体来说,我如何使用内联汇编或 C 将分支设置为以 C 编码的 IRQ 中断处理程序 ISR? ////timer1 64 位模式中断处理程序连接到 TINT2 中断=#34///\todo 我想一旦我开始工作就需要确认它中断无效interruptHandlerTim
..