Raspberry pi 理论上的嵌入式linux需求 我是从java、C++、C++、JavaScript 程序员背景的。

Raspberry pi 理论上的嵌入式linux需求 我是从java、C++、C++、JavaScript 程序员背景的。,raspberry-pi,embedded-linux,theory,Raspberry Pi,Embedded Linux,Theory,我给自己买了一个覆盆子Pi(型号1A,没有以太网的那个),玩了一会儿。我使用了Raspbian和Arch Linux ARM(因为据说它很小并且可以定制)。不幸的是,我没有按照我想要的方式配置它们 java(Myo)、C++(Qt)、Java(Java运行时)或JavaScript /HTML中的一些东西。 由于我无法删除所有日志消息(我删除了大部分)、tty登录屏幕,因此连接到网络的尝试(尽管型号1A根本没有以太网)启动非常糟糕,并且需要很长时间(在某些情况下为1分钟) 看来我必须构建一个最

我给自己买了一个覆盆子Pi(型号1A,没有以太网的那个),玩了一会儿。我使用了Raspbian和Arch Linux ARM(因为据说它很小并且可以定制)。不幸的是,我没有按照我想要的方式配置它们

java(Myo)、C++(Qt)、Java(Java运行时)或JavaScript /HTML中的一些东西。 由于我无法删除所有日志消息(我删除了大部分)、tty登录屏幕,因此连接到网络的尝试(尽管型号1A根本没有以太网)启动非常糟糕,并且需要很长时间(在某些情况下为1分钟)

看来我必须构建一个最低限度的嵌入式linux,但我缺乏嵌入式linux元素的理论以及它们如何结合在一起

我的问题:在raspberry pi上运行mono、qt和java的嵌入式linux理论上需要哪些部分

到目前为止,我知道以下部分:

  • 硬件(raspberry pi型号1A)+sd卡
  • sd卡包含2个分区,1个引导分区(fat32),1个数据分区(ext4)
  • 引导加载程序
  • linux内核(可以根据raspi的需要进行优化)

那又怎样呢?我的研究在我不想要的“使用发行版”中丢失了。内核和启动应用程序之间缺少哪些部分?

嵌入式Linux系统由许多不同的部分组成,它们共同工作,以实现使事情高效运行的相同目标

理想情况下,这与常规GNU/Linux系统没有太大区别,但让我们详细了解通用嵌入式系统的构建块

对于下面的解释,我假设为架构ARM。下面所写的内容可能会因实现的不同而略有不同,但通常是商用嵌入式系统的共同特点

GNU/Linux嵌入式系统的模块
  • 硬件
SoC SoC是进行所有处理的地方,它是整个系统的主要处理单元,也是唯一具有“智能”的地方。它负责使用其他硬件和运行您的软件

它由各种不同的子块组成:

  • 核心+缓存+MMU-真正的处理器,如ARM Cortex-A9。这是你在选择SoC时会注意到的主要问题。 可由诸如NEON之类的SIMD协处理器进行协同处理
  • 内部RAM-通常非常小。用于引导序列的第一阶段
  • 各种“外围设备”-通过一些互连连接 连接到核心的结构/总线。这些可以从简单的ADC扩展到3D图形加速器。此类IP核的示例有:USB、PCI-E、SGX等
  • 低功耗/实时协处理器-一些系统提供一个或多个协处理器,用于帮助主核心执行实时任务(如工业通信总线)或处理低功耗状态。它/它们的架构可能(也可能不是)是核心架构的相对物
  • 外部RAM SoC使用它来存储系统自举后和自举过程中的临时数据。它通常是嵌入式系统在正常操作期间使用的内存

    非易失性存储器-可选 可能在场,也可能不在场。就你而言,就是你提到的SD卡。在其他情况下,可以是NAND、NOR或SPI数据闪存(或它们的任意组合)

    当存在时,它通常是SoC读取的常规数据源,通常存储系统工作所需的所有软件组件。 在某些类型的应用中可能没有必要/有用

    外部外围设备 与上述内容无关的任何内容。 可以是一个MAC ID EEPROM,一些继电器,一个网络摄像头或任何你能想象得到的东西

    • 软件 首先,我们将介绍所谓的引导链,这是在您启动SoC并告诉它开始运行时发生的事情。在下面的列表中,引导链是点1到点4的后续调用
    除了特定的/异国情调的实现之外,它或多或少都是相同的:

  • 启动ROM代码-SoC中包含的一个小内存(通常为掩蔽内存,也称为工厂内存)。SoC通电后要做的第一件事就是执行其中的代码。 此代码通常根据外部配置引脚决定所谓的“引导策略”或“引导顺序”,即在何处(以及以何种顺序)查找要执行的其他代码

    合适的介质是不同的:USB存储设备、USB主机、SD卡、NAND、NOR、SPI数据闪存、以太网、UART等。 如果上面没有一个包含有效的内容,引导ROM通常会发出SoC的软复位,依此类推

    当然,介质中的代码不是就地执行的:它被复制到内部RAM中,然后执行
  • [以下两个包含在我们称之为引导加载程序介质中]

  • 第一阶段引导加载程序-它刚刚被引导ROM复制到 SoC的内部RAM。一定很小,足以装下那个记忆 (通常小于100kB)。它是必需的,因为启动ROM不可用 足够大,不知道SoC是什么类型的外部RAM 附属于

    具有初始化 外部RAM和SoC的外部存储器接口,以及 可能感兴趣的其他外围设备(例如禁用看门狗 计时器)。完成后,它将下一阶段复制到外部RAM和 执行它。根据上下文,可以称为MLO、SPL或 否则