① 编译器很聪明,会帮我们做些优化,比如: int a; a = 0; // 这句话可以优化掉,不影响 a 的结果 a = 1; ② 有时候编译器会自作聪明,比如: int *p = ioremap(xxxx, 4); // GPIO 寄存器的地址 *p = 0; // 点灯,但是这句话被优化掉了 ...
分类:
其他好文 时间:
2021-04-23 11:48:41
阅读次数:
0
我们在编写或修改驱动时,经常会遇到时钟相关的问题,不知道从什么地方下手。在本文中,以i.MX6的3.0.35版本的内核举例时钟如何获取和使用。
分类:
其他好文 时间:
2020-04-09 15:28:50
阅读次数:
88
实现 ①编写驱动框架 ②编写硬件实现代码 (在Linux系统下操作硬件,需要操作虚拟地址,因此需要先把物理地址转换为虚拟地址 ioremap()) 如何实现单个灯的操作: 实现方法之一——操作次设备号 主设备号:用于查找对应的文件操作结构体; 次设备号:用于区分同类型设备下的不同设备; 实例 dri... ...
分类:
其他好文 时间:
2019-11-17 21:10:54
阅读次数:
126
驱动程序 1 /* 2 * 参考: 3 * .\linux-2.6.22.6\drivers\mtd\devices\mtdram.c 4 * .\linux-2.6.22.6\drivers\mtd\maps\physmap.c 5 */ 6 #include 7 #include 8 #incl... ...
分类:
其他好文 时间:
2019-11-17 20:51:18
阅读次数:
84
1.编写LED驱动程序步骤 1.1 框架 1.2 完善硬件操作 1.2.1 查看原理图 1.2.2 看2440手册 1.2.3 写代码 其中需要注意的是:单片机通常直接用物理地址去操作寄存器。而这里要将物理地址映射为虚拟地址,用ioremap函数。 2.查看原理图 从mini2440的原理图可以看到 ...
分类:
其他好文 时间:
2019-10-01 14:32:33
阅读次数:
128
字符设备驱动程序分析 下面是针对jz2440开发板写的一个led驱动程序,重点不在于该程序,而是以此为例,对字符设备驱动程序框架的分析总结; C / jz2440 leds driver / include include include include include include includ ...
分类:
其他好文 时间:
2019-08-27 17:09:43
阅读次数:
84
1,内核以实现总线,只需写驱动和设备的信息; 2,设备链表、驱动链表;总线完成链表匹配(name);驱动执行probe函数,向上层提供open、read、write接口需要在probe函数中注册字符设备驱动;在probe函数中根据设备信息操作硬件;ioremap物理地址映射成虚拟地址操作硬件;总线编 ...
分类:
其他好文 时间:
2019-08-24 19:10:20
阅读次数:
211
(一)学习linux驱动之初,对ioremap函数的个人理解 (二)博客:实验探究 ioremap 这篇文章作者通过验证来阐述自己的观点,个人觉得挺好的 (三)函数原型 基本简介 void * __ioremap(unsigned long phys_addr, unsigned long size ...
分类:
系统相关 时间:
2018-09-22 16:54:54
阅读次数:
298
一、 ioremap() 函数基础概念 几乎每一种外设都是通过读写设备上的相关寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: a -- I/O 映射方式(I/O-mapped) 典型地,如X ...
分类:
系统相关 时间:
2018-07-20 15:19:36
阅读次数:
299
1、基础概念 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器,状态寄存器和数据寄存器三大类。外设的寄存器通常被连续的编址。根据CPU体系结构的不同,CPU对IO端口的编制方式有两种。 I/O映射方式(I/O mapped) 典型的,如x86处理器为外设专门实现了一个单独的地址空 ...
分类:
其他好文 时间:
2018-07-01 14:14:55
阅读次数:
206