【问题标题】:Interested in Device Programming. Where to Start对设备编程感兴趣。从哪儿开始
【发布时间】:2010-09-25 17:04:52
【问题描述】:

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

从哪里开始?

我认为,在微控制器上运行程序并不需要大量的电子知识。

我正在使用 Linux。我已经下载了 Keil。从未尝试通过 Wine 运行它。我已经在 Windows 中运行了它。但是代码的工作原理对我来说并不完全清楚。虽然我可以理解 Logic 是用 C 语言编写的。但它对我来说仍然像一团迷雾。
我只需要一个 Quick Kickstart。

【问题讨论】:

    标签: microcontroller linux-device-driver avr


    【解决方案1】:

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

    ...除非有任何最后一刻的兴趣 [chiphacker.com],我们将推出 [electronics.stackexchange.com] 明天 [星期三 9/22] 或 星期四。

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 不错的答案。但是在开始之前我需要买什么吗?需要多少费用 ?或者我应该使用模拟器来学习?
    • @user - 绝对买点东西。如果您能负担得起 30 美元的 Arduino,甚至是 4.30 美元的 MSP430 套件(不推荐作为第一个套件),您将获得更多的满足感,并得到更好的鼓励继续学习。
    【解决方案2】:

    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等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多