是否建议直接从 ARM 处理器的数据表和用户手册开始,或者先了解 ARM 世界然后继续?
8 回答
当我开始使用一项新的(对我而言)技术时,我首先会找到尽可能多的数据表和应用笔记,然后直接阅读它们。第一个目标是了解该技术独有的行话(和玩家姓名)。
对于 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 的交叉开发工具链的电路板可以用于 STM32 (例如,在 2009 年的售价低于 40 美元,但该型号已停产)在 100 美元的球场上。
许多其他基于 ARM 内核的产品都可以找到类似的软件包。
发现 ARM 的另一种方式是作为片上系统中的 CPU 内核。相当多的 SOC 供应商正在许可 ARM CPU 与他们的专用硬件一起放在他们的硅片上。我见过以这种方式构建的视频压缩芯片、网络芯片、火线到 ATA 适配器和 USB 设备,这只是我碰巧即兴回忆的已发表文章和新闻稿中的一部分。
2013 年第 2 次更新:在Raspberry Pi和各种Beagle系列板 中可以看到“典型”基于 ARM 的 SOC 系列的一个非常容易访问的入口点。两者都针对实验者和爱好者,都使用带有 ARM 内核和附加资源(如视频和音频功能)的 SOC,并且都可以开箱即用地运行 linux。
模块制造商还提供丰富多样的系统,提供包含完整可引导系统的夹层板,用于安装在定制板上,提供特定嵌入式系统所需的电源和 I/O 连接器。此类供应商之一是Gumstix。Gumstix AirSTORM 提供 Wi-Fi、蓝牙、DRAM、NAND FLASH 和 TI OMAP3 ARM SOC。合适的载板可以支持 LCD 面板或 HDMI、10/100 以太网、USB 主机和 OTG 以及线路级模拟音频连接,以及对各种附加 GPIO 引脚和片上外围设备的访问。
我建议买一个BeagleBoard。它们具有 JTAG 支持,因此您可以看到硬件中发生的情况,有点像硬件调试器。有几个在其上运行的 linux 版本。它周围还有一个很棒的社区,可以在您使用它时为您提供帮助。我的 Ubuntu Jaunty 正在运行,所以你可以运行的实用程序和编译器没有尽头。
这个相关问题的答案中描述了几个很好的资源:
此外,Hitex 还为一些基于 ARM 处理器的不同微控制器提供了“Insider's Guides”(免费,但需要注册):
其中大多数(如果不是全部)都是免费下载的(我认为它们是由微控制器制造商赞助的)。它们更适合于微控制器,而不仅仅是 ARM 细节,但它们确实包含一些 ARM 细节,它们是对微控制器和微控制器外围设备的很好的概述。
我会并且会在 sparkfun.com 上冲浪,他们携带 olimex 板以及自己制作。Luminary Micro/stellaris 也不错。beagleboard 更像是一个 linux 平台,而不是您访问 arm 功能/指令本身的东西。您可以使用它,但您可以用这笔钱购买 3 到 7 个不同的基于 ARM 的微控制器评估板。无论哪种方式,我都会从一个小板开始,它围绕一个基于手臂的微控制器,可能是 st 或 lpc,发光的微型只有 thumb2,我只有在用股票手臂指令和拇指指令弄湿我的脚后才会这样做。
我也很喜欢用gameboy Advance作为arm的学习平台(不是NDS,也就是高级,从GBA家族开始)。
您将需要 ARM ARM(ARM 体系结构参考手册),然后每个特定的内核都有自己的 TRM,您将需要两者才能了解哪些指令可供您使用。在大多数情况下,这些手册既可以作为参考,也可以从头开始学习。
我会首先得到一个像STR750-LOVE这样的评估板。然后编译并理解示例。在您对示例感到满意之后,是时候继续了解引擎盖下的内容并编写自己的代码了。学习过程的一个重要部分是尝试做某事,然后必须对其进行调试并使其工作。如果您想成为 ARM 方面的专家,您需要能够自信地阅读程序集。我刚刚接受了 ARM 固件开发人员的面试,我为技术部分所做的只是分析 THUMB 汇编代码并将其转换为 c 代码。大多数编译器都可以选择输出它们生成的程序集。
用 Tom Lehrer 的话来说“抄袭,抄袭,让任何人的作品都逃不过你的眼睛”。
或者像牛顿(和伯纳德)一样站在巨人的肩膀上。
换句话说,找出其他人做了什么,并在理想情况下避免重新发明轮子。
我会从一个便宜的开发板和示例软件开始,然后从那里开始,查找你需要知道的内容。
一个很好的基于 ARM 内核的 STM32 的入门读物是适当命名的STM32 Primer。
除了快速浏览之外,我不会从技术手册开始。STM32 的手册长达 600 多页,随附的 Cortex-M3 手册还有 400 页。不完全是轻读!
这真的取决于什么样的ARM,这是一个非常广阔的世界。通常 ARM 集成在 SoC(片上系统)中。如果您正准备迁移到特定的 SoC 供应商,那么您需要考虑所有这些。根据我的经验,SoC 外设和缓存选择比实际内核的影响更大(性能除外)。
至于评估板:我对Luminary micro(50-60 美元范围)Cortex M3 有很好的经验。它带有完整的 (eclipse) 开发环境、示例、库和一些硬件(即 USB、以太网、OLed 显示器)以及您可以运行和学习的示例。在实践中学习比通过阅读学习更有趣。我希望您能够从 8051 升级到 Cortex M3。
在频谱的高端,beagle 板是一个真正的数字处理器,也可以运行 Linux。