【问题标题】:Run executable on MINI2440 with NO OS在没有操作系统的 MINI2440 上运行可执行文件
【发布时间】:2015-03-28 05:58:37
【问题描述】:

我的 PC 上安装了 Fedora,并且我有一个 Friendly ARM Mini2440 板。我已成功安装 Linux 内核,一切正常。现在我有一些图像处理程序,我想在没有操作系统的情况下在板上运行。船上运行的唯一进程应该是我的程序。在该程序中,我如何访问板载摄像头以从中获取图像,以及如何访问串行端口以将输出发送到 PC。

【问题讨论】:

  • 没有操作系统的程序的术语是独立或裸机程序。显而易见的问题是“为什么?”
  • 为什么我们不关心...与问题无关...
  • 串行到 pc 是第一件事,如果你还没有让 linux 运行,你需要弄清楚这一点。请参阅供应商的手册。他们很可能使用像 uboot 这样的引导加载程序。通过击键中断启动,可能有一个 loadx 或 loady 命令,您可以从中下载裸机程序,获取处理器的文档,使用引导加载程序命令写入 uart tx 寄存器,然后查看是否出现字符从那里去,谷歌裸机臂什么的。相机是一个更大的问题需要解决,但如果你有文档,可能是可行的

标签: arm embedded embedded-linux


【解决方案1】:

您说的是通常称为 bare-metal 的环境。谷歌可以帮助你,例如here。在裸机环境中,您必须对硬件有很好的了解,因为您必须处理操作系统通常处理的许多事情。

我一直在(断断续续地)为我的ELLCC 交叉开发工具链提供裸机支持。我已经完成了 ARM 的实现,但还有很多工作要做。我在blog 上写了一些我的经历。

首先,您必须启动您的程序。您需要编写一些启动代码,通常在汇编中,以处理处理器在复位(或上电)时的初始化。然后,启动代码通常会将控制权传递给用 C 编写的代码,最终直接或间接调用您的 main() 函数。进入 main() 是您在裸机冒险中迈出的一大步!

接下来,您需要决定如何支持硬件的 I/O 设备,在您的情况下包括相机和串行端口。您的图像处理需要多少标准 C(或 C++)库?您可能需要为 printf() 或 malloc() 等通常需要某种操作系统支持的函数添加一些支持。接下来可以尝试一个简单的“hello world”。

ELLCC 在examples 目录中有各种级别的ARM 裸机示例。它们的范围从简单的 main() 到并包括 MMU 和 TCP/IP 支持。全部源码可以浏览here

我是在今天早上上班前开始写这篇文章的,没有时间写完。 dwelch 和 Clifford 都有很好的建议。引导加载程序可能会让您的工作变得更简单,而有关硬件的文档至关重要。

【讨论】:

  • 先生,您是对的,这绝对需要很多时间来消化。所以现在我选择了一个非常轻量级的操作系统,[code.google.com/p/startos/]'StartOS' 开始使用。此操作系统仅在 SDCard 中运行,并为所有外围设备提供驱动程序支持。太感谢了 。你是一个很大的帮助。
【解决方案2】:

首先,您必须意识到,如果没有操作系统,您需要负责将板从复位状态中恢复,包括配置 PLL 和 SDRAM,并负责为您希望使用的板上每个设备的驱动程序代码。要做到这一点,需要对电路板和它的设备进行充分的记录。

您可以使用现有的引导加载程序来配置内核和 SDRAM,但这可能无法满足您的要求,因为板上运行的唯一进程应该是您的图像处理程序。

此外,您还需要一些加载和引导方法;现有的 Linux 引导程序可能也适合。

这绝不是直截了当的,这里不能真正详细描述。

【讨论】:

猜你喜欢
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多