我想知道--如果了解的生活方式或Linux体系结构,是否会为嵌入式设备上的编程提供更好的思路,特别是当它们中有某种操作系统时。
只是想确定我没有错过一件重要的事情:)
注意:
我来自一个windows背景,可以用C和C++编程。
充满激情,并最终想要开始嵌入式编程。我想从在家里做典型的爱好者项目开始。
如果有人也能把BeagleBoard作为我的出发点,那就太好了。
发布于 2011-04-01 07:18:18
是也不是。基本上是的。
Lundin正确地描述了“嵌入的两个世界”(尽管它们之间的边界非常模糊)。
如果您正在为“高级嵌入式”(如Android或其他运行Linux的设备)编写文章,那么有关Linux的专家知识肯定会有很大帮助。你仍然需要了解一些“基本原理”,当你看到C中的&=~操作符时,不要感到害怕,但是了解Linux --旧的Linux,通过在/etc中编辑文件来配置内容,在那里编译自己的内核以供日常使用,在那里您可以从tarball构建软件,这才是有帮助的。了解现代Linux、gconf编辑器、Synaptic和诸如此类的东西不会有多大帮助。
接下来,如果您正在编写没有OS的设备,在中间区域--足够快和强大到可以运行C程序,而不是操作系统,您仍然需要Linux。因为交叉编译。您不需要实际的Linux。西格温没问题。MinGW可能就足够了。不过,您可能需要能够构建自己的交叉编译器(基于GCC)、链接器、调试器、make工具以及IDE的其余“主干”。除非您的芯片供应商是了不起的,并提供了一个完整的工具链与IDE。
只有当您进入微型处理器时,您才不需要Linux。比如汽车报警遥控器,圣诞灯闪烁器,汽车轮胎压力传感器,电池水平监控器--可以有16字节的RAM,1KB的EEPROM和其他CPU来匹配,你将需要使用一个IDE来处理这个CPU,没有操作系统,没有C编译器,没有任何远程接近Linux的东西-- IDE很可能是基于Windows的。
发布于 2011-03-30 12:48:54
“嵌入”是一个模糊的词。有两类:
有一些实时嵌入式系统:微控制器/微处理器应用程序,它们在低抽象级别上与硬件直接通信。典型的应用有控制系统/自动化、工业、汽车、医疗技术、家用电子、数据/电信通信等。
然后是毛茸茸的嵌入式系统:各种笔记本电脑:ish电脑、嵌入式linux、嵌入式windows、电话和假操作系统,任何涉及互联网、人机界面等的系统。
从事这两类工作的人都会明确表示,他们正在使用嵌入式系统,而后者通常只是在做另一种桌面应用程序。根据您的目标类别,Linux可能是优点,也可能不是优点。例如,电信部门将这两个类别重叠在一起,而且它们经常使用嵌入式Linux,即使是在不松软的应用程序中也是如此。
在任何一种情况下,*nix都可能被用作开发平台,因此知道它不会有坏处。
发布于 2011-03-30 07:30:19
我想说的是,对于嵌入式编程,您真的不需要了解Linux。许多开发嵌入式软件的公司都是在windows上开发的,与其他操作系统没有任何联系。
但是,当然,更多的知识使你更多才多艺,而常识使你成为一个更好的工程师。这包括不同的操作系统和许多其他的东西。
当涉及到BeagleBoard时,它取决于您感兴趣的应用程序类型。如果你想了解低层次,我会从一个简单的处理器开始,学习如何使用外围设备,硬件中断,删除信号.有些时候自己做这件事是有教育意义的。
我想你也可以跳过这一步,从ARM-A8开始,可能还有嵌入式操作系统,但这不是我所遵循的路径。
https://stackoverflow.com/questions/5483129
复制相似问题