Linux内核篇
一、为Linux内核开发做基础准备工作
1)先查看下树莓派linux内核源码版本:
2)然后去树莓派官网下载该版本的linux内核源码:
3)把下载哈好的linux内核源码文件拷贝到ubuntu下:
二、嵌入式设备带操作系统的启动过程扫盲
1.C51,STM32(裸机)》》》》》C直接操控底层寄存器实现相关业务。业务流程型的裸机代码
遥控灯:while(1)
垃圾桶:WemosD1.LOOP
恩智浦智能车:stm32
2.X86,Intel-----windows
启动过程:----电源----》BIOS----》windows内核----》C,D盘----》程序启动(QQ)
3.嵌入式产品:树莓派,mini2440,mini6410,nanopi,海思,RK(瑞芯微)----人脸识别打卡器,智能家居主控。。。
启动过程:----电源----》Bootloader(引导操作系统启动)----》Linux内核----》文件系统(根据功能性来组织文件,带访问权限)----》KTV点歌机。。。
4.安卓
启动过程:----》电源----》fastBoot/Bootloader----Linux内核----》文件系统----》虚拟机----》HOME应用程序----》点某图标打开某APP。。。
5.补充
Bootloaader:
一阶段:让CPU----》跟内存,FLASH,串口,IIC,IIS,数据段等打交道,驱动这些设备(汇编和C结合)
二阶段:引导Linux内核启动(纯C)
三、Linux内核源码目录树
1. Linux内核源码大约有1.3w个c文件,1100w行代码
linux内核是开源的,支持多架构多平台代码 == 非常牛逼
可执行性非常高,但Linux内核编译出来一般就几M
因为支持多平台,多架构,所以编译之前要配置,配置成适合的目标平台来用
那么Linux内核支持哪些架构呢?
ARM架构:
海思,友善之臂,RK,树莓派,nanopi
X86架构
PowerPc架构
MIPS架构
2. 看看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:头文件。其中,和系统相关的头文件被放置在