为 ARM 处理器编写操作系统

Ane*_*rma 0 x86 operating-system arm raspberry-pi

我最近为 x86 架构开发了一个非常简单的操作系统。但后来我意识到要为 ARM 板(如 RPi)以较小的规模构建它。

我想问一下,ARM指令集和x86有什么不同?

即使在 ARM 板上也有 BIOS 吗?如果没有,是否还有其他方法可以在屏幕或视频内存上打印输出?

要在 Raspberry Pi 上对操作系统进行编程,我需要做哪些更改?

一瞥我所知道的 - 我创建了一个简单的操作系统,它可以在屏幕上打印文字、从磁盘读取并将内核加载到内存中并切换到 32 位模式。

Ben*_*igt 5

没有与执行硬件抽象的 PC BIOS 等效的层,您需要为处理器中存在的每个特定外设/控制器实现一个驱动程序。

在 ARM 中,大多数外设访问都是内存映射的。有没有独立的I / O空间的概念,或分开INOUT类似x86指令传统上使用(虽然PC外围设备越来越多地使用内存映射访问也)。

使显示器工作可能包括启用 LCD 控制器外设,写入有效的行数、列数和时钟分频器值以匹配您的显示器支持的模式,然后写入帧缓冲区。可能会有中断需要处理,或者如果你不介意撕裂,你也可以不用它们。在 PC 上,BIOS 会写入一些有效值,而在 ARM 上,在您在代码中执行此操作之前,可能甚至没有启用显示控制器。

处理器芯片的编程指南中有一整章专用于显示外设。此外,您可能会发现已经为 u-Boot 等引导加载程序编写了代码,在这种情况下,您可以编写操作系统以从引导加载程序配置的任何状态开始。

从嵌入式工程师的角度来看,Raspberry Pi 的不幸之处在于,其编程指南的大部分内容(与 VideoCore 相关的所有内容)只能通过签署 NDA 才能获得。

使用其他工具包之一,例如 BeagleBone(带有 TI OMAP 处理器),您可能会获得更好的运气,其中文档是公开可用的。