综合能力训练:在树莓派上动手写一个小OS(1):实验前准备
奔跑吧Linux社区 2022-09-02

本文节选自《奔跑吧linux内核 入门篇》第二版第16章

学习操作系统最有效且最具有挑战性的训练是从零开始动手写一个小OS(操作系统)。目前很多国内外知名大学的“操作系统”课程中的实验与动手写一个小OS相关,比如麻省理工学院的操作系统课程采用xv6系统来做实验。xv6是在x86处理器上重新实现的UNIX第6版系统,用于教学目的。清华大学的操作系统课程也采用类似的思路,他们基于xv6的设计思想,通过实验一步一步完善一个小OS——ucore OS。xv6和ucore OS实验都采用类似于英语考试中完形填空的方式来引导大家实现和完善一个小OS。
动手写一个小OS会让我们对计算机底层技术有更深的理解,我们对操作系统中核心功能(比如系统启动、内存管理、进程管理等)的理解也会更深刻。本章介绍了24小实验来引导读者在树莓派上从零开始实现一个小OS,我们把这个OS命名为BenOS。
本章需要准备的实验设备如下。

  1. 硬件开发平台:树莓派3B或树莓派4B。

  2. 软件模拟平台:QEMU 4.2。

  3. 处理器架构:ARMv8架构(aarch64)。

  4. 开发主机:Ubuntu Linux 20.04。

  5. MicroSD卡一张以及读卡器。

  6. USB转串口线一根。

  7. J-Link仿真器(可选 )。

本章用到的芯片手册如下。

  1. 《ARM Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile》的v8.4版本。

  2. 《BCM2837 ARM Peripherals》的v2.1版本,用于树莓派3B。

  3. BCM2711芯片手册《BCM2711 ARM Peripherals》的v1版本,用于树莓派4B。

本章的实验按照难易程度分成3个阶段。

  1. 入门动手篇。一般读者在完成相对容易的5个实验之后,将对ARM64架构、操作系统启动、中断和进程管理有初步的认识。

  2. 进阶挑战篇。对操作系统有浓厚兴趣以及学有余力的读者可以完成进阶篇的12个实验。这12个实验涉及操作系统最核心的功能,比如物理内存管理、虚拟内存管理、缺页异常处理、进程管理以及进程调度等。

  3. 高手完善篇。对操作系统有执着追求的读者可以继续完成高手篇的实验,从而一步一步完成一个有一定使用价值的小OS。
    本章的所有实验为开放性实验,读者可以根据实际情况选做部分或全部实验。

16.1  实验准备

16.1.1  开发流程

我们的开发平台有两个。

  1. 软件模拟平台:QEMU虚拟机。

  2. 硬件开发平台:树莓派3B或树莓派4B。

QEMU虚拟机可以模拟树莓派绝大部分的硬件工具 ,另外使用QEMU内置的GDB调试功能可以很方便地调试和定位问题。我们建议的开发流程如下。
(1)在Ubuntu主机上编写实验代码,然后编译代码。
(2)在QEMU虚拟机上调试并运行代码。
(3)将代码装载到树莓派上运行(可选)。
如果读者手头没有树莓派,那么可以在QEMU虚拟机上完成本章的所有实验。

16.1.2  配置串口线

要在树莓派上运行BenOS实验代码,我们需要一根USB转串口线,这样在系统启动时便可通过串口输出信息来协助调试。读者可从网上商店购买USB转串口线,图16.1所示是某个厂商售卖的一款USB转串口线。串口一般有3根线。另外,串口还有一根额外的电源线(可选)。

  1. 电源线(红色 ):5V或3.3V电源线(可选)。

  2. 地线(黑色)。

  3. 接收线(白色):串口的接收线RXD。

  4. 发送线(绿色):串口的发送线TXD。

树莓派支持包含40个GPIO引脚的扩展接口,这些扩展接口的定义如图16.2所示。根据扩展接口的定义,我们需要把串口的三根线连接到扩展接口,如图16.3所示。
地线:连接到第6个引脚。
RXD线:连接到第8个引脚。
TXD线:连接到第10个引脚。

图16.2  树莓派扩展接口的定义

图16.3  将串口连接到树莓派扩展接口
读者可以参照实验1-3,在MicroSD卡上安装支持树莓派的操作系统(比如优麒麟Linux 20.04),然后打开串口软件,查看是否有信息输出。在Windows 10操作系统中,你需要在设备管理器里查看串口号,如图16.4所示。你还需要在Windows 10操作系统中安装用于USB转串口的驱动。


图16.4  在设备管理器中查看串口号
插入MicroSD卡到树莓派,接上USB电源,在串口终端软件(如PuTTY或MobaXterm等)中查看是否有输出,如图16.5所示。

图16.5  在串口终端软件中查看是否有输出

16.1.3  寄存器地址

树莓派3B采用的博通BCM2837芯片通过内存映射的方式来访问所有的片内外设。外设的寄存器地址空间为0x3F000000~0x3FFFFFFF。
树莓派4B采用的是博通BCM2711芯片,BCM2711芯片在BCM2837芯片的基础上做了如下改进。

  1. CPU内核:使用性能更好的Cortex-A72。采用4核CPU的设计,最高频率可以达到1.5 GHz。

  2. L1缓存:32 KB数据缓存,48 KB指令缓存。

  3. L2缓存:大小为1 MB。

  4. GPU:采用VideoCore VI核心,最高主频可以达到500 MHz。

  5. 内存:1~4 GB LPDDR4。

  6. 支持USB 3.0。

BCM2711芯片支持两种地址模式。

  1. 低地址模式:外设的寄存器地址空间为0xFC000000 ~ 0xFF7FFFFF,通常外设的寄存器基地址为0xFE000000。

  2. 35位全地址模式:可以支持更大的地址空间。在这种地址模式下,外设的寄存器地址空间为0x47c000000 ~ 0x47FFFFFFF。
    树莓派4B默认情况下使用低地址模式。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 处理器
  • DSP
  • CPU
  • GPU
  • 什么是DRM?

    DRM介绍

    2024-12-19
  • 如何调试一个处理器

    电路板回板后,如果串口能够正常打印,则我们很多调试手段都可以运用,能够运用串口打印,或者调试工具能够快速的进行问题定位。

    2024-12-06
  • STM32手册:串口流控制功能

    串口接收方CPU拿取数据的速度赶不上串口数据的通信速度时,会导致丢数据的现象。使用串口流控制功能可以解决以上问题

    2024-11-22
  • 一个简单的例子,轻松搞懂CPU的工作原理

    本文我们将从软件工程师的角度去了解计算机是如何工作的,通过对计算机核心工作机制的学习,有利于理解我们平时编程时

    2024-09-24
  • 数字信号处理中的FIR滤波器应用

    考虑一个数字信号处理的实例,比如有限冲击响应滤波器(FIR)。用数学语言来说,FIR滤波器是做一系列的点积。取一个输入量和一个序数向量,在系数和输入样本的滑动窗口间作乘法,然后将所有的乘积加起来,形成一个输...

    2024-09-12
  • 数字信号处理的模数转换与数模转换详解

    数字信号处理是将信号以数字方式表示并处理的理论和技术。数字信号处理与模拟信号处理是信号处理的子集。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模...

    2024-09-12
  • CXL存储器扩充对DRAM市场的影响分析

    Oct. 11, 2022 ---- 据TrendForce集邦咨询最新服务器相关报告指出,CXL(Compute Express Link)原是希望能够整合各种xPU之间的性能,进而优化AI与HPC所需要的硬件成本,并突破原先的硬件限制。CXL的支援仍是以CPU为...

    2024-09-12
  • 微处理器运算器、寄存器与控制器的作用

    微处理器 微处理器(CPU)是计算机的核心部件,其中除了运算器和控制器外, 还包括用于暂存数据的寄存器和传输信息用的内部总线。图 1-8 为一个简化的 CPU 模型,CPU 需要通过三 总线(数据总线、地址总线和控制总...

    2024-08-26
  • 存储器选片的常见误区

    存储器相当于我们的大脑的存储单元,能够保存我们的电子数据。为增进大家对存储器的认识,本文将对随机存取存储器、寄存器和存储器的区别予以介绍。如果你对存储器具有兴趣,不妨和小编一起来继续认真地往下阅读哦...

    2024-08-26
  • 显示芯片的价格差异主要取决于什么因素?

    显示芯片(Display chip)是提供显示功能的芯片。显示芯片一般有两种:一种是主板板载的显示芯片,有显示芯片的主板不需要独立显卡,也是平时说的集成显卡;另一种是独立显卡的核心芯片,独立显卡通过插槽连接到主板上...

    2024-07-18
下载排行榜
更多
评测报告
更多
EE直播间
更多
广告