有一些嵌入式编程课程可以从一个平台和风格转移到另一个平台和风格,但它确实是一个广泛的领域。不同的处理器可能需要非常不同的策略,不同的应用程序可能决定不同的固件设计策略和不同的微控制器。这里有一些东西可以帮助您入门....
msp430
Texas Instruments 有几个非常便宜的 USB 开发套件,他们称之为 EZ430,并且基于他们的 MSP430 系列微控制器。最简单的有一个 msp430 f2013,它有 2K 的闪存程序空间,3x128 字节的可用用户闪存(还有一个 128 字节的页面,但它很特殊),128 字节的 RAM(是的,128 字节,但对于很多事情来说已经足够了) 和 16 个 CPU 寄存器(其中一些是特殊用途,如堆栈指针、指令指针、状态寄存器,可能还有一两个)。 MSP430 还具有多个存储器映射的特殊功能寄存器,用于配置和控制内置外设。 MSP430 是 von Newman 处理器,因此一切都存在于一个地址空间中。编程器和包含 msp430 f2013 的可移动标签(PC 板)的成本约为 20 美元。大约 10 美元,您可以获得 3 个带有 msp430 2012 的替换标签,它与 2013(大部分)引脚兼容,并具有一些不同的外围设备。这些标签有一个 LED、一个按钮和几个连接到处理器引脚的大过孔(PC 板上的孔)。即使您以前从未焊接过这些通孔,也很容易将电线焊接到其中——由于毛细作用,通孔只会吸走熔化的焊料,而当它很热时,您可以将电线的末端戳进去。
他们还有几个类似的 802.15.4 无线电套件。即使您对收音机不感兴趣,您可能仍然对这些感兴趣,因为他们的程序员也有一个从可移动标签中拉出的 UART,并且与上面提到的其他套件上使用的标签兼容。这些套件还包含至少一个额外的可编程板和一个电池组。 (其中一个工具包可能包含更多,但我现在没有我的,也不打算查找)。
他们还有一个以可编程手表作为目标平台的套件。我从来没有这样的一个,但它们有一个显示器、加速度计和其他一些很酷的东西,但这可能会让你在你的第一个项目中不知所措。我建议您使用以前的套件之一来帮助您开始使用 MSP430。
您可以通过 IAR 的 Embedded Workbench kickstart(4 kb 程序空间限制)IDE、Code Composer Studio(程序大小也有限,但我认为上限更高)和 gcc 的形式获得用于 MSP430 的免费 C 编译器和开发环境/gdb 用于 MSP430。 IAR 的 kickstart 很容易快速上手,尽管它并不完美。您可能会发现必须将其关闭,拔下 USB EZ430,重新启动 IAR,然后重新插入以使其重新运行。或者也许一些不同的顺序会更适合你。
TI 还在名称错误的文件中提供了许多示例(他们所有的可下载文件都以错误的方式命名)。请注意——类似的 MSP430 可能具有用于类似外设的不同设备控制寄存器接口,这可能会造成混淆。确保您正在阅读的任何文档或示例确实适用于您正在使用的微控制器。
其他小型系统
还有许多其他处理器系列和套件可供您使用,您至少应该对它们有所了解。
AVR -- Atmel 的 8/16 位哈佛架构。哈佛指的是代码和工作内存的独立地址空间。它有 32 个 8 位寄存器,其中一些可以作为 16 位寄存器成对使用。这是一个非常流行且非常酷的处理器。一些最小的只有寄存器,没有额外的 RAM,这很可怕。 Atmel 也有一个 AVR32,它与 AVR 完全不同。除非您使用能够加载新代码的现有引导加载程序,否则您需要为这些获取 JTAG 单元。
8051 -- 这就像山丘一样古老,使用起来很痛苦,直到你最终理解它。它是一个 8/16 位处理器,对如何进行 16 位数学运算有更多限制,并且只有一对可以充当指针的寄存器。它有 3 个独立的地址空间(堆栈、全局内存和代码)和许多奇怪的(与其他架构相比)特性。如果您使用 C 进行编程,那么底层的东西可能对您没有多大意义,除了非常简单的 C 操作可能会变成比您想象的要多得多的代码。您很可能不想从其中之一开始。
propeller -- Parallax 非常有趣的多核处理器,与其他处理器非常不同。它有几个核心,这些核心大多独立运作,可用于模拟外围设备或执行更传统的计算任务。尽管我愿意,但我从未使用过其中之一。只是从来没有一个似乎适合它的任务。它们有自己的高级语言来编程它们以及处理器的汇编语言。
更大的系统
退出 8/16/24 位处理器后,您开始模糊嵌入式和桌面级编程之间的界限,即使它在技术上是嵌入式的。
AVR32 -- 这些有 2 个主要版本。一个是哈佛建筑,另一个是冯纽曼。 von Newman 版本本质上是比 ARM 更好的 ARM,但不如 ARM 受欢迎。据我所知,它的设计考虑了“运行 Linux”,尽管并没有以任何疯狂的方式与之绑定。您曾经能够为这些获得便宜的开发板,并且代码通常几乎与将文件从一台 PC 复制到另一台 PC 一样容易加载,尽管您可能会使用 uboot 和 tftp 来完成一些工作。仅当您弄乱引导加载程序时才需要 JTAG。我认为所有这些都支持原生 JAVA 加速。 www.AVR32.org
ARM——最流行的嵌入式处理器。这些有很多版本。有些没有 MMU(内存管理单元),有些则有。关于他们有太多话要说。有的版本有原生的JAVA加速,不过我觉得ARM大佬也不会随便说具体怎么用,所以你得找个JVM知道怎么用。许多供应商都生产它们,包括 Atmel、飞思卡尔、英特尔等。
MIPS -- 一个非常 RISC 的处理器。最危险的。
还有很多其他的。
编程风格
我可以为此写 3 本书,但一般规则是让应用程序尽可能简单。一个例外是,如果您可以轻松使用操作系统,那么您可能希望使用它来简化您的任务。