会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
fuzidage
专注嵌入式、linux驱动 、arm裸机研究
导航
博客园
首页
新随笔
联系
订阅
管理
公告
上一页
1
2
3
4
5
6
7
8
9
···
14
下一页
2023年9月16日
arm汇编和cpu运行模式
摘要: 1 GNU 汇编格式 label:instruction @ comment label 即标号,表示地址位置,有些指令前面可能会有标号,这样就可以通过这个标号得到指令的地址,标号也可以用来表示数据地址。注意 label 后面的“:”,任何以“:”结尾的标识符都会被识别为一个标号。 instruct
阅读全文
posted @ 2023-09-16 14:20 fuzidage
阅读(261)
评论(0)
推荐(0)
编辑
2023年8月27日
设备驱动-14.userspace进行IP的寄存器读写
摘要: #1 定义寄存器 以键盘keyscan为例,定义一个IP寄存器描述头文件,IOCRREG, IOCWREG定义了两个ioctl命令,用来读写寄存器。struct msg用来存放寄存器地址和值。 ![image](https://img2023.cnblogs.com/blog/1876680/202
阅读全文
posted @ 2023-08-27 16:42 fuzidage
阅读(42)
评论(0)
推荐(0)
编辑
2023年8月21日
字符设备驱动-13.ioctl命令详解
摘要: #1 引入ioctl 一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能增添命令,通常以增设 ioctl() 命令的方式实现。 对于ioctl这个系统调用接口,Linux的创始人在2.0版本之前并没有进行添加,仅有write和read两个接口,但是后
阅读全文
posted @ 2023-08-21 21:57 fuzidage
阅读(459)
评论(0)
推荐(0)
编辑
2023年8月18日
字符设备驱动-12.misc杂项字符设备驱动
摘要: #1 引入misc device ## 1.1传统cdev方式 char_drv.c ``` #include #include #include #include #include #include #include #include #include #include #include stat
阅读全文
posted @ 2023-08-18 17:02 fuzidage
阅读(113)
评论(0)
推荐(0)
编辑
2023年8月10日
字符设备驱动-11.mmap机制-实例分析
摘要: #1 mmap驱动要做的事情 确定物理地址 确定属性:是否使用 cache、 buffer 建立映射关系 参考 Linux 驱动源文件代码: ![image](https://img2023.cnblogs.com/blog/1876680/202308/1876680-20230810110006
阅读全文
posted @ 2023-08-10 16:16 fuzidage
阅读(265)
评论(0)
推荐(0)
编辑
2023年8月9日
字符设备驱动-11.mmap机制
摘要: 1 引入mmap 应用程序和驱动程序之间传递数据时,可以通过 read、write 函数进行, 用户态和内核态的数据交互一般用copy_from_user,copy_to_user。这种方式在数据量比较小时没什么问题;但是数据量比较大时效率就太低了。比如更新 LCD 显示时,如果每次都让 APP 传
阅读全文
posted @ 2023-08-09 17:22 fuzidage
阅读(234)
评论(0)
推荐(0)
编辑
2023年7月29日
设备驱动-10.中断子系统-4.3中断线程化处理-threaded_irq
摘要: 1. threaded_irq引入 工作队列用起来挺简单,但是它有一个缺点:工作队列中有多个 work,前一个 work 没处理完会影响后面的 work执行,导致后面的work没法快速响应。那么可以再内核自己创建一个线程来单独处理,不跟别的 work 凑在一块了。比如在 Linux 系统中,对于存储
阅读全文
posted @ 2023-07-29 18:34 fuzidage
阅读(263)
评论(0)
推荐(0)
编辑
2023年7月22日
设备驱动-10.中断子系统-4.2中断线程化处理-workqueue
摘要: 1工作队列workqueue引入 定时器、 tasklet,它们都是在中断上下文中执行,它们无法休眠。那么如果一旦中断要处理耗时复杂的操作,就会显得很卡。那么使用内核线程来处理这些耗时的工作,那就可以解决系统卡顿的问题。 Linux内核中工作队列workqueue就是线程化处理的一种方式,“工作队列
阅读全文
posted @ 2023-07-22 20:10 fuzidage
阅读(88)
评论(0)
推荐(0)
编辑
2023年7月16日
设备驱动-10.中断子系统-4.1中断下半部使用-tasklet
摘要: 1 中断下半部分引入 引入中断下半部介绍了硬件中断和软件中断,硬件中断有gpio中断,网卡,外部电路IP引起的中断,而软件中断则有定时器,tasklet这些为软件中断。cpu会先处理硬件中断,然后处理软件中断。 简单说可以认为内核中有一个数组softirq[], 里面有很多项,某一项都应timer,
阅读全文
posted @ 2023-07-16 21:14 fuzidage
阅读(44)
评论(0)
推荐(0)
编辑
2023年7月15日
设备驱动-10.中断子系统-3.中断设备树表述与解析
摘要: 1. 中断在设备树中的表述 1 中断控制器 如图:GPIO1 连接到 GIC,GPIO2 连接到 GIC,所以 GPIO1 的父亲是 GIC,GPIO2的父亲是 GIC。假设 GPIO1 有 32 个中断源,但是它把其中的 16 个汇聚起来向 GIC 发出一个中断,把另外 16 个汇聚起来向 GIC
阅读全文
posted @ 2023-07-15 15:26 fuzidage
阅读(266)
评论(0)
推荐(0)
编辑
上一页
1
2
3
4
5
6
7
8
9
···
14
下一页