运行 在 MINI2440 上可执行,没有 OS

Run executable on MINI2440 with NO OS

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

首先,您必须意识到,如果没有 OS,您需要负责将电路板从复位状态唤醒,包括配置 PLL 和 SDRAM,以及您希望电路板上每个设备的驱动程序代码采用。为此,需要对电路板及其设备进行充分的记录。

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

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

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

您说的是通常所说的 bare-metal environment. Google can help you, for example here。在裸机环境中,您必须对硬件有很好的了解,因为您必须处理 OS 通常处理的很多事情。

我一直在(断断续续地)为我的 ELLCC cross development tool-chain. I have the ARM implementation pretty far along but there is still quite a bit of work to do. I have written about some of my experiences on my blog 提供裸机支持。

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

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

ELLCC 在 examples directory. They range from a simple main() up to and including MMU and TCP/IP support. The source for all of it can be browsed here.

中有各种级别的 ARM 裸机示例

今天早上我去上班之前就开始写这篇文章,但没有时间写完。 dwelch 和 Clifford 都提出了很好的建议。引导加载程序可能会使您的工作变得更加简单,并且硬件文档至关重要。