2022年9月15日

【kernel】可重入

摘要: 这篇文章介绍得很好 https://blog.csdn.net/YuZhiHui_No1/article/details/38567399 阅读全文

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

【kernel】中断中能不能让出CPU呢?

摘要: 先说结论:事实上在中断处理中调用schedule或sleep等函数,未必会直接进入panic(部分厂商提供的内核会,这样保证了程序员可以更早的发现问题) 有些内核版本,中断会单独开一些中断栈,并没有task_struct等结构,被调度走了以后,就调度不回来了,那么中断处理就有问题了 但早期有些内核版 阅读全文

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

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】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】UART

摘要: 1 阅读全文

posted @ 2022-09-14 10:51 甲鱼写代码 阅读(8) 评论(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) 编辑

导航