2022年9月14日

【kernel】内核调试

摘要: 开启debug的方法: 1、在想要打印log的文件下,添加一个#define DEBUG 2、在makefile中通过KCFLAGS传递 设置kernel printk的日志等级为8 修改printk的默认日志级别的方法有多种,例如直接修改printk.c(新kernel为printk.h)中的CO 阅读全文

posted @ 2022-09-14 15:03 甲鱼写代码 阅读(65) 评论(0) 推荐(0) 编辑

【driver】dts

摘要: 1 阅读全文

posted @ 2022-09-14 11:17 甲鱼写代码 阅读(9) 评论(0) 推荐(0) 编辑

【driver】UART

摘要: 1 阅读全文

posted @ 2022-09-14 10:51 甲鱼写代码 阅读(8) 评论(0) 推荐(0) 编辑

【driver】SPI

摘要: 根据相位和极性分类 CPOL=0,空闲低电平 CPOL=1,空闲高电平 CPHA=0,第一跳变沿采集 CPHA=1,第二跳变沿采集 分析一段代码: 1 /* CPOL = 1, CPHA = 1, MSB first */ 2 uint8_t SOFT_SPI_RW_MODE3( uint8_t w 阅读全文

posted @ 2022-09-14 10:51 甲鱼写代码 阅读(22) 评论(0) 推荐(0) 编辑

【driver】IIC

摘要: 总结得最好的文章: https://blog.csdn.net/weixin_44933419/article/details/114991088 要点: 三种速度的工作模式 标准、快速、高速 三种信号 1、开始信号: SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。2、结束信号: 阅读全文

posted @ 2022-09-14 10:50 甲鱼写代码 阅读(77) 评论(0) 推荐(0) 编辑

【kernel】中断

摘要: 上下半部 下半部三件套 中断中到底该用什么锁? 自旋锁。因为用互斥锁的话可能会让出CPU,在中断上下文中让出CPU是不可接受的 阅读全文

posted @ 2022-09-14 10:21 甲鱼写代码 阅读(5) 评论(0) 推荐(0) 编辑

【kernel】文件系统

摘要: 如何打开一个文件 首先贴出整体的流程: compat_sys_openat|-->do_sys_open |-->do_filp_open |-->do_filp_open |-->path_openat|-->path_init # nd初始化。|-->link_path_walk # 真实寻找。 阅读全文

posted @ 2022-09-14 10:20 甲鱼写代码 阅读(56) 评论(0) 推荐(0) 编辑

【kernel】内存管理

摘要: 进程页表与内核页表 所有的进程共享一份内核页表,所有的进程页表各不相同 内核页表在bring up的时候创建,而进程页表在进程创建的时候填写,对于内存页申请的同步(比如内核申请了一块内存,在进程页表中的同步)往往发生在pagefault的时候 CPU访问虚拟地址的时候总是通过MMU先访问TLB,再访 阅读全文

posted @ 2022-09-14 10:19 甲鱼写代码 阅读(41) 评论(0) 推荐(0) 编辑

【kernel】进程以及进程调度、进程管理

摘要: 貌似只有硬件中断才是真正意义上的 异步,会在程序意想不到的位置发生,其他的机制诸如信号、系统调用、软中断等等,总是在某个 同步 的位置去处理他们 进程调度的时机 系统发生调度的时机如下: 调用cond_resched()时 显式调用schedule()时 从系统调用或者异常中断返回用户空间时 从中断 阅读全文

posted @ 2022-09-14 10:18 甲鱼写代码 阅读(58) 评论(0) 推荐(0) 编辑

导航