会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
MHDSG
博客园
首页
新随笔
联系
订阅
管理
2021年12月2日
内存管理
摘要: 1 基础 1.1 地址分类 在linux中地址可分为3类,分别为: 虚拟地址(Virtual Address):即我们在应用程序中所使用的地址,例如使用%p所打印出的地址就是虚拟地址 线性地址(Linear Address):虚拟地址经过分段处理就变成了线性地址 物理地址(Physical Addr
阅读全文
posted @ 2021-12-02 20:57 MHDSG
阅读(39)
评论(0)
推荐(0)
2021年8月6日
P2 NBIOT(DMA+空闲中断)
摘要: 1.相关概念解释 1.1串口透传 平常拿到某个模组之后我们往往通过USB-TTL芯片将模组与电脑相连,进而对模组状态进行检测或者控制模组 串口透传则是将模组与单片机相连,之后再通过USB-TTL将单片机与电脑相连,通过单片机对模组进行控制,即单片机相当于中间商 具体做法是:模组与单片机之间通过串口2
阅读全文
posted @ 2021-08-06 00:04 MHDSG
阅读(407)
评论(0)
推荐(0)
T15 内核工具辅助函数
摘要: 1 container_of宏 1.1 简介 已知某结构体成员的地址,根据成员的地址去找出结构体的地址 1.2 API #include <linux/kernel.h> /** * container_of - cast a member of a structure out to the con
阅读全文
posted @ 2021-08-06 00:01 MHDSG
阅读(127)
评论(0)
推荐(0)
T14 用户空间与内核空间数据交互
摘要: 1 copy_to_user与copy_from_user 详见1.4 2 netlink 2.1 netlink简介 netlink socket是一种linux特有的socket,用与实现用户进程与内核进程之间通信的一种特殊的进程之间通信方式(IPC),也是网络应用程序与内核通信的最常用的接口
阅读全文
posted @ 2021-08-06 00:00 MHDSG
阅读(260)
评论(0)
推荐(0)
2021年8月5日
T13 中断与时钟
摘要: 1 中断概念 参考T6 一句话,中断上半部要求快进快出,耗时操作则可放在中断下半部执行 下半部实现方式: 软中断 tasklet 工作队列 内核定时器,也可以将工作退后一段时间(精准的)执行 2 tasklet tasklet是中断处理下半部最常见的一种方式,驱动程序一般先申请中断,在中断处理函数内
阅读全文
posted @ 2021-08-05 23:59 MHDSG
阅读(101)
评论(0)
推荐(0)
T11 驱动并发
摘要: 1 为什么需要并发控制 以T10案例代码为例,我们在内核中申请了一片缓冲区,假设此刻有2个及以上进程同时来访问这个内核驱动,而且二者同时执行到了下述代码区,那么此刻内核将会拷贝2个用户空间的数据到一个缓冲区,假设进程A刚好拷贝了一半数据到内核buffer后进程B也拷贝部分数据给内核buffer,
阅读全文
posted @ 2021-08-05 23:58 MHDSG
阅读(76)
评论(0)
推荐(0)
T12 阻塞与非阻塞IO
摘要: 1 阻塞与非阻塞 阻塞I/O与非阻塞I/O是设备访问的两种不同模式,驱动程序可以灵活的支持用户空间对设备的这两种访问方式。 阻塞操作:指的是执行设备操作的时候如果不能获得资源,那么就挂起进程直到满足操作条件之后再进行操作。被挂起的进程进而进入休眠状态,被调度器移走,直到能够获取资源后才继续执行 非阻
阅读全文
posted @ 2021-08-05 23:58 MHDSG
阅读(75)
评论(0)
推荐(0)
T10 字符设备驱动补充
摘要: 1 linux字符驱动设备开发流程 1.1 流程 封装自己的字符设备结构体类 实现struct file_operations结构体 模块的入口函数 实例化自己的字符设备结构体类(实例化对象),使用kmalloc 初始化通用字符设备(cdev_init) /* 功能:初始化字符设备 参数: @cde
阅读全文
posted @ 2021-08-05 23:57 MHDSG
阅读(103)
评论(0)
推荐(0)
T9 输入子系统
摘要: 1.输入子系统概念 1.1输入设备 输入设备如按键,鼠标,触摸屏,游戏遥感等均是输入设备 如果没有输入子系统的话,那么针对不同的屏幕将会写不同的代码,但其操作模式是一样的,那么将会写很多重复代码.明显比较麻烦 输入子系统的出现就是实现操作与硬件分离,针对不同型号的屏幕采用同一套通用方法 总之一句话,
阅读全文
posted @ 2021-08-05 23:55 MHDSG
阅读(203)
评论(0)
推荐(0)
T8 高级驱动学习方法
摘要: 1.回顾 1.1字符设备驱动开发步骤 首先要实现模块加载(xxx_init())与卸载函数(xx_exit())函数 之后申请设备号(register_chrdev_region()) 注册字符设备驱动,cdev_alloc(),cdev_init(),cdev_add() 使用udev/mdev机
阅读全文
posted @ 2021-08-05 23:54 MHDSG
阅读(65)
评论(0)
推荐(0)
下一页
公告