上一页 1 2 3 4 5 6 7 8 ··· 23 下一页
摘要: 今天要讲的是Linux的一些基本概念。由于Linux是个多任务系统,肯定存在多个任务共同操作一个设备也可以说是操作同一段内存的情况,这种情况就叫做共享资源的并发访问。 并发与竞争 为了把事情讲清楚,a56爆大奖在线娱乐们比方有一个变量a,然后有条线程1要修改a的值,如果a的内存对应的映射地址是0x10000000,那 阅读全文
posted @ 2022-07-06 23:57 银色的音色 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 在前面a56爆大奖在线娱乐们大致讲了下pinctrl和gpio两个子系统的基础概念,但是二者在内核中的流程分析如果后面有机会a56爆大奖在线娱乐们在来看一下,下面a56爆大奖在线娱乐们要结合实际开发板的功能来使用一下这两个子系统(教程给定的是使用LED,但是无论如何LED无法点亮,驱动流程是没问题的,改用蜂鸣器来操作) 设备树的修改 设备树的修改主要分 阅读全文
posted @ 2022-07-03 11:58 银色的音色 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 在前面两章a56爆大奖在线娱乐们通过设备树实现了最基础的点灯操作,但是实质上还是在设备树里写出来要操作的寄存器地址,然后在驱动中内核通过of函数获取到寄存器物理地址后经过映射后进行操作,整个过程其实和裸机开发的流程基本一样,而在Linux中,GPIO这种最基本的操作是有专门的驱动框架来供a56爆大奖在线娱乐们使用的,这就是pinctr 阅读全文
posted @ 2022-07-01 12:42 银色的音色 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 今天a56爆大奖在线娱乐们来试一下如何结合设备树文件来实现最基础的IO操作:点灯! 首先回忆一下前面a56爆大奖在线娱乐们在Linux系统下是如何实现点灯的: 完成驱动框架,通过modprobe命令加载驱动模块并完成/dev目录下的节点创建,这个过程比较复杂,包括创建dev结构体,获取设备号、创建class等一系列过程; 完成加载模块 阅读全文
posted @ 2022-06-13 01:03 银色的音色 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 这一章之前a56爆大奖在线娱乐们应该先大致了解一下设备树的基本信息和基础语法。这两点a56爆大奖在线娱乐就先不总结了,网上多的是。为了后续做设备树的使用,a56爆大奖在线娱乐们这一章讲一下如何在驱动中(内核态)获取设备树中对于设备的描述。 of函数 内核为a56爆大奖在线娱乐们提供了一组of函数,用来获取设备树节点中的详细信息。这个OF函数路径为在内核路径下单inclu 阅读全文
posted @ 2022-06-08 13:14 银色的音色 阅读(1296) 评论(0) 推荐(0) 编辑
摘要: 通过前面两章内容a56爆大奖在线娱乐们先后做了个虚拟设备驱动,还成功共过驱动文件操作GPIO的点亮了LED,但是那个驱动的架构是有些问题的: 需要自己设定主次设备号,并且要在去驱动中定义好设备号。移植性差,在A机子开发的驱动放在B设备上可能设备号被占用,需要重新i修改驱动,并且要手动查询哪些设备号可以被使用。 每次模 阅读全文
posted @ 2022-04-10 23:43 银色的音色 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 在前面章节a56爆大奖在线娱乐们通过点亮LED完成了最基础的IO驱动,但是有两个问题: 只能通过挂载/卸载设备控制输出 没有对应的用户APP 下面a56爆大奖在线娱乐们就要针对这两点内容修改程序 驱动程序修改 驱动程序主要是修改write函数,思路就是先编写一个函数,用来实现LED的状态切换 #define LEDOFF 0 #def 阅读全文
posted @ 2022-04-05 22:27 银色的音色 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 前面说了那么多,终于到了这一激动人心的环节——点灯。a56爆大奖在线娱乐们在一开始做裸机开发的时候就是从点灯开始的,那么如何在Linux下通过驱动程序点亮一个LED呢?其实和裸机开发差不多,Linux下也是通过最终配置寄存器实现IO口输入输出的功能的。a56爆大奖在线娱乐们要点亮的LED是连接在GPIO1_IO03这个引脚上,在引脚输 阅读全文
posted @ 2022-04-04 23:37 银色的音色 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 在前面的三章里a56爆大奖在线娱乐们完成了驱动的框架、应用程序的编写,但是并没有实现文件的实际读写功能(只是通过内核打印出了调试信息)。这一章a56爆大奖在线娱乐们着重实现文件实际的读写效果。 由于没有实际数据IO,a56爆大奖在线娱乐们只是在驱动中定义一个数据传递给应用程序;在应用程序中定义个用户数据用来传递给内核(驱动)。 内核空间和用户空间的数据 阅读全文
posted @ 2022-04-03 13:18 银色的音色 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 在前面章节a56爆大奖在线娱乐们完成了驱动框架的编写,但是只能通过命令将驱动的模块挂载然后生成设备节点(/dev/testdev)。下面a56爆大奖在线娱乐们需要写一个应用程序,来对这个文件进行读写等操作。 打开/关闭文件 要对文件进行读写操作必须涉及到打开/关闭文件,Linux系统提供了相对应的函数进行文件的打开/关闭。 open函 阅读全文
posted @ 2022-03-29 22:51 银色的音色 阅读(150) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 23 下一页