我正在寻找一本关于ARM微控制器的入门书籍。它应涵盖CPU体系结构和引导顺序,理想情况下还应涵盖汇编程序,C和外围设备。
我有一本关于AVR的书,而Atmel芯片似乎有多个不错的选择。有多家供应商和几类芯片,ARM的情况更为复杂。在亚马逊上浏览并没有显示出明显的偏爱。将不胜感激一些建议。
我正在寻找一本关于ARM微控制器的入门书籍。它应涵盖CPU体系结构和引导顺序,理想情况下还应涵盖汇编程序,C和外围设备。
我有一本关于AVR的书,而Atmel芯片似乎有多个不错的选择。有多家供应商和几类芯片,ARM的情况更为复杂。在亚马逊上浏览并没有显示出明显的偏爱。将不胜感激一些建议。
Answers:
我建议您去ARM信息中心。就我而言,这是一个好的开始。即使从一个MCU迁移到ARM,它也会提供很多信息。http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0211a/index.html 同样,其ARM芯片上的ATMEL站点也将非常有用。好的文档和大量的应用笔记。祝一切顺利。
搜索《 ARM ARM,ARM体系结构参考手册》。涵盖了引导过程,体系结构,组装(ARM,thumb和thumb2)以及所有内容。ARM ARM是通用的,对于您感兴趣的特定内核,还将提供TRM技术参考手册。所有这些文档都可以从ARM网站免费获得。TRM将详细介绍该内核的详细信息,特别是如果您要使用较新的基于Cortex-M3的微控制器之一,启动顺序或可以说异常表与传统ARM不同,并且您需要TRM使用Cortex-M3查找信息。
如果最终使用的是带有缓存或mmu的机械臂,则可能还需要从ARM网站获取该机械臂的TRM。您需要了解特定供应商芯片中内置的特定内核,例如PL310 r2p0可以/可能不同于r3p0。供应商应具有此信息,并可能直接提供到arm文档的链接,或者可能直接提供arm docs,通常他们不会将arm docs嵌入自己的文档中。我认为ARM更喜欢这种方式。
就C而言,它只是C,没什么特别的,主流编译器,gcc,llvm,Keil(现在由ARM拥有),IAR,green hills等都支持ARM。Microsoft甚至已经/已经拥有(应避免)它)。ARM没什么特别的,但是您需要了解特定编译器及其链接的细微差别。目前,可以使用Code Sourcery来准备使用基于gcc的ARM编译器,可以免费下载和使用LITE版本,并且如果需要支持,则可以付费购买版本(google.com上比gcc arm更好的免费支持)您有时间阅读)。在代码源之前,emdebian是一个去处,对于某些东西yagarto和devkitarm和winarm都已经/已经准备好使用解决方案(对于嵌入式(不一定是linux,对于Source Codery或emdebian,如果您想交叉编译linux))。
我有一些博客不是真正的博客,而是放置一些示例程序和信息,以介绍如何启动一些不同的基于ARM的微控制器。我有些C,一些较老的博客,我展示了如何构建自己的基于gcc的交叉编译器。我可能也有llvm信息(thumbulator有几个示例,尽管没有记录),开箱即用llvm可以用作许多平台的交叉编译器,您不必将其构建为gcc之类的目标。llvm的代码生成已经赶上了gcc 4.x(gcc 4.x不一定比gcc 3.x好,并且gcc或llvm都不比ARM自己的编译器等其他昂贵的产品好)。
http://stm32stuff.blogspot.com/
从那里,您可以单击我的个人资料,并找到有关lpc,lmi(lightie micro,恒星零件,现在归ti拥有)sam7的类似信息。我不太喜欢LPC系列产品,除了痛苦的蓝色LED灯之外,mbed2还可以。现在有一个基于stm32的板,价格为12美元,有些发现,可以直接使用。coridium的木板与枫木一样,与arduino的足迹相匹配,可以在sparkfun(sparkfun的很多好东西)中获得一个或两个。如果您正在寻找更强大的功能,那么Beagleboard会因为缺少接口而感到痛苦,相同价格的中文版本更好/更好(出现在一两周之内,但没有任何形式的跟踪信息),以太网和未拧紧的串行端口。我喜欢hawkboard,但我认为他们没有遵循设计指南,因此omap可能有问题。喜欢插件计算人员的openrd,但讨厌插件版本。openrd的板上有一个sata电源和数据连接器,只需插入硬盘驱动器,此类中的其他板将迫使您使用基于闪存的设备(读:非常慢)。无论如何,marvell核心目前正围绕着ti omaps运行。
或免费试用我的thumbulator(github)拇指指令集模拟器,但仅限于拇指,没有手臂(您可以将代码从其中带到stm32板上,就像12美元一个)。gdb和其他地方的armulator可能更难使用,但它支持手臂和拇指,如果您不希望看到除串行端口输出以外的代码在做什么,qemu易于使用。qemu支持手臂,拇指和拇指2,我认为那里是一两个Stellaris板的模型。
如果您已经知道AVR汇编程序,而汇编程序不是那么好(比某些指令好,比其他指令差),那么ARM或Thumb应该没有任何问题,更简洁,更简单。同样,如果您使用AVR完成了嵌入式C(沙盒外部),那么ARM将会变得相同或更容易。您可以使用mbed或maple的沙盒,该沙盒可以让您轻松上手,然后,如果您想自己冒险,可以没有太大的麻烦。mbed,您只需将.bin复制到虚拟闪存驱动器,使用您的加载器或dfu-util或类似的内存的枫木,我就不记得了。
关于ARM的好书是:
史蒂夫·弗伯(Steve Furber)的“ ARM SOC Architecure”
“ ARM系统开发人员指南”,作者:Andrew Sloss,Dominic Symes和Chris Wright
ARM的“ ARM体系结构参考手册”
最后一个可在ARM 网站上免费获得。
Sloss,Symes和Wright是极好的选择,如果您想离开树木去看森林,尤其是在需要嵌入式系统的情况下。
Furber是最早的ARM架构师之一,在使您了解ARM设计的原理以及ARM处理器内核的总体工作原理方面做得非常出色。
当然,以上所有内容仅是基于我个人/主观意见的建议,不能视为特定产品或作者的插件。
Hitex有这些书,您可以下载:
有一个很好的系列教程,其名称为:“使用GNU构建裸机ARM系统”