当前位置:   article > 正文

linux 操作系统架构概念_linux平台架构

linux平台架构

1 Linux 分层概念

在这里插入图片描述

1)内核:Linux 启动首先启动内核,管理硬件,使能CPU,内存空间,硬盘接口,USB接口,网络接口等,应用所有的指令都需要通过内核传送给外设硬件,实现功能。

2)系统调用:Linux将内核功能接口设计为系统调用(system call),应用程序可以进行调用,这种系统调用大概200多个。

3) 用户空间:用户应用程序。

4)Linux定义库函数将系统调用组合某些常用的功能。

5)Shell:充当用户界面,可以通过系统调用,和内存通讯。

在这里插入图片描述
区分内核和用户空间原因:

1) 应用程序的移植性。

2) 保护内核,

3) 两个空间的切换条件:系统调用和硬件中断。

2 内核部分详解

在这里插入图片描述
内核是操作系统的核心,主要负责管理系统的进程,内存,设备驱动,虚拟系统文件,网络系统,决定着系统的性能和稳定性。

1 进程调度;2 进程间通信;3 内存管理;4 虚拟文件系统;5 网络接口。

Linux 系统移植组成部分:

1) 搭建交叉开发环境

在PC机开发出能够在目标机(开发板)上运行的程序。

原因是1 嵌入式系统的硬件资源不是很丰富,入CPU的主频低内存容量小,PC机的CPU快,硬件资源多,开发效率高;2 嵌入式系统的MCU体系结构和指令集不同。

2) BootLoader的选择和移植‘

BootLoader在操作系统运行之前运行的程序,初始化硬件设备,建立内存空间的映射图,将系统的软件和硬件准备好,为最终的调用操作系统内核做准备好正确的环境。

SRAM上电可以运行,内存(SDRAM)需要初始化才能够工作,所以BootLoader需要对内存进行初始化,并且把内核搬到内存中。

BootLoader分类:

在这里插入图片描述
以Uboot为列,介绍如下:

1) 源码开放

2) 支持多种操作系统,如linux,QNX,NetBSD,VxWorks,RTEMS,ARTOS,LynxOS

3) 支持多种处理器架构,如PowerPC,ARM,X86,MIPS,XScale

4) 高度灵活的功能设置

5) 丰富的设备驱动源码

6) 较高的可靠性和稳定性

Uboot的启动过程:

BootLoader分为stage1 和stage2 两部分,Stage1部分主要是依赖于CPU体系结构的代码,可以用汇编实现;Stage2 部分用C语言实现,实现复杂的功能,具有更好的可读性和移植性。

Stage1 代码通常放在start.s文件中。

定义入口,由于一个可执行的image文件必须有一个入口点,只能有一个全局入口,通常是ROM的0x0地址,编译器必须知道该入口,可以通过修改连接器的脚本完成。
设置异常向量。
设置CPU的速度,时钟频率,中断控制寄存器。
初始化内存控制器。
将rom中的代码复制到ram中。
初始化堆栈。
转到ram中执行,可以用指令ldrpc实现。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Stage2 ib_arm/board.c中的start armboot是C语言开始的函数,也是整个启动代码中C语言的主函数。

调用一系列的初始化函数。
初始化flash设备。
初始化系统内存分配函数。
初始化nand设备,显示设备,网络设备。
进入命令循环(整个boot的工作循环),接受用户输入的命令,执行对应的工作。
  • 1
  • 2
  • 3
  • 4
  • 5

3 Kernel的配置,编译,移植

下载内核并拷贝到指定目录
修改顶层的Makefile文件,主要修改平台的体系架构和交叉编译器
拷贝标准版的配置文件,目的是得到我们开发板的配置信息,就是把相应平台的——deconfig直接拷贝到顶层的config文件中,config文件中记录了移植平台的平台信息,系统会选择对应的相关代码和模块,然后保存配置信息,系统会把所以的配置信息保存在顶层的config文件中。
配置内核,在Kconfig和Makefile 的文件进行配置。
编译内核,编译是静态编译,会根据config文件选择源代码进行编译。
通过tftp网络服务下载测试内核。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4 文件系统概念

1)文件系统是内核一部分,主要实现系统的存储介质和其他的资源交互,嵌入式操作系统分为uboot,kernel,文件系统。BootLoader的加载了内核,内核启动,加载文件系统,表示整个linux系统启动。Linux 启动时,第一个挂载必须是根文件系统,成功之后才能手动或自动的挂在其他的文件系统,挂在文件系统时,需要有文件系统的类型,文件系统本身以及挂载点。

2)根文件系统目录:

bin目录:存放用户基本命令,必须和根文件系统在一个分区,在挂在其他的文件系统之前已经可以使用。
sbin目录:存放系统命令,主要用于存放基本的系统命令,用于启动和修复系统等,必须和根文件系统相同分区,在挂在其他文件系统之前已经可以使用。
dev目录:存放设备文件,以文件的形式访问各种设备,读写操作,类似于外设驱动。
etc目录:存放各种配置文件,目录文件是可选的,依赖于系统中所拥有的应用程序是否需要配置文件,这部分可以裁剪。
lib目录:存放共享库和可加载驱动程序,共享库用于启动系统。
home目录:用户目录,可选,存放用户的相关配置文件。
root目录:根用户目录。
usr目录:该目录内容可以存放在另外一个分区,系统启动之后可以再挂接到该目录下。里面存放的是共享,只读的程序和数据。
var目录:与usr目录相反,存放可变的数据,如spool目录,log文件,临时文件。
Proc目录:空目录,可作为proc文件系统的挂接点,proc文件系统是虚拟的文件系统,没有实际的存储设备,里面的目录,文件都是由内核临时生成的,表示系统的状态,也可以操作其中的文件控制系统。
Mnt目录:用于临时挂在某个文件系统的挂接点,一般是空目录,也可创建子目录,临时挂在光盘或硬盘。
Tmp目录:存放临时文件,并且可以访问。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

可以使用Busybox制作文件系统,创建上面的目录以及目录下面的文件。

主流的文件系统格式:Ext2,Ext3,JFS,XFS,VFAT等。

参考

https://blog.csdn.net/m0_37891624/article/details/122526813

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/574808
推荐阅读
相关标签
  

闽ICP备14008679号