3

我对 C++ 有一个很好的命令,但我从来没有在设备编程方面做过任何事情。我对数字逻辑设计有一些基本的了解。但我在电子方面完全是菜鸟。目前,我对微控制器编程产生了浓厚的兴趣。

从哪儿开始 ?

我不认为一个人真的需要拥有大量的电子知识才能在微控制器上运行程序。

我正在使用 Linux。我已经下载了 Keil。从未尝试通过 Wine 运行它。我已经在 Windows 中运行了它。但是代码的工作原理对我来说并不完全清楚。尽管我可以将逻辑理解为用 C 编写的。但对我来说它仍然像一团雾。
我只需要一个快速启动。

4

2 回答 2

4

SO不是提出此类问题的最佳网站。PC 编程和嵌入式系统编程之间确实存在很大区别,其他 SE 站点专注于物理计算。周二,我收到了 Robert Cartaino 的这封电子邮件:

...除非 [chiphacker.com] 在最后一刻感兴趣,否则我们将在明天 [周三 9 月 22 日] 或周四推出 [electronics.stackexchange.com]。

所以,在这里提交到electronics.stackexchange.com ,并在等待时浏览chiphacker.com 。看看 Chiphacker 上的这些问题:

在规划嵌入式系统编程的入门路径时,您应该考虑一些事项。

  • 你想让我做什么?
  • 你知道该怎么做吗?
  • 你的学习速度有多快?

我在以下段落中概述了一些选项。

您标记了您的问题linux-device-driver,这是否意味着您想制作一个自定义设备以在 Linux 中使用?如果您的意思是embedded-linux,那么您将进入更大的微控制器类别。我建议你看看BeagleBoard,也看看这个 Chiphacker question以获得其他一些选择。如果您想做嵌入式 linux,并想构建自己的板,您首先需要在更简单的嵌入式系统设计方面积累一些经验。

您还标记了您的问题avr,这是 Atmel 制作的一个流行的微控制器类(查看avrfreaks 论坛了解更多信息)。我开始在 ATmega324p 上学习嵌入式系统;他们确实有很好的文档,易于使用,并且 avr 的在线站点比大多数其他处理器都多。

如果您想要更轻松的学习曲线,我建议您查看Arduino环境。它使用与 C/C++ 非常相似的布线,并且 Arduino 可以通过“屏蔽”进行增强,这些模块可以插入 Arduino 主板以添加功能。这是您的快速入门。

一个好的学习路径是熟悉 Arduino,然后构建自己的 AVR 板(可能是 Linux 设备,如操纵杆),然后使用基于ARM的开发套件,最后继续构建自己的嵌入式linux板。如果您不介意陡峭的学习曲线,您可以跳过几个步骤,或者如果给定级别的功能满足您的需求,您可以在此过程中的任何一点停下来。您不一定需要“大量电子知识才能在微控制器上运行程序”,这是真的,但在尝试点亮 LED 或连接两个设备之前,您应该了解一些基本知识,例如电压和电流。

最后,您在问题中说您已经安装了 Keil IDE。虽然这是一个不错且相当流行的 IDE,但我建议您学习使用基于 gcc 的命令行工具链。在使用嵌入式系统时,有很多方法可能会出错,而 IDE 在所发生的一切之上添加了一层魔法。虽然这可能很好,但我强烈主张在尝试学习系统时尽量减少魔法。当事情不能自动运行时,你需要了解底层的东西。这个建议在使用 Arduino 时不适用,它旨在(并且确实)使所有自动魔法的东西都能正常工作。

于 2010-09-25T18:05:56.247 回答
0

sparkfun.com 有很多板子、arduino 家族等。我推荐 armmite pro,lillypad 而不是 arduino pro,因为不涉及焊接,因为您需要/想要正确的 USB 到串行/电源。mbed2 贵一点,蓝色的 LED 看起来很刺眼,但易于使用。对于以上这些都不是你必须在他们的沙盒中玩的,你可以使用罐头环境等,但不是必需的。

如果是 linux 开发,我推荐 hawkboard.org 而不是 beagleboard.org,为了使 beagleboard 的可用成本大约是电路板本身的两倍,那么 hawkboard 只需购买一些为其供电的东西即可使用。但是您可以在台式机/笔记本电脑上学习 linux 驱动程序,而不必一定要弄乱嵌入式。

模拟器是一个好的开始。Qemu 是好东西,可以模拟许多处理器,非常适合模拟虚拟 linux 系统、学习 linux 驱动程序开发等。但是了解(虚拟/模拟)处理器正在做什么并不是目标。我发现能见度很有用。gdb 还包括一些模拟器。mame 加载了它们,但就像 qemu 为快速仿真而非教育而设计的一样。视觉男孩前进是好的。仿真从来都不是完美的,所以最终你想在硬件上运行,但仿真器和编译器工具是免费的,你可以在购买硬件之前学到很多东西。但是,您无法从仿真器中学到很多东西,将程序加载到闪存/内存中,使用 jtag 或其他接口进行调试。i2c、spi等

于 2010-09-27T02:42:30.380 回答