【问题标题】:How to move from microcontrollers to embedded linux?如何从微控制器迁移到嵌入式 linux?
【发布时间】:2010-10-30 20:06:19
【问题描述】:

作为与此问题相反的一种:"Is low-level embedded systems programming hard for software developers" 我想就从低级嵌入式系统迁移到使用 OS 的更高级系统(尤其是嵌入式 Linux)进行编程寻求建议。

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

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

您在从低级编程转向使用 OS (Linux) 的大型系统方面有哪些经验?什么是困难的,你是如何解决的?需要什么样的心态?

从零开始学习 C++ 还是继续使用纯 C 是否值得?

【问题讨论】:

    标签: embedded embedded-linux


    【解决方案1】:

    使用 Linux 内核替换微控制器系统的主要问题是驱动您与之交互的设备。为此,您可能必须编写驱动程序。我会说 坚持使用 C 作为语言,因为您会希望尽可能保持用户空间干净。查看 uclibc 库以获得更精简的 C 标准库。

    http://www.uclibc.org/

    您可能还会发现 busybox 很有用。这以单个二进制文件的形式提供了许多用户空间实用程序。

    http://www.busybox.net/

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

    还可以查看实时 linux。

    http://www.realtimelinuxfoundation.org/

    如果您需要一些正式的任务完成承诺。我怀疑最难的部分将是启动/持久存储以及与您的硬件接口(如果它是异国情调的)。如果你对 Linux 启动不熟悉,那么

    http://www.cromwell-intl.com/unix/linux-boot.html

    可能会有帮助。

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

    http://www.linuxdevices.com/可能也有帮助

    祝你好运

    【讨论】:

    • 我有一个可以工作的硬件,至少现在是这样。此外,我一直在主要在 pc 上尝试代码。所以实际的编码是目前最大的问题,但我以后可能需要这些。谢谢。
    • 别担心!祝一切顺利。
    【解决方案2】:

    要使用 Unix/Linux,您应该了解 Unix 哲学:http://www.faqs.org/docs/artu/ch01s06.html

    我认为整本书读起来很有趣:http://www.faqs.org/docs/artu/index.html

    您可以在此处找到适用于嵌入式目标的免费 Linux 发行版以及引导加载程序以帮助您入门:http://www.denx.de/wiki/DULG/WebHome

    【讨论】:

      【解决方案3】:

      不久前,我也陷入了非常相似的困境。我购买并阅读了Embedded Linux Primer,这是一种非常有帮助的方式,可以帮助您将心理转变为高级操作系统(从微控制器的角度来看)。

      如果您有“时间‘慢慢来’”,您显然可以进行过渡。但如果您需要快速上手,您可能需要强烈考虑聘请技术导师来帮助指导您。

      【讨论】:

        【解决方案4】:

        您还可能会发现从ucLinux 开始进入Linux 很有用。它基本上是微控制器上的 Linux。您可以在没有虚拟内存方面作为过渡的情况下对内核有所了解。查看 ucLinux 是否支持您已经熟悉的微控制器,并查看内核如何与该架构交互。

        我同意《嵌入式 Linux 入门》这本书非常适合让您深入了解嵌入式 Linux。你现在最好坚持使用C。 C++ 可以等待,它对应用程序更有用,而不是驱动程序代码。

        当您对 ucLinux 的运行方式感到满意时,您可以从微处理器架构上的普通 Linux 内核开始,例如具有 MMU 和虚拟内存的 ARM。

        只要我的两分钱!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-29
          • 1970-01-01
          • 2017-12-01
          • 2011-11-06
          • 2016-11-02
          • 1970-01-01
          • 1970-01-01
          • 2020-01-20
          相关资源
          最近更新 更多