嵌入式八股文(二)Linux应用篇

系列文章目录

嵌入式八股文(一)C语言篇
嵌入式八股文(二)Linux应用篇
嵌入式八股文(三)Linux驱动篇
嵌入式八股文(四)FreeRTOS篇



前言

  在继续开始Linux驱动学习之前,本期继续带来linux篇的八股文学习,以为后续的学习打个基础。本系列会不定期持续更新(随笔者的学习进度),大家可以收藏一下时不时看一下。


一、Linux相关问题

1.1 Linux是什么操作系统

  Linux 本质上是一个 分时操作系统,但它也支持构建分布式系统。分时操作系统的核心特点是允许多个用户/任务共享 CPU 和时间片资源,每个用户或进程看似“独占”系统。以下是常见操作系统的详细分类和解释:

类型 核心特点
分时操作系统 多用户、多任务、时间片轮转调度 是(Linux 的核心设计)
实时操作系统 严格保证任务在确定时间内完成(如工业控制、自动驾驶)
分布式操作系统 多台机器透明协作,全局资源管理
批处理系统 按队列顺序执行任务,无交互性

1.2 初识u-boot

  这部分我们学习笔记还没有更新到,这里仅仅简单列一下理论,后续学到这部分在详细讲一下。

1.2.1 bootloader

  Linux启动时需要的一段小程序,负责初始化时钟、中断和其他外设等,然后将内核从flash中加载到SDRAM中,并启动内核,相当于PC机的BIOS。U-Boot(Universal Bootloader)是一个开源的引导加载程序,是Bootloader的一个具象化的表现。

1.2.2 为什么使用uboot启动内核

  使用U-Boot启动内核的原因主要有以下几点:

  • 初始化硬件:CPU不能直接从块设备(如SD卡、iNand、Nandflash等)中执行代码。在启动Linux内核之前,需要进行一系列的硬件初始化工作,如时钟、串口、DRAM等。U-Boot就是一个复杂的裸机程序,它负责这些初始化工作,为Linux内核的启动创造一个合适的环境。
  • 加载内核:U-Boot会将Linux内核镜像从块设备中读取到内存中的特定位置(如链接地址处)。这个过程确保了内核代码在正确的内存地址处执行。
  • 启动内核:在硬件初始化和内核加载完成后,U-Boot会执行一个特定的命令(如bootm命令)来启动Linux内核。这个命令告诉CPU从内存中的特定位置开始执行代码,从而启动Linux内核。
  • 提供交互性:U-Boot还提供了一个交互式的命令行界面,允许用户进行配置、调试和维护操作。这使得在启动Linux内核之前或之后,用户可以对系统进行更精细的控制和调试。
  • 支持多种平台和架构:U-Boot是一个开源的引导加载程序,支持多种处理器架构和嵌入式平台。这使得它成为嵌入式系统开发中广泛使用的工具之一。

1.2.3 u-boot的启动过程

  U-Boot的启动过程可以分为两个阶段,每个阶段都有其特定的功能和任务。

  • 第一阶段(汇编语言阶段):
    • 设置异常向量表:当系统发生异常时,处理器会跳转到这些固定地址的向量表中进行处理。
    • 硬件初始化:配置时钟相关参数,如内核时钟、总线时钟、IO接口时钟等。
    • 准备RAM空间:使内存芯片可用,以便加载U-Boot第二阶段的代码。
    • 复制U-Boot第二阶段的代码至RAM中。
    • 定义入口
  • 第二阶段:
    • 初始化外设:包括串口、以太网接口、存储设备等。
    • 检测内存映射:确定系统的内存布局和大小。
    • 将内核从Flash或其他存储设备读取到RAM中。
    • 为内核设置启动参数:这些参数包括内存大小、设备树地址等,用于内核启动时的初始化。
    • 调用内核:将控制权交给内核,完成系统的启动过程。

1.2.4 u-boot和内核的数据传输

  在完成相关设置(R1和R2)之后,uboot将机器ID通过R1发送给内核,并利用R2存放内存基地址。这里会产生标记的概念,他是一种数据结构是tag_header结构体和一个联合体组成。

1.3 运行地址、链接地址、加载地址

概念 定义 关键特点
链接地址 程序在编译链接阶段确定的代码和数据的预期内存地址(由链接脚本指定) 静态地址,写入二进制文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值