问题标签 [bare-metal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
749 浏览

windows - 等同于 Windows 的 makemenu 配置

是否有任何类似于 Windows 的 make menuconfig 实用程序?我有一个用于基本嵌入式系统的软件堆栈,在构建之前需要一些配置(构建环境在 windows 下,但使用 makefile)。

0 投票
1 回答
6069 浏览

arm - 与 newlib 链接:对 memcpy 的未定义引用

我正在尝试构建一个 arm 引导加载程序,它依靠 newlib 提供一些系统调用(如 memcpy)。

当我运行时:

我得到以下信息:

现在,我正在攻击 memcpy,并希望其他人跟随。当我运行nm /usr/arm-elf/lib/thumb/libc.a(我相信这是 libc 的 newlib 版本)时,它显示:

因此,这表明 memcpy 是在库中定义的。

我运行strace上面的ld命令以确保它实际上正在查看该文件,并且确实如此。

我在这里想念什么?为什么它抱怨未定义的 memcpy?

0 投票
2 回答
6232 浏览

c - 在裸机嵌入式系统 (ARM) 上进行分析

我想知道您如何在裸机系统(ARM Cortex a8)上分析软件?以前我使用的是具有内置基准统计数据的模拟器,现在我想比较真实硬件的结果(在 BeagleBoard-Xm 上运行)。

我知道您可以使用 gprof,但是我有点迷茫,因为假设您必须在目标系统上运行 Linux?

我使用 Codesourcery 的 arm-none-eabi 交叉编译器构建可执行文件,目标系统正在运行 FreeRTOS。

0 投票
3 回答
3183 浏览

assembly - 裸机 BeagleBoard 组装

我最近才试图进入嵌入式编程并正在寻找一些资源。我已经用高级语言完成了相当多的编程,但一直对硬件的实际工作方式着迷。作为让自己最终了解硬件的强制功能,我最近购买了 BeagleBoard XM,目的是通过组装对其进行裸机编程。

我花了一周左右的时间在业余时间阅读 TRM,并在网上搜索示例代码。我找到了一些资源,它们提供了通过串行端口显示数据的好例子,但除此之外没有什么。我曾希望找到一些人们使用中断和 sdma 的例子,但还没有找到。作为一个入门项目,我的目标是编写一个非常简单的程序,该程序将从串行端口输入字符并将其回显到屏幕上。我想让它利用中断/ sdma。通读 TRM 并不清楚如何实现这一点。对这个主题完全陌生,很难确切地知道我什至需要寻找什么才能理解文档。我想知道是否有任何专家能够提供任何利用 BeagleBoard 的一些硬件功能的示例 asm 代码。毕竟,再多的文档也无法替代一个好的具体代码示例。

0 投票
1 回答
126 浏览

language-agnostic - 语言实现与编译器/解释器向金属发出指令的距离有多远

我不想将此作为“有人在 2 年内击败我的问题”的“答案”, 所以我提出了一个新问题。从那里的答案中可以看出(参见 N. Ramsey,他写道:

“...但是,如果您查看麻省理工学院 Arvind 教授的开创性工作,他的团队设计并构建了数据流机器,其中基本计算操作在本质上更具声明性......”

裸机指令可能是声明性的或非强制性的。

有没有人觉得在这个方向上可以走多远?编译器必须总是将函数式语言转换为命令式语言吗?是否存在支持此功能的硬件?

我只是好奇- 一直在看前卫。朗。趋势,我终于想知道没有可变状态(例如)的真正含义是什么。

0 投票
1 回答
8053 浏览

gcc - 我怎么知道 .data 部分需要从哪里获取初始化数据?(gcc 链接器)

在构建基于 gcc 的裸机 mcu 项目时,您需要在启动期间注意 .data 和 .bss 部分的初始化。

.bss 部分非常简单,因为我只是将整个部分填充为 0。但是 .data 部分中的变量需要将其初始化数据保存在 rom/flash 中并在启动时复制。

我如何知道在哪里可以找到具有初始化值的数据?

让我们举个例子。

假设我在 main.c 中创建了两个全局变量

然后我可以在目标文件上使用 objdump 来查看它们将在哪个部分,但我在 objdump 输出中找不到任何应该放置 init 数据的地方。

然后我可以查看整个系统生成的 elf,在本例中为 main.elf。

我在哪里可以找到它们的位置以便我可以复制数据?我需要在链接器脚本中添加什么?

它应该在 .text 或 .rodata 之类的文件中,但我怎么知道呢?

如何检查 my_global_variable_one 的初始化数据在哪里?

我可以使用 readelf 或 objdump 等任何 binutils 命令找到这些数据的位置吗?

/谢谢


这是在 stm32 (Cortex M3) mcu 上,使用的是 CodeBench 版本的 gcc。

0 投票
0 回答
121 浏览

assembly - Runtime assembler error on coreb of bf561

Could somebody give me some clue about how to resolve this error:

At runtime my program crash on bare metal coreb:

when debugging, this assembler line of code is in cause.

is there is something wrong with it?


here is the debugging details from gdb using .align 8:

just before:

after exception:

using .align 4 as suggested it crash the same way. the register values are:

before crash:

after crash:

same as before:

(

0 投票
1 回答
1011 浏览

x86 - x86 上裸机程序的 BIOS

使用 BIOS 中断是个好主意INT10吗?或者我应该考虑coreboot、UFEI还是openFirmware?这些兼容吗?我应该用什么来显示到屏幕上?

0 投票
1 回答
2758 浏览

gcc - Microblaze 交叉编译

有谁知道如何使用 gcc 为 xilinx 的 microblaze 处理器编译裸机程序?

使用 xilinx sdk 很容易做到这一点,但现在我正在尝试将 microblaze 构建集成到更大的构建工作流程中。换句话说,我需要能够在命令行中做所有事情——而不是使用 sdk gui。

大多数 xilinx 支持和示例都以他们的 sdk 为中心。他们网站上似乎对 gnu 工具的支持有限,但他们似乎专注于想要为 microblaze 编译 linux 内核的用户。我只想编译一个简单的裸机应用程序。

理想情况下,我可以做类似的事情

最后得到一个 microblaze 可执行文件。

有没有人这样做过?有谁知道任何例子?

0 投票
2 回答
2214 浏览

arm - __irq 在 ARM 系统编程中的作用是什么?

我了解__irq用于为 ARM7(v4) 架构定义中断服务程序功能。但是它对功能有什么改变呢?

根据ARM 信息中心

__irq 关键字允许将 C 或 C++ 函数用作中断例程。__irq 是一个函数限定符。它影响函数的类型。

ARM 编译器对使用__irq函数限定符定义的例程提供了什么样的特殊处理?