Linux内核驱动-Linux系统移植
一、开机
1.bootloader --- 引导启动
2.kernal --- 内核、操作系统
3.rootfs --- 根文件系统,按一定格式组织的一堆文件的集合
二、存储
RAM --- 随机存储、掉电丢失,访问速率快;
ROM --- 只读存储、掉电不丢失,访问速率慢;
SRAM(static静态)、DRAM(动态)、SDRAM(sync同步动态)、SSRAM(同步静态)、DDRn(第n代的SDR)
PROM(可编程、一次性)、EPROM(可擦除)、EEPROM(电信号擦除)
flash --- 闪存
三、系统启动时
1.bootloader --- 一个裸机程序(为内核启动准备环境,引导内核启动)
初始化CPU、异常向量表、栈、时钟、内存、关看门狗、关闭cache(D必须关闭、I可以不关)、关闭MMU、初始化相关外设(emmc、串口、网口)、集成相关协议、搬移内核到内存(eg:从emmc到ddr)、向内核传参(根文件系统的类型、位置、控制台、init进程)、启动内核(PC指向内核所在首地址)
bootloader不再控制CPU,CPU控制权彻底移交给内核。
2.内核 --- 一个复杂的程序(永不停息)
文件管理、进程管理(及进程间通信)、内存管理、网络管理、设备管理;
内核启动到最后阶段加载(挂载)根文件系统;
启动init进程,它启动后台进程,启动shell,启动用户app;
3.根文件系统 --- 系统启动后加载的第一个文件系统(一堆文件的集合)
包含配置文件、各种服务程序、系统命令、库文件、用户程序、普通文件(文本、图片、音频)