在bootloder,linux内核,根文件系统已经完成配置的前提条件下,开发板上电,u-boot启动并初始化cpu和始终,关闭mmu和看门狗,启动linux内核,在内核态初始化硬件和设备驱动,挂载根文件系统,然后内核创建init进程,通过上下文切换,内核从内核态降级为用户态,启动init进程,init进程启动其他用户进程
内核态(Kernel Mode)
- 权限:最高权限,允许访问所有硬件资源和内存区域。
用户态(User Mode)
- 权限:最低权限,用户程序只能访问有限的资源,无法直接访问硬件,系统资源(如内存、CPU)
- 功能:不能直接与硬件交互。如果需要进行系统级操作(如 I/O),需要通过系统调用进入内核态。
上下文切换(Context Switching)
从内核态到用户态的上下文切换通过保存内核态进程的状态、恢复用户态进程的状态,并更新程序计数器,使 CPU 切换到用户模式,继续执行用户程序。
如何配置U-BOOT
- 通过技术社区下载U-Boot源码(如果从U-boot官网下载并配置会要非常了解硬件和驱动,配也要懂Jlink调试,难度很高)
- make 板机名称_defconfig 生成与开发板适配的U-Boot 配置