当前位置: 首页 > news >正文

linux驱动 day60

Linux驱动

一: linux启动流程

1.1.1基础概念

bootloader:一个裸机程序,为操作系统启动准备环境,引导操作系统启动

kernel:一个复杂的程序,操作系统核心,加载根文件系统

rootfs:根文件系统,一堆文件的集合

相对地址,有局限性,无法偏移到 数值大的地址

1.1 bootloader运行流程

初始化CPU--工作模式
初始化异常向量表
初始化栈
关看门狗
初始化时钟
初始化内存
关闭Cache---D-Cache必须关I-Cache
关闭MMU(MMU:虚拟地址转换物理地址)
初始化相关外设(flash/串口 and so on)
集成相关协议
搬移内核到内存,向内核传参(根文件系统类型/位置/控制台/init进程)
引导内核启动

​ bootloader不再控制CPU,CPU的控制权彻底移交给内核

1.2 kernel

进程管理 内存管理 文件管理 网络管理 设备管理

kernel启动到最后阶段,加载根文件系统

启动ini进程 -> shell -> user app

//内核中的init退化为用户的init进程(变成1号进程)

1.3 rootfs

内核启动后第一个挂载的文件系统,通过挂载的方式(获取访问该文件集合的方式)

1.4-1

norflash: 可线性寻址(访问方式和内存相同)

nandflash:不可线性寻址,访问需要专用的 程序控制

地址相关代码:加载地址必须和链接地址一致

地址无关代码:加载地址和链接地址无关

绝对跳转(长跳转):

相对跳转(短跳转):

1.4 nandflash启动形式

在这里插入图片描述

启动形式11.

bootloader,kernel,rootfs均存储在nandflash

​ 1.系统上电后CPU自动搬移nandflash前4KB程序到IRAM中,此时0地址被映射到0x40000000地址处(IRAM的起始地址),直接执行IRAM中的程序,bootloader必须在前4KB代码中初始化好内存,并搬移自己剩余的部分到内存运行,bootloader向内核传参,从nandflash中搬移内核到内存的0x30008000地址,启动内核

​ 2.内核启动后,挂载nandflash中的根文件系统(mnt)

​ 3.根文件系统被挂载完成后,内核会启动根文件系统中的init进程进一步启动shell及用户程序

1.5 norflash启动形式

在这里插入图片描述

​ 从norflash启动,bootloader使用norflash中的kernelrootfs存放于ubuntu主机上

​ 1.系统上电后,直接执行norflash中(norflash被接在0地址处)的bootloader程序,bootloader向内核传参,通过tftp服务中搬移内核到内存的0x30008000地址处,启动内核

​ 2.核启动到最后阶段通过nfs服务挂载ubuntu中的rootfs

​ 3.根文件系统被挂载完成后,内核会启动根文件系统中的init进程进一步启动shell及用户程序

1.5.1 tftp/nfs

tftp(简单文件传输协议):一种网络协议,主机设置tftp目录,只有该目录下的文件才能被客户端下载,客户端上传的文件也只能放在这个目录下,从机运行tftp客户端链接服务器,然后下载到本地,上传文件要通过服务器的同意



nfs(网络文件系统):主机设置nfs服务的目录该目录下的所有文件共享给挂载该目录net nfs需要手动挂载远端的服务器的客户端确定远端服务器的ip及目录

​ 客户端需要手动挂载远端的服务器,确定远端服务器的ip及目录,确定本地挂载的目录,可以在mnt目录下访问服务端nfs目录下所有文件

​ 挂载完成后本地mnt目录(home/linux/mmt)原来的文件会被隐藏,解除挂载后会重新复现

http://www.dtcms.com/a/346283.html

相关文章:

  • c语言之进程函数
  • Jetson Xavier NX 与 NVIDIA RTX 4070 (12GB)
  • CMake 快速开始
  • 常用的前端包管理器
  • 现代C#语法糖与核心特性
  • AI唤醒文化遗产新生:AI文物修复缩时、VR沉浸式展项破圈,大众感受千年文明新方式
  • 作品集PDF又大又卡?我用InDesign+Acrobat AI构建轻量化交互式文档工作流
  • AP服务发现PRS_SOMEIPSD_00256和PRS_SOMEIPSD_00631的解析
  • ubuntu 构建c++ 项目 (AI 生成)
  • uboot添加ping命令的响应处理
  • Flowise 任意文件上传漏洞 含Flowise Docker安装、漏洞复现(CVE-2025-26319)
  • 【python】python进阶——推导式
  • 深入理解 Java IO 流 —— 从入门到实战
  • 力扣(在排序数组中查找元素的第一个和最后一个位置)
  • Codeforces 更换
  • 零知开源——基于ESP8266(ESP-12F)驱动YS-IR05F红外控制空调
  • SRE系列(二) | 从可用性到 SLI/SLO
  • nginx-限速-限制并发连接数-限制请求数
  • 洛谷 P3811 【模板】模意义下的乘法逆元-普及/提高-
  • html基本元素
  • 嵌入式第三十五天(网络编程(UDP))
  • 特大桥施工绳断 7 人亡:索力实时监测预警机制亟待完善
  • STM32F1 EXTI介绍及应用
  • tiktok滑块反爬分析verifyV2
  • Linux设备模型技术路线图
  • B树,B+树,B*树
  • Codeforces Round 1043 (Div. 3)
  • set_case_analysis应用举例
  • 技术里常说 没有银弹
  • 纳米软件自动化测试平台ATECLOUD产品手册之一——系统介绍