概述
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底下放的是和设备相关的
lib底下放的是库,各种动态库和静态库
proc底下放的都是内核的一些数据信息,以文件的形式反射出来
home 是用户登录的数据界面,工作目录
opt也是和内核底层有关系的东西
sbin通常是一些可执行的文件或者指令,系统的
bin也是系统的可执行文件或者指令
比如我们想看内核的版本
比如查看ls 的指令的文件夹在哪里
boot是启动时的数据,包括启动时加载的内容,或者一些命名行的配置
===================================================
====== ============================================
2、 树莓派Linux源码目录树分析
大约1.3w个文件 1100W行代码
Linux是开源的,免费 Linux开源社区工作者共同维护,爱好
Linux是一个开源的,支持多架构多平台代码 = 非常牛逼
可移植性非常高
但是Linux内核编译出来一般就几M 树莓派一般4M
因为支持多平台,多架构,所以编译之前要配置,配置成适合的目标平台来用
ARM
海思 友善之臂 RK 树莓派 nanopi
X86
powerPC
MIPS
(他们四个都有很多的架构)
我们来看一眼前几节课解压的Linux内核
,在这里可能体现不出一个树状结构
实际上Linux的指令有个tree的这个指令
,现在没有,安装一下
有时候
解决方法
半个小时后再试
或者把自动升级关了,重启下
基于命令行修改配置文件的方法
a、找到这里
然后修改成
b、 接着弄下一个, 然后把后面文件修改成都是"0"
然后把树状图下载出来(一个文件不会特别多,但是文件夹特别多,用这个树状图)
然后tree就可以查看有啥文件
那么这些目录都是存放啥文件的呢?
参考文章
https://www.cnblogs.com/senior-engineer/p/4929703.html
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()函数初始化内核。
===================================================
最后
以上就是傲娇铃铛为你收集整理的树莓派:关于linux内核源码分析的全部内容,希望文章能够帮你解决树莓派:关于linux内核源码分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复