3

我是 ARM 世界的新手。我需要能够编写 C 代码、编译它,然后下载到 ARM 仿真器中并执行。我需要使用 GCC 4.1.2 编译器来编译 C 代码。

有人可以为我指出以下问题的正确方向吗?

使用什么工具链?

用什么模拟器?

是否有设置工具链的教程或指南?

4

2 回答 2

2

自己构建一个 gcc 交叉编译器非常容易。gcc 库和 C 库和其他东西没有那么多,嵌入式库和这样有点难。取决于您想要获得的嵌入方式。我很少使用 gcclib 或 ac 库,所以推出你自己的作品对我来说非常棒。

经过多年这样做,也许这是一个时代的事情,我现在只是去获取代码源工具。精简版效果很好。yagarto、devkitarm、winarm 或类似的东西(有无数例子的网站)都可以正常工作。emdebian 也有一个很好的预建工具链。如果不是所有这些地方都有关于他们如何从 gnu 源构建工具链的信息。

您询问了 gcc,但请记住,llvm 是一个强大的竞争对手,就交叉编译而言,由于它总是交叉编译,因此它比 gcc 更容易下载、构建和运行。最近的版本现在正在生成与 gcc 竞争性能的代码(用于 arm)。gcc 绝不是性能的领导者,我使用过的其他编译器围绕它运行,但每个版本都在改进(嗯,3.x 版本有时会产生比 4.x 版本更好的代码,但你需要 4 .x 用于较新的内核和 thumb2)。即使您使用 gcc,也请不时尝试 llvm 的稳定版本。

qemu 是一个很好的模拟器,这取决于你在做什么 gba 模拟器 virtual gameboy Advance 是好的。也有几个 nds 模拟器。GDB 和其他地方似乎有 ARM 自己的 armulator。我发现很难提取和使用,所以我自己写了,但懒惰只实现了拇指指令集,我称我的拇指器。便于使用。比 qemu 和 armulator 更容易添加外围设备以及查看和调试代码。ymmv。

嗯,我最近为某人发布了类似的答案。谷歌:arm verilog,在 umich,你会找到一个文件 isc.tgz,其中是 arm10 行为模型(因为你不能用它制作芯片,因此你可以在网上找到 verilog)模型。对于想要学习指令集的人来说,观察你的代码在门级执行是最好的。小心,就像吸毒一样,你可能会上瘾,然后当你回到硅片上时,你对代码执行时的可见性相对为零。在 stackoverflow 的某个地方,我发布了获取 arm10 模型和另一个或两个文件以使用 icarus verilog 将其转换为 arm 仿真器的步骤。gtkwave 是一个很好的免费工具,用于检查 wave (vcd) 文件。

最重要的是,您将需要 ARM ARM。(ARM 架构参考手册)。只需谷歌它并在 ARM 的网站上找到它。每条指令都有伪代码教你他们做什么。如果您需要了解更多信息,请使用 thumbulator 或 armulator 或其他工具(mame 也有一个手臂核心)。我不保证 Thumbulator 是 100% 调试或准确的,我采用了一些常用程序并将它们的输出与 arm 和 non-arm 的硅片进行比较以调试内核。

于 2010-06-16T04:20:57.507 回答
2

您可以使用 Yagarto 的工具链http://www.yagarto.de/

模拟器你可以使用 Proteus ISIS http://www.labcenter.com/index.cfm (有演示版)

和教程,好吧,谷歌他们=)

祝你好运!

于 2010-06-15T12:34:36.450 回答