ARM——操作系统—最小操作系统

本文介绍了一个简单的ARM操作系统实现过程,重点在于如何初始化串口并输出字符。通过直接操作硬件寄存器来设置串口参数,并编写汇编指令完成字符发送。

自己动手写最小的ARM操作系统。能够看到自己的代码,真的控制着硬件启动起来,心情是不一样的。

ARM是嵌入式设备,想写个操作系统就需要了解硬件。在X86时代有BIOS帮我们,大部分东西简化了。在ARM时代,最小的操作系统,是设置好串口。通过串口打印字符。

最小的PC,也是有键盘,显示器和主机。

最小的嵌入式设备,无键盘,无显示器,只有主机,最通用的就是串口了。所以最小的操作系统,也只能通过这里输出。

我们要做的工作,(目前没有使用中断,从最小系统的角度,已经够了,理解就好。):

1.阅读SOC的芯片手册,找到如何设置UART寄存器。

2.往串口写数据。

    .org 0x0000
    @
    @ UART initialisation (38400 8N1)
    @
    ldr    r0, =0x1c090000       @ UART base (Versatile Express)
    mov    r1, #0x10             @ ibrd
    str    r1, [r0, #0x24]
    mov    r1, #0xc300
    orr    r1, #0x0001           @ cr
    str    r1, [r0, #0x30]

    mov    r1, #'f'
    str    r1, [r0, #0x0]
    mov    r1, #'o'
    str    r1, [r0, #0x0]
    mov    r1, #'r'
    str    r1, [r0, #0x0]
    mov    r1, #'e'
    str    r1, [r0, #0x0]
    mov    r1, #'s'
    str    r1, [r0, #0x0]
    mov    r1, #'t'
    str    r1, [r0, #0x0]
    mov    r1, #'c'
    str    r1, [r0, #0x0]
    mov    r1, #'e'
    str    r1, [r0, #0x0]
    mov    r1, #'l'
    str    r1, [r0, #0x0]
    mov    r1, #'l'
    str    r1, [r0, #0x0]

    mov    r1, #0x0A
    str    r1, [r0, #0x0]
    b      .

Makefile

# Build an ELF linux image

IMAGE       = boot.bin
BOOTLOADER  = boot.S

CROSS_COMPILE	= arm-none-linux-gnueabi-

AS		= $(CROSS_COMPILE)as
LD		= $(CROSS_COMPILE)ld

all:$(IMAGE)
	
clean:
	rm -f $(IMAGE)

$(IMAGE): $(BOOTLOADER)
	$(AS) -o $@ $<
	

fastmodels模拟运行的截图


qemu模拟运行的截图



Menuet 是英国一位软件工程师 Ville Mikael Turjanmaa 利用业余时间开发的,完全由 x86汇编语言于 2000年写成的一款32位操作系统。经过大量的修改与完善后, Menuet OS目前已经成为一个用功能完善的操作系统,目前的版本号是 0.74。Ver 0.75 正在开发中。 MenuetOS 并不是一个类Unix操作系统,它完全由 Asm语言编写的系统。Menuet 不基于当前任何一款流行的操作系统而运作,主要是为在开发过程中避免复杂的编程及各种不可预料的 Bug。 尽管Menuet是完全用 32位汇编写成的,但它的系统程序构架并不完全是为汇编语言而保留,它的接口实际上可用于任何程序设计语言。尽管如此,系统开发的目的还是为更简化 Asm程序设计而设计,系统下 GUI编程尤其体现这一点。 Menuet OS 的特点: 多任务,多线程 图形用户界面,可以达到 16bit color,1280x1024 dpi 程序开发比 Windows 和 Linux 之类的系统更容易 IDE环境:自带应用程序及内核编辑编译工具 完全开放的源代码(GPL) TCP/IP 协议栈、PPP 及 局域网络 HTTP/MP3/Mail 服务器,3D迷宫 自由的界面,窗口可换“皮肤” 仅一张 1.44M 软盘可以装下! Menuet OS 对硬件的要求 : CPU : 386 或更高 显示: 支持 VESA 2.0的显卡(推荐使用)或支持 VESA 1.2 的显卡,至少 1M显存。VGA/EGA 显示器。(注:目前的显卡都支持 VESA 3.0,同时也向下兼容) 声卡: 兼容 SB(Sound blaster) 16声效卡 硬盘: LBA 模式 FAT32文件系统 网络: Realtech 8029/8139 芯片组网卡 鼠标: PS/2 或 COM 或 USB /*别相信这个,我的USB鼠标就用不了*/ 内存: 至少32M
MenuetOS是一个为x86(IBM兼容)计算机开发的业余操作系统,它是一款完全由汇编语言(32位)写成的迷你操作系统,因此它更小、更快,并且系统本身用应用程序占用很少的系统资源。   项目最初是芬兰人 Ville Turjanmaa(赫尔辛基大学) 利用业余时间开发完成。现在世界各地都有 MenuetOS 的开发者,他们正在不断完善这个操作系统。    这个项目目前由 Jarek Pelczar(jarekp3[@]wp[.]pl) 接管。项目的中文版由本站站长 E-mean X. 开发。   MenuetOS 并不像现在流行的 Linux 及其它如 FreeBSD、Minix 一样是一个类 Unix 的操作系统,它完全由32位汇编语言编写的系统。Menuet 及其应用程序不基于当前任何一款流行的操作系统而运作,主要是为在开发过程中避免复杂的编程及各种不可预料的 Bug。   尽管Menuet是完全用 32位汇编写成的,但它的系统程序构架并不完全是为汇编语言而保留,它的接口实际上可用于任何程序设计语言。尽管如此,系统开发的目的还是为更简化 Asm程序设计而设计,系统下 GUI编程尤其体现这一点。 ·Menuet OS 的特点   - 多任务,多线程  - 图形用户界面,可以达到 32bit color,1280x1024 分辨率  - 程序开发比 Windows 和 Linux 之类的系统更容易  - IDE环境:自带应用程序及内核编辑编译工具  - 完全开放的源代码(GPL)  - TCP/IP 协议栈、PPP 及 局域网络  - HTTP,MP3,Mail 服务器,3D迷宫  - irc, http, nntp 及 tftp客户端  - 自由的界面,窗口可换“皮肤”  - 仅一张 1.44M 软盘可以装下! ·Menuet OS 对硬件的基本要求  CPU : 386 或与之相兼容的 CPU 显示: 支持 VESA 2.0(建议使用) 或 VESA 1.2 的显卡,VGA/EGA 显示器。 声卡: Creative SB(Sound blaster) 16或兼容声效卡 硬盘: ATA LBA 模式 FAT32文件系统 网络: Realtech 8029/8139, Intel 8255x, 3com, PCNET32 Ethernet PCI cards PPP dialup 鼠标: PS/2 或 COM 内存: 至少32M
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值