代码之家  ›  专栏  ›  技术社区  ›  Neel Basu

对设备编程感兴趣。从哪里开始

  •  2
  • Neel Basu  · 技术社区  · 14 年前

    所有 我对C++有很好的控制,但我从来没有做过任何关于设备编程的事情。我对数字逻辑设计有一些基本的了解。但我对电子学一无所知。目前,我对微控制器的编程越来越感兴趣。

    从哪里开始?

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

    我正在使用Linux。我下载了Keil。从来没有试过在酒里磨蹭过。我把它放在窗户里了。但我并不完全清楚代码是如何工作的。虽然我能理解用C语言写的逻辑,但它对我来说仍然像一团雾。
    我只需要一个快速启动。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Community CDub    8 年前

    所以不是最好的网站来问这种问题。PC编程和嵌入式系统编程真的有很大的区别,其他SE站点专门从事物理计算。我周二收到罗伯特·卡塔诺的邮件:

    …禁止任何最后的兴趣来自 [chiphacker.com],我们将启动[electronics.stackexchange.com] 明天[星期三9月22日]或 星期四。

    所以,去承诺 electronics.stackexchange.com here 浏览 chiphacker.com 在你等待的时候。看看这些关于ChipHacker的问题:

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

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

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

    你把你的问题贴上了标签 linux-device-driver ,这是否意味着您要在Linux中创建一个自定义设备?如果你是说 embedded-linux 然后你就进入了一个更大的微控制器类。我建议你看看 BeagleBoard 也看看 this Chiphacker question 其他选择。如果你想做嵌入式Linux,想建立自己的主板,你首先需要在更简单的嵌入式系统设计层次上积累一些经验。

    你也把你的问题贴上了标签 avr 这是Atmel制作的一个流行的微控制器类(请查看 avrfreaks forum 更多信息)。我开始在ATMEGA324P上学习嵌入式系统;它们确实有很好的文档,易于使用,而且AVR的在线站点比其他大多数处理器都多。

    如果你想要一个更简单的学习曲线,我建议你看看 Arduino 环境。它使用 Wiring 这与C/C++非常相似,ARDUIO可以用“SeldDS”来增强,这是可以插入ARDUINO主板以增加功能的模块。这是你的快速启动。

    一个好的学习方法是熟悉Arduino,然后构建自己的AVR板(可能是Linux设备,如操纵杆),然后使用 ARM -基于开发工具包,最后继续构建自己的嵌入式Linux板。如果你不介意陡峭的学习曲线,你可以跳过几步,或者如果某一特定级别的能力满足了你的需求,你可以中途停下来。在微控制器上运行程序并不一定需要“大量的电子知识”,这是事实,但是在你试图点亮一个LED或连接两个设备之前,你应该了解一些基本的东西,比如电压和电流。

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

        2
  •  0
  •   old_timer    6 年前

    Sparkfun.com有很多董事会,Arduino家族和其他。我推荐Armmite Pro,LillyPad而不是Arduino Pro,因为它不需要焊接,因为您需要/想要正确的USB连接到串行/电源。MBED2的价格要贵一点,蓝色的LED在眼睛上很残忍,但很容易使用。因为以上都不需要你在他们的沙盒里玩,你可以使用罐头环境,等等,但不需要。

    如果这是Linux开发,那么在我推荐hawkboard.org而不是beagleboard.org之后,为了使beagleboard的可用成本大约是board本身的两倍,hawkboard只能通过购买一些东西来驱动它。但是你只需在你的台式机/笔记本电脑上学习Linux驱动程序,就不必再纠结于嵌入式系统了。

    模拟器是一个很好的开始。QEMU是一种很好的工具,可以模拟多个处理器,非常适合于模拟虚拟Linux系统,学习Linux驱动程序开发等。但是,了解(虚拟/模拟)处理器所做的工作并不是目标。我发现能见度很有用。GDB还包括一些模拟器。妈妈也有很多,但就像QEMU一样,它是为快速模仿而设计的,而不是为教育而设计的。男孩的视觉进步很好。仿真从来都不是完美的,所以最终你想要在硬件上运行,但是模拟器和编译器工具是免费的,你可以在购买硬件之前学到很多东西。但是,有相当多的内容您无法从模拟器中学习,比如将程序加载到flash/ram中,使用jtag或其他接口进行调试。I2C、SPI等。