所有 我对C ++有一个很好的命令,但我从来没有在设备编程上做过任何事情。我对数字逻辑设计有一些基本的了解。但我在电子学中完全是Noob。目前,我对微控制器编程非常感兴趣。
从哪里开始?
我认为人们不需要掌握大量的电子知识才能在微控制器上运行程序。
我正在使用Linux。我已经下载了Keil。从未试图通过Wine运行它。我在Windows中运行它。但是代码如何工作对我来说并不完全清楚。虽然我可以理解逻辑是用C语写的。但它仍然像我一样迷。我只需要一个快速的Kickstart。
答案 0 :(得分:3)
这不是提出这类问题的最佳网站。 PC编程和嵌入式系统编程之间存在很大差异,其他SE站点专门从事物理计算。我在周二收到了Robert Cartaino的这封电子邮件:
......除非最后一刻感兴趣 [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 ++非常相似,Arduino可以通过'shields'进行增强,这些模块可以插入Arduino主板以添加功能。这是你的快速启动。
一个好的学习途径是熟悉Arduino,然后构建自己的AVR板(可能是Linux设备,如操纵杆),然后使用基于ARM的开发工具包,最后移动建立自己的嵌入式linux板。如果您不介意陡峭的学习曲线,可以跳过几个步骤,或者如果给定级别的能力满足您的需求,则可以在此过程中的任何位置停止。你不一定需要“在微控制器上运行程序的大量电子知识”,这是事实,但在尝试点亮LED或连接两个设备之前,你应该了解一些基本的东西,比如电压和电流。 / p>
最后,您在问题中说过您已经安装了Keil IDE。虽然这是一个很好的相当流行的IDE,但我建议您学习使用基于gcc的命令行工具链。在使用嵌入式系统时,有许多方法可能会出错,并且IDE会在发生的所有事情之上添加一层魔力。虽然这可能很好,但我强烈主张在尝试学习系统时尽量减少魔力。当事情不能自动运行时,您需要了解低级别的东西。使用Arduino时,此建议不适用,Arduino旨在(并确实)使所有自动化工作都能正常工作。
答案 1 :(得分:0)
如果是linux开发,我在beagleboard.org上推荐hawkboard.org之后,为了使beagleboard的可用成本大约是主板本身的两倍,只需购买一些东西即可使用hawkboard。但是你可以在你的台式机/笔记本电脑上学习linux驱动程序,而且不需要乱用嵌入式。
仿真器是一个良好的开端。 Qemu是好东西,模仿许多处理器,非常适合模拟虚拟Linux系统,学习Linux驱动程序开发等。但是,了解(虚拟/模拟)处理器正在做什么并不是目标。我觉得提高知名度很有用。 gdb也包含一些模拟器。 mame装满了它们,但是像qemu设计用于快速模拟而不是用于教育。视觉男孩前进是好的。仿真永远不会完美,所以最终你想要在硬件上运行,但仿真器和编译器工具是免费的,你可以在购买硬件之前学到很多东西。但是,您无法从仿真器中学到很多东西,将程序加载到flash / ram中,使用jtag或其他接口进行调试。 i2c,spi等。