新手的ARM开发环境

3
我正在寻找关于编程ARM设备的信息,以一种特定且不确定的方式[1]。假设我为一个ARM处理器编写代码,该处理器用于类似于Apple II / Atari“*” XL / Commodore 64 / DOS-PC的机器,甚至是运行多任务操作系统(如VMS或SUNOs)的机器。进一步假设任何外围设备/操作系统特定内容已经被抽象为子例程。此类程序设计的示例可能是:基于文本/ curses的游戏,如rogue或moria;基于curses的文字处理器(或者更准确地说是基于类似curses的库);或者调制解调器/终端程序。
我正在寻找两件事情。有助于学习ARM编程的资料,虽然ARM系统开发者指南可能足够了,但其他资源也将是有益的。我特别寻找能够解释各个处理器型号之间软件(和相关硬件即寄存器)差异的东西。
我正在寻找的另一件事是开发环境,其中包括仿真、良好的宏汇编程序和调试器。以及任何其他有助于我查看程序内部情况的内容。
[1]好的。对不起,我只是无法抵制那个特定的双关语。

http://beagleboard.org/ 是一个很好的 ARM 硬件平台,有很多软件开发选项。我也发现 Steve Furber 的书《ARM System-on-chip Architecture》在它出版时相当不错,但现在有点过时了... - Chris Desjardins
2个回答

2
您可以选择使用ARM Cortex M或A系列。如果您要开发高端应用程序,例如在智能手机/平板电脑上运行的应用程序,则学习ARM A是您的选择。如果您注重硬件/低级别的控制器等方面,那么您应该选择ARM Cortex-M。如果您对实时应用程序感兴趣(我怀疑这是您的情况),则使用R系列。
这些新的ARM代数大多基于ARMv7架构和ISA,因此阅读相关手册可以帮助您入门。最近,新的ARMv8架构和ISA已经宣布,支持64位处理。
从ARM网站下载参考和技术手册以了解有关硬件/外设的信息。
我会采纳auslen的建议购买一块开发板,您可以选择TI的Stellaris Launch pad,它具有ARM-M4F处理器(支持浮点和SIMD),售价为12.99美元。http://www.ti.com/ww/en/launchpad/stellaris_head.html?DCMP=stellaris-launchpad&HQS=stellaris-launchpad-b 您可以选择ST的探索板(基于与上述相同的处理器),但它具有音频、加速度计和USB接口。售价为14.99美元http://www.st.com/internet/evalboard/product/252419.jsp,或者选择STM F3开发板(10.99美元)http://www.st.com/internet/evalboard/product/254044.jsp
无论如何,您需要检查附带的示例,否则很难入手。该板附带自己的驱动程序,所有内容都以一种抽象的方式呈现,因此您可以从那里开始!
至于操作系统,如果您感兴趣的是RTOS,则ARM为其M系列处理器提供CMSIS RTOShttp://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php
这本书介绍了ARM处理器的各个世代,然后重点介绍了Cortex M3。书中详细讲解了它的ISA,并提供了大量汇编代码。此外还介绍了内置外设以及如何使用C语言启动处理器。 http://www.amazon.ca/Definitive-Guide-ARM-Cortex-M3/dp/185617963X/ref=sr_1_1?ie=UTF8&qid=1352506616&sr=8-1 祝你好运!

2
请访问infocenter.arm.com并查看各种ARM ARMs(架构参考手册)和TRM(技术参考手册),以获取有关不同架构和内核的信息。这些手册比大多数其他公司的文档更好。除了新的64位内容外,从一个架构到下一个架构的区别在指令集方面相对微妙。主要差异与外设有关,mmu是一个变化缓慢的东西,中断管理器取得了重大进展,fpu至少一次被整体替换(如果您甚至拥有一个fpu,那么它消耗了巨大的实际空间,但回报很少)。
我对您的问题感到困惑。我认为重要的是区分学习架构/指令集和学习操作系统调用,这是两个不同的事情。操作系统方面,您很少需要超出源代码(C / C ++)范围,并且有限的汇编语言是用于手动调整的C库或引导代码和中断包装器。同样,架构、寄存器、指令等与外设(来自arm的核心通常具有非常少的外设,大部分都在供应商特定的内容中)的区别,我会将其作为单独的学习曲线进行分离,与汇编语言和指令集无关,因此与在任何其他平台上学习外设没有区别,只需要读写一些地址。
如果您正在寻找非操作系统裸机,则stm32f0 discovery售价为10美元,我强烈推荐它。看起来ti有一个stellaris launchpad,价格略高(等待我的到货,所以我不能谈论太多,而且ti的运输是免费的,因此成本基本相同stm32板)stm32f4 discovery售价约为20美元,我几乎不会称其为具有所有cortex-m4功能的微控制器。
升级到适用于Linux或专为Linux系统设计的平台,有树莓派、beaglebone和open-rd等(pandaboard)。但同样地,您只需编写另一个Linux C / C ++程序,因此在特定平台上与其他平台相比并没有太大的激情(相关娱乐活动对所有平台都相同),并且几乎不需要任何ARM知识。非常容易使用这些平台进行裸机编程,从而使您获得与基于ARM的微控制器相比类似赛车的性能。

我有一个拇指模拟器,你可能对此不感兴趣。gdb有armulator,这是公司早期的基石。Skyeye或类似的东西有一个arm指令集模拟器,qemu也有,除了gdb提供的内容外,它们都无法给你很好的可见性。Opencores有一个Amber项目,它是一个armv2克隆版,你可以看到它与armv4和更新版本之间的密切关系,但如果没有一箱现金,你将找不到任何rtl。通过我的arm和芯片经验(不,我不在arm工作),我发现Amber项目值得关注,但许多人不知道该怎么做,而且真的对那种级别的可见性不感兴趣。(它是指令兼容的,设计良好,但不要认为你正在查看一个arm设计,那里没有秘密)。你可以从中学习基本的arm架构,然后进入硬件领域,例如...

由于微控制器是基于Cortex-M的,你可能会发现旧的微控制器是通向高端arm内核的更好的垫脚石。基于ARM7tdmi的东西,如来自nxp、st、atmel等公司的sam7s和其他产品,你仍然可以在sparkfun、microcontroller pros和其他类似于arduino价格的地方找到。


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