- 博客(18)
- 收藏
- 关注
原创 Linux内存管理(二)- start_kernel() 到 memblock_init
讲解start_kernel() 到 memblock_init直接的内存管理工作
2025-11-28 16:44:09
995
原创 操作系统解析-基于XV6系统(5)
前面的几个章节分析了整个系统初始化过程中的所做工作。后续就是调度系统任务,所以该章节主要讲解了任务是如何调度以及任务的上下文切换过程
2025-11-03 09:26:43
769
原创 操作系统解析-基于XV6系统(4)
上一章节主要讲解了系统启动的时候内存初始化相关内容,涉及到的知识比较多也比较广,需要花费一定时间去理解和吸收。也算是第一个小难点。那么我们继续出发!
2025-10-23 20:00:09
951
原创 操作系统解析-基于XV6系统(1)
当前软件生态的发展离不开底层操作系统。在Linux系统运用越来越广泛,并且特性也越来越多。随之而来的学习难度以及对开发者的技术要求也越来越高。直接阅读Linux源码需要很深厚的软件以及芯片架构相关方面的知识,对于初学者并不是很友好。所以针对此问题,对MIT之前用于教学所有的xv6的Unix系统进行详细分析与解释,旨在分析操作系统最底层以及核心的相关内容。
2025-10-17 18:12:51
883
原创 Cache的缓存机制
从单路到组组相连,甚至全相连接,解决的主要问题还是最大程度上降低cache的颠簸性,能让内存中的数据能够更加灵活的放到cache中的任意cacheline中,但是与此同时,硬件的成本也是会增加的。cpu读取的都是一个cachline,得到一个cacheline以后,再通过index,offset,tag等标志位定位到是不是真的命中了。如果是单路相连,index值为7,如果是足足相连那么index=log2(128/2)=6位。offset:log2(64)=6log2(64)=6 位。
2025-09-12 10:50:08
407
原创 基于ARM V8的linux启动流程分析
掌握系统的启动流程能够让我们对整个系统有一个整体认知。便于建立起一个基本的知识图谱,在随后的学习过程中,再针对各个部分进行查漏补缺。
2024-09-17 17:23:16
1816
原创 Linux内核启动流程简介
1.内核程序启动的入口是ENTRY(stext)函数,在启动之前,需要确认如下信息:①、关闭 MMU。②、关闭 D-cache。③、I-Cache 无所谓。④、r0=0。⑤、r1=machine nr(也就是机器 ID)。⑥、r2=atags 或者设备树(dtb)首地址。2.调用函数 safe_svcmode_maskall 确保 CPU 处于 SVC 模式,并且关闭了所有的中断3.Linux 内核将每种处理器都抽象为一个 proc_info_list 结构体,每种处理器都对应一个procin
2022-06-25 16:17:44
4339
原创 UBOOT启动流程详解
第一阶段(汇编语言阶段)1.设置异常向量表,当系统发生异常时总会接入到一个固定地址。2.硬件初始化。设置时钟(内核时钟,总线时钟,IO接口时钟)3.关闭看门狗。看门狗用于防止程序跑飞,但是在 uboot启动阶段,还没有加载 操作系统,只有在 加载操作系统后,如果没有喂狗的过程的话,就会判定程序已经跑飞,需要重启系统。4.关闭MMU,MMU是用于虚拟地址向物理地址进行映射的一个结构。在 uboot阶段操作的就直接是 物理地址,所以不需要转换。5.关闭中断。uboot引导linux起到的过程中本身就是一个完成的
2022-06-23 11:02:02
1584
原创 LCD驱动程序框架
LCD驱动程序通过Framebuffer机制进行管理。,他和基础的字符设备一样,只不过将系统中所有和显示有关的软硬件虚拟成了一个fb设备,开发者只需要针对自己lcd设备对相关软硬件进行修改即可。1.字符设备本身就有一个函数的操作集,fb 的 file_operations 在drivers/video/fbdev/core/fbmem.c中,与普通字符类型驱动一样,对其进行读写操作。2.当我们运用开发板的时候,系统默认是打开LCD驱动的,首先注册一个mxsfb_driver结构体,包括了 匹配列表,设备名字
2022-06-23 10:09:55
513
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1