如何开始使用ARM处理器?

16

对于新手而言,是直接阅读ARM处理器的数据手册和用户手册,还是先了解ARM领域再开始阅读更为明智?


谢啦,老铁!链接非常赞!但问题是,我之前一直在用8051这种微控制器,现在要转向ARM了……ARM这个领域可真不简单啊,所以我还是想先搞清楚一些基础知识,比如体系结构之类的东西! - Dharavk
什么链接?那个链接如何回答了你的问题? - Rich Seller
那个人删除了他的评论,我想是这样... - Dharavk
好吧,那个人就是我 :-)。我在发布评论后的30秒内将其删除了,重新考虑后,它对你没有帮助。我很惊讶你看到了它,因为我没有让它存在太长时间...无论如何。如果有帮助的话,我会给你链接:https://dev59.com/ikfRa4cB1Zd3GeqP-6nR#887492 - yves Baumes
ARM非常广泛。缩小选项的第一个问题是您需要应用处理器还是微控制器?(也就是说,您想要运行像嵌入式Linux这样的操作系统,还是想直接编程芯片?) - dwhall
这取决于您的目标。您的目标是什么? - Craig McQueen
8个回答

9

当我开始接触一项新技术时,我会先尽可能地找到所有的数据表和应用说明,然后直接阅读它们。首要目标是了解该技术所特有的术语(和参与者名称)。

对于ARM,我会从www.arm.com以及他们的文档ARM Information Center开始。

更新: 我还将深入了解一个或多个制造商的产品线,包括至少阅读一个家族编程手册。如果您的项目计划已经足够明确,您知道将使用哪种具体的ARM CPU,则可以集中精力研究该特定型号及其近亲。如果您想熟悉ARM,以便可以选择在项目中使用的CPU,则几乎肯定最好的计划是对各种系列进行广泛抽样。

这里有一个ARM技术许可证持有者的大列表。其中,一些制造商拥有基于ARM核心的CORTEX-M3版本的产品,在深度嵌入式系统应用方面表现出色。

我的公司正在进行基于ST Microelectronics的STM32系列的项目。该系列具有许多片上外设功能,对于从8051世界或PIC世界来的任何人来说都是熟悉的,并且在芯片上具有足够的FLASH和SRAM,使外部存储器变为可选项。

我听到了很多关于Luminary Micro的Stellaris系列的积极评价。它也看起来非常适合许多嵌入式平台的需求。

考虑到入门级评估板的当前价格点,我强烈建议购买一个或多个与您预期目标应用领域相似的芯片。例如,一个带有小型LCD、加速度计、几个LED和一两个按钮、可以访问未分配的GPIO引脚、内置JTAG USB接口和完整GCC基于交叉开发工具链的板子可在美国市场上以100美元左右的价格购得(例如STM32,2009年时不到40美元,但该型号已停产)。
许多其他基于ARM核心的产品也可以找到类似的套餐。
ARM作为系统芯片中的CPU核心是另一种常见的应用方式。很多SOC供应商正在许可证一款ARM CPU放在他们的硅片上,与他们的专用硬件并存。我曾经看到过这样构建的视频压缩芯片、网络芯片、FireWire到ATA适配器和USB设备,而这仅仅是我随口想起的一些已发布文章和新闻稿的样本。 更新2, 2013: 一个非常易于接近的入门点,可以在Raspberry Pi和各种Beagle系列开发板中看到。两者都面向实验者和爱好者,都使用带有ARM内核和其他资源(如视频和音频功能)的SOC,并且都可以立即运行Linux。
此外,还有丰富多样的系统模块制造商提供插板,其中包含完整的可引导系统,可安装在自定义板上,为特定嵌入式系统提供所需的电源和I/O连接器。其中一个供应商是Gumstix。Gumstix AirSTORM提供Wi-Fi、蓝牙、DRAM、NAND FLASH和TI OMAP3 ARM SOC。一个适当的载板可以支持LCD面板或HDMI、10/100以太网、USB主机和OTG、线级模拟音频连接,以及访问各种附加GPIO引脚和芯片外设。

你的链接 [had for the STM32](http://www.st.com/mcu/contentid-105-110-STM3210B_PRIMER.html) 似乎已经失效了。 - abdullah kahraman
1
@abdullahkahraman,看起来ST又重新调整了他们的网站。我已经修复了链接,指向今年的PRIMER产品演示设备模型。 - RBerteig

6

我建议你购买BeagleBoard。它们支持JTAG,因此您可以查看硬件情况,类似于硬件调试器。有几个Linux版本可以在其上运行。还有一个很棒的社区可为你提供帮助。我在我的设备上运行的是Ubuntu Jaunty,所以你可以运行各种实用工具和编译器。


5

在这个相关问题的答案中,描述了几个不错的资源:

此外,Hitex针对几种基于ARM处理器的微控制器提供了“内部指南”(免费,但需要注册):

它们大多数(如果不是全部)都可以免费下载(我认为它们由微控制器制造商赞助)。它们更适合微控制器而不仅仅是ARM细节,但它们包括一些ARM细节,并且是微型和微型外设的良好概述。


4
我会浏览sparkfun.com,他们有olimex板子,也自己制造。Luminary Micro / stellaris也很好。Beagleboard更像是一个Linux平台,而不是你访问ARM特性/指令的东西。你可以使用它,但是用那些钱,你可以购买3到7个不同的基于ARM的微控制器评估板。无论如何,我会从围绕基于ARM的微控制器的小型板开始,st或lpc可能是首选,Luminary Micro仅支持Thumb2,只有在学习过标准ARM指令后才尝试Thumb指令。
我也喜欢将Gameboy Advance作为学习ARM的平台(不是NDS,那是高级的,从GBA系列开始)。
您需要ARM ARM(ARM体系结构参考手册),每个特定的核心都有自己的TRM,您需要两者才能了解可用的指令。就大多数情况而言,这些手册既适用于参考又适用于从头开始学习。

3

我建议先购买一个评估板,例如STR750-LOVE。然后编译并理解示例代码。当你对示例代码感到熟悉后,就可以开始了解底层原理并编写自己的代码。学习过程中重要的一部分是尝试做某些事情,然后调试并使其正常工作。如果想成为ARM专家,你需要有信心阅读汇编代码。我刚参加了一次ARM固件开发人员的面试,技术部分所需做的就是分析THUMB汇编代码并将其转换为C代码。大多数编译器都有输出生成的汇编代码的选项。


要开始使用一个开发板,除非我了解处理器的架构,否则这不是一个好主意!首先,我需要掌握一些理论知识,然后才能继续进行。 - Dharavk
你不需要知道电脑是如何工作的,才能为其编写代码。但是,如果你对底层的东西感兴趣,只需下载gcc-arm并编写或编译不同的C代码,并查看生成的汇编代码以了解底层的东西。不过,要想做得好,你需要在实际硬件上调试你的代码。 - Rex Logan

1
用Tom Lehrer的话说:“剽窃,剽窃,不要让任何人的工作逃脱你的眼睛。”
或者像牛顿(和伯纳德)一样站在巨人的肩膀上。
换句话说,找出其他人已经做过的事情,并且最好避免重复造轮子。

1
我会建议你从一块便宜的开发板和示例软件开始,然后随着进展逐步查询需要了解的知识。
对于基于ARM核心的STM32,一个很好的入门指南是名为STM32 Primer的书籍。
除了快速浏览之外,我不会建议你从技术手册开始。STM32的技术手册长达600多页,配套的Cortex-M3手册还有另外400页。绝非轻松阅读!

1

这真的取决于ARM的种类,它是一个非常广泛的领域。 通常,ARM被集成在SoC(片上系统)中。如果您准备迁移到特定的SoC供应商,则需要考虑所有内容。根据我的经验,SoC外设和缓存选择比实际内核更具影响力(除了性能)。

至于评估板:我有Luminary微控制器(Cortex M3)的良好经验(价格在50-60美元之间)。它配备完整的(eclipse)开发环境、示例、库以及一些硬件(例如USB、以太网、OLed显示屏)和示例,您可以运行并学习。通过实践学习比阅读学习更有趣。我相信您将轻松从8051升级到Cortex M3。

在高端领域,Beagle Board是一个真正的数值计算器,也可以运行Linux。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接