如何为arm处理器编写代码

如何为arm处理器编写代码,arm,cpu-architecture,simulator,processor,Arm,Cpu Architecture,Simulator,Processor,嘿,我对编码相当陌生,我加入了一个编码俱乐部,因为我对不断增长的技术世界感兴趣。最近的话题是关于计算机体系结构,在小组中我们讨论了ARM处理器。 我们的俱乐部队长通知我们以下事项: “为ARM处理器开发一个软件产品,以执行您选择的任务。但是,在开始任务之前,您需要向我发送一段文字,让我知道您要解决的问题。” 有人知道我可以查找的参考或代码示例吗?或者任何其他有用的链接我将回答一个通用问题-如何为arm处理器/任何处理器编码- 因此,第一步是理解ISA是什么!ISA是公司发布的一本手册(面向初学者

嘿,我对编码相当陌生,我加入了一个编码俱乐部,因为我对不断增长的技术世界感兴趣。最近的话题是关于计算机体系结构,在小组中我们讨论了ARM处理器。 我们的俱乐部队长通知我们以下事项: “为ARM处理器开发一个软件产品,以执行您选择的任务。但是,在开始任务之前,您需要向我发送一段文字,让我知道您要解决的问题。”
有人知道我可以查找的参考或代码示例吗?或者任何其他有用的链接

我将回答一个通用问题-如何为arm处理器/任何处理器编码-

因此,第一步是理解ISA是什么!ISA是公司发布的一本手册(面向初学者),为那些希望为其特定处理器编写代码的人提供了一个信息源。(在架构领域,ISA有着更多的含义。我给出的有点过于简单)。现在,我建议你开始看看手臂。仔细阅读ARM支持的说明,了解ARM中的所有功能,了解机器状态、寄存器、寻址模式等。充分了解您的ARM版本具体支持什么(NEON、Thumb、Vectors(?)

一旦掌握了ISA的窍门,下一步就是决定要构建什么,因为现在您已经知道所有处理器都能做什么。你也知道自己的局限性。所以,现在是提出一个想法的好时机

现在,下一步是设置环境。请阅读您将要使用的电路板的规格。建立环境。了解编译器/汇编程序。知道他们支持什么旗帜

最后,编写一个简单的基本汇编代码。编写一个代码来添加两个数字。我通常遵循这个惯例——对于汇编,我编写两个数字的加法作为我的第一个代码。对于高级(C,C++,java),我编写HeloWord。执行代码并观察输出。我建议对于第一个代码,您进入调试器并在每条指令之后观察机器的状态。(把ISA放在手边)

慢慢地,开始你的比赛。编写带有函数、字符串等的代码。最后,为自己准备一些有趣的东西,并学习如何与它们交互(LED、LCD、传感器、摄像头)。
干杯

这个问题没有多大意义。Arm体系结构涵盖范围广泛,从用于低功耗或快速响应任务的相当小的微控制器,适用于机顶盒、摄像头或路由器嵌入式应用程序、智能手机的中端设备,一直到服务器级产品

也有为安全关键系统或高可靠性设计的变体


每个特定的应用程序都需要不同的功能,但在编写代码的级别上,您不太可能理解有助于您选择设备的因素。它是便携式的,还是需要较长的电池寿命,还是提供安全的通信?如果您有需要使用的特定设备,应用程序将更加明显(但仍然非常广泛)。

充满了带有ARM asm代码的问题和答案。我认为你们的队长想在一个高层次上弄清楚你们希望你们的程序做什么,但并没有找到已经做了的示例代码。所以去挑个话题吧。ARM是一种通用CPU,它(给定足够的时间+内存)可以计算图灵机器可以计算的任何可计算函数;选择你喜欢的任何东西。如果是高级语言,那么目标并不重要,所以我假设你正在寻找汇编语言。使用qemu或其他指令集模拟器,或者获取raspberry pi zero。pi网站上有一个很好的裸机社区。pi-3的领先步数太多,无法跳转,从pi-zero或带有cortex-m的qemu开始,或者从旧的arm7、arm9或arm11开始,或者拿起st nucleo板并闪烁led。显示arm来自任何其他目标,但可消化的第一个项目。infocenter.arm.com拥有所有arm特定信息,记住arm不生产芯片,而是生产ip核心,很多芯片都不是arm的东西,所以你必须查看芯片供应商的文档,寻找内存空间项目,如闪存、ram和外围设备……你可能会使用的gnu汇编程序与arms工具汇编语言非常相似,但有一些不同,Peter发布了链接,该站点通常有大量与汇编语言相关的已解决问题。gnu也有一个网站,gas是开源的。。。