加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

树莓派:关于linux内核源码分析

发布时间:2022-11-06 15:32:31 所属栏目:Linux 来源:未知
导读: 1、树莓派等芯片带操作系统的启动过程
c51,STM32(裸机)》》》》》》》c直接操控底层寄存器实现相关业务。业务流程形的裸机代码
遥控灯:while(1)
垃圾桶:WemosD1 LOOP
恩智浦智能车:st

1、树莓派等芯片带操作系统的启动过程

c51,STM32(裸机)》》》》》》》c直接操控底层寄存器实现相关业务。业务流程形的裸机代码

遥控灯:while(1)

垃圾桶:WemosD1 LOOP

恩智浦智能车:stm32

x 86,Intel windows

启动过程: 电源-》BIOS -》Windows内核-》C,D盘-》程序启动(QQ)

嵌入式产品:树莓派,mini2440,mini6410,nanopi,海思,RK(瑞芯微)----------------------------------------------人脸识别打卡器,智能家居主控

启动过程: 电源-》 BootLoader(引导操作系统启动) -》Linux内核 -》文件系统(根据功能性来组织文件夹,带访问权限)-》ktv点歌机

安卓

启动过程:电源-》fastBoot/Bootloader/ -》linux内核 -》文件系统-》虚拟机-》HOME应用程序 -》点某图标打开某app

BootLoader: 一阶段 让CPU 跟内存 ,FLASH,串口,IIC,IIS,数据段 打交道,驱动这些设备(汇编和c结合)

二阶段 引导Linux内核启动(纯c)

=====================================================

树莓派的文件系统:(就是我们根目录底下的东西,他的组织架构没有c盘,D盘的概念)

比如dev底下放的是和设备相关的

linux系统框图_系统可靠性框图_win7系统下安装linux系统

lib底下放的是库,各种动态库和静态库

win7系统下安装linux系统_系统可靠性框图_linux系统框图

proc底下放的都是内核的一些数据信息,以文件的形式反射出来

win7系统下安装linux系统_linux系统框图_系统可靠性框图

home 是用户登录的数据界面,工作目录

opt也是和内核底层有关系的东西

sbin通常是一些可执行的文件或者指令,系统的

linux系统框图_系统可靠性框图_win7系统下安装linux系统

bin也是系统的可执行文件或者指令

win7系统下安装linux系统_系统可靠性框图_linux系统框图

比如我们想看内核的版本

比如查看ls 的指令的文件夹在哪里

boot是启动时的数据,包括启动时加载的内容linux系统框图,或者一些命名行的配置

系统可靠性框图_linux系统框图_win7系统下安装linux系统

=================================================== ================================================== 2、树莓派Linux源码目录树分析

大约1.3w个文件 1100W行代码

Linux是开源的,免费 Linux开源社区工作者共同维护,爱好

Linux是一个开源的,支持多架构多平台代码 = 非常牛逼

可移植性非常高

但是Linux内核编译出来一般就几M 树莓派一般4M

因为支持多平台,多架构,所以编译之前要配置,配置成适合的目标平台来用

ARM

海思 友善之臂 RK 树莓派 nanopi

X86

powerPC

MIPS

(他们四个都有很多的架构)

我们来看一眼前几节课解压的Linux内核

,在这里可能体现不出一个树状结构

linux系统框图_系统可靠性框图_win7系统下安装linux系统

实际上Linux的指令有个tree的这个指令

,现在没有,安装一下

linux系统框图_win7系统下安装linux系统_系统可靠性框图

有时候

linux系统框图_系统可靠性框图_win7系统下安装linux系统

解决方法

半个小时后再试

或者把自动升级关了,重启下

基于命令行修改配置文件的方法

a、找到这里

然后修改成

linux系统框图_系统可靠性框图_win7系统下安装linux系统

b、接着弄下一个,然后把后面文件修改成都是"0"

然后把树状图下载出来(一个文件不会特别多,但是文件夹特别多,用这个树状图)

系统可靠性框图_win7系统下安装linux系统_linux系统框图

然后tree就可以查看有啥文件

系统可靠性框图_linux系统框图_win7系统下安装linux系统

那么这些目录都是存放啥文件的呢?

参考文章

Linux内核源代码目录树结构。

arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。

block:部分块设备驱动程序。

crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。

Documentation:关于内核各部分的通用解释和注释。

drivers:设备驱动程序,每个不同的驱动占用一个子目录。

fs:各种支持的文件系统,如ext、fat、ntfs等。

include:头文件。其中,和系统相关的头文件被放置在linux子目录下。

init:内核初始化代码(注意不是系统引导代码)。

ipc:进程间通信的代码。

kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。

lib:库文件代码。

mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。

net:网络相关代码,实现了各种常见的网络协议。

scripts:用于配置内核文件的脚本文件。

security:主要是一个SELinux的模块。

sound:常用音频设备的驱动程序等。

usr:实现了一个cpio。

在i386体系下,系统引导将从arch/i386/kernel/head.s开始执行,并进而转移到init/main.c中的main()函数初始化内核。

===================================================

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!