上一页 1 2 3 4 5 6 ··· 11 下一页
  2022年3月8日
摘要: 进程管理 进程概述 thread_info:保存了特定体系结构的汇编代码段需要访问的那部分进程的数据,放在内核栈顶,其中嵌入指向task_struct的指针,arm64架构通过current宏直接得到task_struct得到thread_info的地址,可以看出是直接存在sp_el0寄存器中的 再 阅读全文
posted @ 2022-03-08 22:03 lzd626 阅读(58) 评论(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 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 中断 中断向量 在arm-linux中,中断号是gic区分不同中断的标志,中断向量是cpu区分不同中断类的标志 IRQ 硬件中断:由外设产生,将下一条要执行的指令的地址压入栈作为中断服务程序的返回地址 向量中断:直接跳转到预先提供的中断服务程序(比如stm32就时给每个中断提供了向量),多核的话由分 阅读全文
posted @ 2022-03-08 22:00 lzd626 阅读(266) 评论(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 阅读(212) 评论(0) 推荐(0) 编辑
摘要: usb总线 描述符 设备/配置/接口/端点描述符;usb设备驱动是指接口驱动,即一个接口对应一个驱动 通信格式 USB总线上传输的数据是以包为基本单位的,一个包被分为不同的域,根据不同类型的包所包含的域是不一样的。不同的包有一个共同点,都要以同步域开始,紧跟着一个包标识符PID,最终以包结束符EOP 阅读全文
posted @ 2022-03-08 21:54 lzd626 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 驱动通用架构 注册总线 bus_register:bus_type_private的初始化,在这条总线目录下创建/bus/busname,/device, /driver 目录,初始化这条总线上的设备链表:struct klist klist_devices;初始化这条总线上的驱动链表:struct 阅读全文
posted @ 2022-03-08 21:50 lzd626 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 字符设备 注册设备号 每个设备都有设备号,主设备号用来区分驱动,从设备号用来区分具体设备;内核维护着一个以主设备号为key的全局哈希表,数据部分就是对应的驱动程序指针或同类驱动程序组成的数组的指针 动态:int alloc_chrdev_region(dev_t*dev, unsigned base 阅读全文
posted @ 2022-03-08 21:44 lzd626 阅读(80) 评论(0) 推荐(0) 编辑
摘要: Uboot启动流程 功能 Uboot一般有环境变量操作,内存操作,信息查询,网络操作 ,EMMC 和 SD 卡操作,FAT 格式文件系统操作,EXT 格式文件系统操作,系统引导等功能。 裸机启动 RK3399上电后,会从0xffff0000获取romcode并运行;先读取SDRAM(DDR)初始化代 阅读全文
posted @ 2022-03-08 21:41 lzd626 阅读(659) 评论(0) 推荐(0) 编辑
  2022年3月7日
摘要: 根据前篇iic驱动基本概念,可以做一个简单的总结 i2c-core postcore_initcall(i2c_init)->bus_register(&i2c_bus_type);i2c_add_driver(&dummy_driver);实现设备与驱动匹配检测的match,probe,remov 阅读全文
posted @ 2022-03-07 23:35 lzd626 阅读(286) 评论(0) 推荐(0) 编辑
  2021年10月23日
摘要: 启动信号:scl为高,sda从高往低跳变 结束信号:scl为高,sda从低往高跳变 数据信号:scl为高,sda电平保持稳定,这个即为一位数据;scl为低,sda才能改变电平 空闲信号:scl,sda都为高,即释放总线 驱动框架: 总线驱动: I2C总线驱动就是 SOC的I2C 控制器驱动,也叫做I 阅读全文
posted @ 2021-10-23 22:04 lzd626 阅读(299) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 11 下一页