2022年3月8日
摘要: MMU 功能 访问控制;虚拟地址(页)到物理地址(页框)的转换 转换过程 页由Frame Index(页框索引:与物理页框进行映射)和位p(present 存在位:本页的映射是否有效;映射无效,Frame Index部分为X,该位为0;映射有效则该位为1;虚拟地址=页号和偏移;物理地址=页框首地址+ 阅读全文
posted @ 2022-03-08 22:21 lzd626 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 网络基础 五层模型 物理层:负责把两台计算机连起来,然后在计算机之间传送0,1这样的电信号。 链路层:负责给这些0,1制定传送的规则,然后另一方再按照相应的规则来进行解读,比如以太网协议;通过mac地址来在计算机之间传输数据,在同一子网中,当主机A连着多台主机,想给主机B发数据包(包含了接收者的ma 阅读全文
posted @ 2022-03-08 22:11 lzd626 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 调试方法 printk 可在打印的字符串前加上等级 cat /proc/sys/kernel/printk能看到当前的等级信息,可修改为8 内核封装了printk的宏,自定义其打印格式,比如加上设备名称 DEBUG_LL和EARLY_PRINTK;为了在内核初始化控制台驱动driver/tty/se 阅读全文
posted @ 2022-03-08 22:08 lzd626 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 并发与竞争 概念 概念:多个执行单元并行执行时,如果对共享资源发起访问就容易引起竟态 竟态条件:核与核的进程之间,核与核的中断之间,核中断与核进程之间,核内进程之间,核内进程与中断 编译乱序:打开编译器优化后,汇编码并没有严格按照代码的逻辑顺序 执行乱序:执行也不一定按汇编码顺序,缓存命中率高的访存 阅读全文
posted @ 2022-03-08 22:07 lzd626 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 进程管理 进程概述 thread_info:保存了特定体系结构的汇编代码段需要访问的那部分进程的数据,放在内核栈顶,其中嵌入指向task_struct的指针,arm64架构通过current宏直接得到task_struct得到thread_info的地址,可以看出是直接存在sp_el0寄存器中的 再 阅读全文
posted @ 2022-03-08 22:03 lzd626 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 内存管理 物理内存 struct pglist_data:在NUMA中内存访问速度一致的部分称为一个节点 struct zone:ZONE_DMA:0-16MB的页框,直接映射到内核空间; ZONE_NORMAL:16-896MB之间的内存页框,常规页框,直接映射到内核的地址空间; ZONE_HIG 阅读全文
posted @ 2022-03-08 22:02 lzd626 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 中断 中断向量 在arm-linux中,中断号是gic区分不同中断的标志,中断向量是cpu区分不同中断类的标志 IRQ 硬件中断:由外设产生,将下一条要执行的指令的地址压入栈作为中断服务程序的返回地址 向量中断:直接跳转到预先提供的中断服务程序(比如stm32就时给每个中断提供了向量),多核的话由分 阅读全文
posted @ 2022-03-08 22:00 lzd626 阅读(257) 评论(0) 推荐(0) 编辑
摘要: MMC总线 用mmc子系统统一管理mmc(比如emmc),sd(比如sd卡),sdio(强调接口,另一端可是蓝牙,wifi等)等设备 核心层 /dricer/mmc/core.c将sd卡,mmc卡的共性抽象出来,特性则由struct mmc_bus_ops类型的mmc_sd_ops和mmc_ops和 阅读全文
posted @ 2022-03-08 21:56 lzd626 阅读(197) 评论(0) 推荐(0) 编辑
摘要: usb总线 描述符 设备/配置/接口/端点描述符;usb设备驱动是指接口驱动,即一个接口对应一个驱动 通信格式 USB总线上传输的数据是以包为基本单位的,一个包被分为不同的域,根据不同类型的包所包含的域是不一样的。不同的包有一个共同点,都要以同步域开始,紧跟着一个包标识符PID,最终以包结束符EOP 阅读全文
posted @ 2022-03-08 21:54 lzd626 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 驱动通用架构 注册总线 bus_register:bus_type_private的初始化,在这条总线目录下创建/bus/busname,/device, /driver 目录,初始化这条总线上的设备链表:struct klist klist_devices;初始化这条总线上的驱动链表:struct 阅读全文
posted @ 2022-03-08 21:50 lzd626 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 字符设备 注册设备号 每个设备都有设备号,主设备号用来区分驱动,从设备号用来区分具体设备;内核维护着一个以主设备号为key的全局哈希表,数据部分就是对应的驱动程序指针或同类驱动程序组成的数组的指针 动态:int alloc_chrdev_region(dev_t*dev, unsigned base 阅读全文
posted @ 2022-03-08 21:44 lzd626 阅读(75) 评论(0) 推荐(0) 编辑
摘要: Uboot启动流程 功能 Uboot一般有环境变量操作,内存操作,信息查询,网络操作 ,EMMC 和 SD 卡操作,FAT 格式文件系统操作,EXT 格式文件系统操作,系统引导等功能。 裸机启动 RK3399上电后,会从0xffff0000获取romcode并运行;先读取SDRAM(DDR)初始化代 阅读全文
posted @ 2022-03-08 21:41 lzd626 阅读(602) 评论(0) 推荐(0) 编辑