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模拟运行的截图



  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值