北航树莓派OS实验报告

这篇实验报告详细记录了在树莓派上进行的操作系统开发过程,包括配置开发板、启动流程、UART通信、MMU设置、异常处理和进程管理等实验室任务。作者通过设置不同寄存器和内存属性,逐步实现了从EL2到EL1的权限回落,以及内存管理和时钟中断。报告还涵盖了系统调用、进程通信和fork功能的实现。
摘要由CSDN通过智能技术生成

树莓派实验报告

lab1

MACOS 访问串口教程https://software.intel.com/en-us/setting-up-serial-terminal-on-system-with-mac-os-x

命令行

 qemu-system-aarch64 -M raspi3 -k en-us -serial null -serial stdio -drive file=sdcard.img,format=raw -kernel kernel8.img

arm中的cpsr相当于MIPS CP0里的status

arm中 通过w0-30表示32位引用寄存器的方法, x0-30表示64位引用寄存器的方法

Broadcom Arm Cortex A53-architecture processor 是一个arm 处理器 为v8代ARM

配置树莓派开发板

将uart to usb转换口连接到GPIO上, 将kernel8.img和相关配置文件拷贝到microsd卡上, 连接usb,

上电, 启动, 使用screen -L /dev/cu.usbserial-00006014 115200 指令观察串口输出。

启动

配置include.mk, 修改gcc和ld的路径到自己电脑安装交叉编译器的路径

在start.S中, 首先获得当前CPU的编号

获得CPU编号的方法很简单, 通过MPIDR_EL1寄存级获得, 通过查阅手册, 可以发现

MPIDR_EL1这个寄存器可以提供关于当前运行的CPU的核的信息, 想要知道当前是第几个核心, 只需要访问最后四位就好了。

​ mrs x0, mpidr_el1

[外链图片转存失败(img-Zi99XmLM-1562856918022)(/Users/edward/Library/Application Support/typora-user-images/image-20190528153456748.png)]

[外链图片转存失败(img-nPKYt2K5-1562856918023)(/Users/edward/Library/Application Support/typora-user-images/image-20190528153524359.png)]

使用mrs指令以64位的方式放入0号寄存器中。

如果这是0号CPU的话, 也就是最低三位都是0, 那么跳转到main函数。

否则一直循环。

uart

参考了教程中的函数, 实现了uart和读取功能。

我把和GPIO相关的宏放到了gpio.h中, UART的宏定义放在uart.h中, uart的函数放在uart.c中

设置14, 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值