Embedded 如何从微控制器转移到嵌入式linux?

Embedded 如何从微控制器转移到嵌入式linux?,embedded,embedded-linux,Embedded,Embedded Linux,作为一种与这个问题相反的方式:我想征求关于从低级嵌入式系统转向使用操作系统(特别是嵌入式Linux)为更高级系统编程的建议 我主要使用小型微控制器硬件和软件,但现在只使用软件。我的教育也主要包括硬件和嵌入式设备。我没有很多编程课程,对软件设计或OO编码也不太了解 现在我手中有一个大项目,将在嵌入式Linux中完成。我在设计事物和保持事物的可管理性方面有很大的问题,因为我以前真的不需要这样做。另外,使用多任务和阻塞调用而不是从主函数运行“并行”任务就像另一个世界 从低级编程到使用操作系统(Linu

作为一种与这个问题相反的方式:我想征求关于从低级嵌入式系统转向使用操作系统(特别是嵌入式Linux)为更高级系统编程的建议

我主要使用小型微控制器硬件和软件,但现在只使用软件。我的教育也主要包括硬件和嵌入式设备。我没有很多编程课程,对软件设计或OO编码也不太了解

现在我手中有一个大项目,将在嵌入式Linux中完成。我在设计事物和保持事物的可管理性方面有很大的问题,因为我以前真的不需要这样做。另外,使用多任务和阻塞调用而不是从主函数运行“并行”任务就像另一个世界

从低级编程到使用操作系统(Linux)的大型系统,您有什么样的经验?什么是困难的,你是如何解决的?需要什么样的心态


<0 >从零开始学习C++还是继续使用普通C?< /p> 值得。使用Linux内核取代微控制器系统的主要问题是驱动您正在连接的设备。为此,您可能需要编写驱动程序。我想说的是,坚持使用C作为语言,因为您希望尽可能保持用户空间的整洁。查看uclibc库以获得更精简的C标准库

您还可能发现busybox非常有用。这将提供许多用户空间实用程序作为单个二进制文件

然后,只需从某个存储引导到一个活动系统,并通过与硬件接口的init运行一些控制逻辑。如果需要,您可以访问实时系统并运行busybox实用程序。实际上,唯一的区别是,用户空间比正态分布要精简得多,而且在目标方面,您将“更接近”内核

此外,还将研究实时linux

如果你需要完成任务的正式承诺。我怀疑最困难的部分将是引导/持久存储以及与您的硬件接口(如果是外来的)。如果您不熟悉Linux引导,那么

也许会有帮助

简言之,如果您没有为Linux进行深层次开发,没有构建自己的发行版,也没有内核经验,那么您可能会发现编程很难

可能也有帮助


祝你好运

为了使用Unix/Linux,你应该了解Unix的理念:

我认为整本书读起来很有意思:


在这里,您可以找到一个免费的Linux发行版,用于embedded targets plus bootloader,让您开始使用:

不久前,我也遇到了类似的困境。我购买并阅读了这本书,这是一种非常有用的方法,可以让我的思维过渡到一个高级操作系统(从微控制器的角度)


如果你有“时间‘慢慢来’”,你显然可以做出转变。但是,如果你需要迅速提高速度,你可能会强烈考虑找一个技术指导来指导你。

你也可以发现,通过开始进入Linux工作是很有用的。它基本上是微控制器上的Linux。您可以在不使用虚拟内存作为过渡的情况下感受内核。查看ucLinux是否支持您已经熟悉的微控制器,以及内核如何与该体系结构交互

我同意嵌入式Linux入门书对于让您的大脑了解嵌入式Linux非常有用。现在你最好还是用C。C++可以等待,它对应用程序更有用,而不是驱动代码。 当您对ucLinux的运行方式感到满意时,就可以在微处理器体系结构(如具有MMU和虚拟内存的ARM)上使用普通的Linux内核


就我的两分钱

我有一个工作的硬件,至少现在是这样。除此之外,我一直在电脑上尝试这些代码。所以实际的编码是目前最大的问题,但我以后可能需要这些。谢谢,不用担心!祝你好运。