文章目录
一、树莓派等芯片带操作系统的启动过程
在进行内核源码分析之前,我们先了解一下各种设备的启动过程:
① C51,STM32(裸机)等——C直接操控底层寄存器实现相关业务, 业务流程型的裸机代码,如
遥控灯: while(1)
垃圾桶:WemosD1 LOOP
恩智浦智能车: stm32
② X86,Intel,windows平台
启动过程: 电源→BIOS→windows内核→C,D盘→程序启动(QQ等)
③ 嵌入式产品: 树莓派,mini2440, mini6410,nanopi,海思,RK(瑞芯微)------人脸识别打卡器,智能家居主控等
启动过程: 电源→BootLoader(引导操作系统启动)→Linux内核→文件系统(根据功能性来组织文件夹,带访问权限)→KTV点歌机、人脸识别刷卡器等
④ 安卓
启动过程: 电源-→astBoot/Bootloader/→inux内核→文件系统→虚拟机→HOME应用程序→点某图标打开某APP
BootLoader作用:
一阶段 :让CPU 跟内存,FLASH, 串口,IIC,IIS, 数据段,打交道,驱动这些设备(汇编和C结合)
二阶段: 引导Linux内核启动 (纯C)
二、树莓派Linux源码目录树分析
在官网上https://github.com/raspberrypi/linux下载树莓派内核镜像,放在Ubuntu下,具体选择哪个版本的Linux内核源码取决于树莓派已经跑起来Linux内核版本,比如我当前树莓派Linux内核版本如下:
因此我们选择4.14版本,并下载源码。
补充知识:关于Linux内核的一些基本概念
Linux系统是开源,免费的,由LInux开源社区工作者(爱好者)共同维护
Linux是一个开源的,支持多架构多平台代码 ,可移植性非常高
Linux系统非常庞大,但是通常Linux内核编译出来一般就几M(如:树莓派4M),这是因为我们编译出来的是适合该平台的内核代码,很多代码实际上是不参与编译的。
因为支持多平台,多架构,所以编译之前要配置,配置成适合的目标平台来用
如:ARM架构(海思 友善之臂 RK 树莓派 nanoPi等)、X86、PowerPC、MIPS等架构。
接下来我们来看一下我们下载的这个Linux内核源码(未编译)包含哪些文件?也就是Linux内核源码目录结构。
参考文章: