基于ARMv8架构的mini操作系统

基于ARMv8架构的mini操作系统

深度参考了xv6实现。(… 持续更新中)

首先是配置环境

处理器选型

由于这个项目的目的是将基于RISC-V的xv6迁移到arm架构上,因此,需要选择合理的处理器。 同时,处理器的开发手册也应该是易得的,于是我了解了市面上常见的几种嵌入式开发板,分别是smt32, im6ull, 和树莓派。发现只有树莓派能支持armv8架构,而其他的开发板的cpu都是基于armv7架构。而在之前学习6s081时,6s081的源码是基于64位系统实现的。而armv7只支持32位。所以,采用树莓派就成了唯一的选择。

环境配置

为了方便调试,我首先使用了qemu模拟器进行模拟,首先在qemu模拟器跑通后再尝试将os迁移到开发板上。

首先是配置交叉编译环境

sudo apt-get install arm-linux-gnueabi-gcc 

之后是下载qemu源码

$ wget https://download.qemu.org/qemu-6.1.0.tar.xz
$ $tar xvJf qemu-6.1.0.tar.xz
cd qemu-6.1.0

接下来是配置qemu的编译环境。 当然中间还有nijia的配置过程,这里就不在叙述。

$ sudo apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev python-pip python-capstone virtualenv
# 配置编译选项,要求支持aarch64以及riscv64架构,支持调试
../configure --target-list=aarch64-softmmu,riscv64-softmmu,aarch64-linux-user,riscv64-linux-user --enable-debug



商业转载请联系作者获得授权,非商业转载请注明出处。
$ make 
$ make install

这样qemu就安装好了。检测一下qemu是否安装完毕

$ qemu-img --version
qemu-img version 6.0.1
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers

接下来我们需要安装gdb。

apt install python3-dev # 如果希望gdb有python3的支持(pwndbg需要),那么就需要这个包
wget https://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.xz
tar xf gdb-10.2.tar.xz
cd gdb-10.2
mkdir build
cd build
../configure --enable-targets=all --with-python=/usr/bin/python3
make -j$(nproc)
make install
# 接下来安装pwndbg
cd ~
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
处理器的运行,bootloader

设置SVC模式,关看门狗,屏蔽中断,初始化SDRA, 设置栈,时钟,将代码拷贝到SDRAM中,清BSS段,调用C函数。

上述为uboot的第一阶段

第二阶段从start arm开始。

从Flash里面读出内核,启动。

包括存储器初始化,环境变量初始化。

在接下来的实验中,我们先编译一个uboot

#配置交叉编译工具链
sudo apt install gcc-aarch64-linux-gnu

# clone uboot代码
export CROSS_COMPILE=aarch64-linux-gnu-

由于qemu不支持rasipi的bootloader启动,因此,暂时不再使用bootloader。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值