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 时不适用,它旨在(并且确实)使所有自动魔法的东西都能正常工作。