linux驱动1

linux移植

1、移植一个Linux到ARM上

2、ubuntu上开发应用程序(交叉编译)

----在A平台上开发编译B平台运行的程序

3、移植应用程序到ARM上

nfs----网络文件系统(做网络之间的文件共享)

linux启动流程:

|------------------------------------------|
| 1、bootloader是一个为内核启动准备环境的裸机程序,引导内核启动 |
| 2、kernel操作系统的核心(实现整个系统功能的程序) |
| 3、rootfs 加载(挂载)跟文件系统 |

1、bootloader(uboot)

为了读到arm里面再写到内存当中
--- 初始化异常向量表
--- 初始化CPU(工作模式)
--- 初始化栈
--- 初始化时钟
--- 关看门狗

看门狗(Watchdog Timer, WDT)

用于防止系统死机、实现自动恢复的关键安全机制,相当于系统的 "监护者"。
正常时:程序定时喂狗(重置定时器)
异常时(死机、死循环、崩溃):没人喂狗 → 定时器溢出 → 强制复位(重启)系统
--- 关闭Cache (数据Cache必关,指令可选)

Cache

CPU 内部高速缓存,用来加速内存访问,但它是异步、自动缓存的。
关 Cache:
防止外设寄存器被缓存,导致读写不真实
保证代码搬运、重定位时数据严格一致
让硬件初始化行为可预测、稳定
--- 关MMU

MMU

负责虚拟地址 ↔ 物理地址转换
负责内存权限、属性控制
负责内存映射(比如外设、DDR 映射)
Bootloader 早期只认物理地址,MMU 只会添乱所以关掉
--- 关中断
--- 初始化内存
--- 初始化相关设备(串口、网口)
--- 集成相关协议
--- 搬移内核到内存 --- 向内核传参(根文件系统类型,init进程,控制台)
--- 引导内核启动
-----bootload不再控制CPU,CPU控制权移交给内核

2. kernel 一个复杂的程序

文件管理 进程管理 内存管理
网络管理 设备管理 IPC进程间通信
内核启动到最后阶段 加载(挂载)根文件系统
启动init进程(由内核init进程退化(exec))
init -> 其他进程 -> shell -> uaerapp

3. rootfs 跟文件系统(第一个挂载的文件系统)

一堆文件的集合
--- 配置文件
--- 系统命令
--- 库
--- 用户程序
--- 普通文件(文本、mp3、jpg)

系统上电根据启动模式配置引脚从不同的介质加载bootloader(以SD卡为例)

  1. cpu拷贝bootloader前半部分到OCRAM, bootloader在前半部分代码中初始化好内存,并搬移自己后半部分到内存中执行,bootloader执行到最
    后阶段搬移内核到内存,并引导内核启动
    2-1 内核在SD卡中,则bootloader需要在代码中初始化好SD卡,然后读SD的kernel分区写入内存
    2-2 内核在ubuntu上,则bootloader需要在代码中初始化有线网卡及集成tftp协议,通过tftp协议下载内核到内存
    3-1 根文件系统如果在SD卡中,则内核直接挂载SD卡的rootfs分区
    3-2 根文件系统在ubuntu上,则内核应该通过nfs挂载ubuntu上的rootfs目录(bootloader向内核传参是应该包含内核启动阶段使用的ip)
相关推荐
wj3055853788 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver9 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq9 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU10 小时前
Petalinux新建自动脚本启动
linux
charlie11451419110 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记10 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup10 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y10 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙52012 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
1892280486112 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存