posts - 56,  comments - 20,  views - 17万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
08 2018 档案
Linux驱动之LCD驱动编写
摘要:在Linux驱动之内核自带的S3C2440的LCD驱动分析这篇博客中已经分析了编写LCD驱动的步骤,接下来就按照这个步骤来字尝试字节编写LCD驱动。用的LCD屏幕为tft屏,每个像素点为16bit。对应与红绿蓝分别为565。 1、分配一个fb_info结构 2、设置fb_info结构 3、硬件相关的 阅读全文
posted @ 2018-08-28 16:02 andy_fly 阅读(4484) 评论(0) 推荐(0) 编辑
Linux驱动之内核自带的S3C2440的LCD驱动分析
摘要:先来看一下应用程序是怎么操作屏幕的:Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。FrameBuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Fram 阅读全文
posted @ 2018-08-27 21:38 andy_fly 阅读(1123) 评论(0) 推荐(0) 编辑
Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)
摘要:Linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接口,这使得驱动程序的开发变得更简单了,而程序员只需要去学习接口就行 阅读全文
posted @ 2018-08-23 19:53 andy_fly 阅读(3876) 评论(0) 推荐(0) 编辑
Linux驱动之一个简单的输入子系统程序编写
摘要:的在Linux驱动之输入子系统简析已经分析过了输入子系统的构成,它是由设备层、核心层、事件层共同组成的。其中核心层提供一些设备层与事件层公用的函数,比如说注册函数、反注册函数、事件到来的处理函数等等;事件层其实在Linux内核里面已经帮我们写好了很多有关的事件;而设备层就跟我们新添加到输入系统的具体 阅读全文
posted @ 2018-08-21 19:22 andy_fly 阅读(932) 评论(0) 推荐(0) 编辑
Linux驱动之输入子系统简析
摘要:输入子系统由驱动层、输入子系统核心、事件处理层三部分组成。一个输入事件,如鼠标移动、键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序。 系统框图 假设打开一个字符设备驱动程序/dev/event0,event代表的是输入 阅读全文
posted @ 2018-08-20 20:45 andy_fly 阅读(1912) 评论(0) 推荐(0) 编辑
Linux驱动之定时器在按键去抖中的应用
摘要:机械按键在按下的过程中会出现抖动的情况,如下图,这样就会导致本来按下一次按键的过程会出现多次中断,导致判断出错。在按键驱动程序中我们可以这么做: 在按键驱动程序中我们可以这么做来取消按键抖动的影响:当出现一个按键中断后不会马上去处理它,而是延时一个抖动时间(一般10ms),如果在这个时间内再次出现中 阅读全文
posted @ 2018-08-16 11:31 andy_fly 阅读(1018) 评论(1) 推荐(0) 编辑
Linux驱动之同步、互斥、阻塞的应用
摘要:同步、互斥、阻塞的概念: 同步:在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。 互斥机制:访问共享资源的代码区叫做临界区,这里的共享资源可能被多个线程需要,但这些共享资源又不能被同时访问,因此临界区需要以某种互斥机制加以保护,以确保共享资源被互斥访问。 阻塞与非阻塞:阻塞调 阅读全文
posted @ 2018-08-15 16:11 andy_fly 阅读(1058) 评论(0) 推荐(0) 编辑
Linux驱动之异步OR同步,阻塞OR非阻塞概念介绍
摘要:链接:https://www.zhihu.com/question/19732473/answer/20851256 1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个* 阅读全文
posted @ 2018-08-15 15:37 andy_fly 阅读(378) 评论(0) 推荐(0) 编辑
Linux驱动之异步通知的应用
摘要:前面的按键驱动方式都是应用程序通过主动查询的方式获得按键值的: 1、查询方式 2、中断方式 3、poll机制 下面介绍第四种按键驱动的方式 4、异步通知:它可以做到应用程序不用随时去查询按键的状态,而等待有按键被按下后,驱动程序主动发消息给应用程序,应用程序再去处理。 比如说:kill -9 pid 阅读全文
posted @ 2018-08-15 14:33 andy_fly 阅读(3074) 评论(0) 推荐(0) 编辑
Linux驱动之poll机制的理解与简单使用
摘要:之前在Linux驱动之按键驱动编写(中断方式)中编写的驱动程序,如果没有按键按下。read函数是永远没有返回值的,现在想要做到即使没有按键按下,在一定时间之后也会有返回值。要做到这种功能,可以使用poll机制。分以下几部来介绍poll机制 1、poll机制的使用,编写测试程序 2、poll机制的调用 阅读全文
posted @ 2018-08-15 13:10 andy_fly 阅读(16803) 评论(2) 推荐(0) 编辑
Linux驱动之按键驱动编写(中断方式)
摘要:在Linux驱动之按键驱动编写(查询方式)已经写了一个查询方式的按键驱动,但是查询方式太占用CPU,接下来利用中断方式编写一个驱动程序,使得CPU占有率降低,在按键空闲时调用read系统调用的进程可以休眠,还是以以下步骤编写: 1、查看原理图,确定需要控制的IO端口 2、查看芯片手册,确定IO端口的 阅读全文
posted @ 2018-08-15 10:02 andy_fly 阅读(9044) 评论(0) 推荐(0) 编辑
Linux驱动之中断处理体系结构简析
摘要:S3C2440中的中断处理最终是通过IRQ实现的,在Linux驱动之异常处理体系结构简析已经介绍了IRQ异常的处理过程,最终分析到了一个C函数asm_do_IRQ,接下来继续分析asm_do_IRQ,目标是推导出中断的处理过程。 看到asm_do_irq函数,它位于arch\arm\kernel\I 阅读全文
posted @ 2018-08-14 22:48 andy_fly 阅读(471) 评论(0) 推荐(0) 编辑
Linux驱动之异常处理体系结构简析
摘要:异常的概念在单片机中也接触过,它的意思是让CPU可以暂停当前的事情,跳到异常处理程序去执行。以前写单片机裸机程序属于前后台程序,前台指的就是mian函数里的while(1)大循环,后台指的就是产生异常后的处理程序。ARM9有以下几种异常模式: ARM架构的异常向量的地址可以是0x00000000,也 阅读全文
posted @ 2018-08-14 15:21 andy_fly 阅读(839) 评论(0) 推荐(0) 编辑
Linux驱动之按键驱动编写(查询方式)
摘要:在Linux驱动之LED驱动编写已经详细介绍了一个驱动的编写过程,接着来写一个按键驱动程序,主要是在file_operations结构中添加了一个read函数。还是分以下几步说明 1、查看原理图,确定需要控制的IO端口 2、查看芯片手册,确定IO端口的寄存器地址 3、编写驱动代码 4、确定应用程序功 阅读全文
posted @ 2018-08-13 20:58 andy_fly 阅读(3897) 评论(0) 推荐(0) 编辑
Linux驱动之LED驱动编写
摘要:从上到下,一个软件系统可以分为:应用程序、操作系统(内核)、驱动程序。结构图如下:我们需要做的就是写出open、read、write等驱动层的函数。一个LED驱动的步骤如下: 1、查看原理图,确定需要控制的IO端口 2、查看芯片手册,确定IO端口的寄存器地址 3、编写驱动代码 4、确定应用程序功能, 阅读全文
posted @ 2018-08-13 20:47 andy_fly 阅读(10724) 评论(0) 推荐(1) 编辑
Linux驱动之建立一个hello模块
摘要:目标:在开发板上执行insmod hello.ko能在控制台打印出hello init;接着执行rmmod会在控制台打印出hello exit 建立一个hello模块的步骤如下: 1、建立一个hello.c文件,敲入一下代码 2、建立一个Makefile,填入如下代码,其中KERN_DIR为需要装载 阅读全文
posted @ 2018-08-13 11:30 andy_fly 阅读(545) 评论(0) 推荐(0) 编辑
Linux驱动之内核加载模块过程分析
摘要:Linux内核支持动态的加载模块运行:比如insmod first_drv.ko,这样就可以将模块加载到内核所在空间供应用程序调用。现在简单描述下insmod first_drv.ko的过程 1、insmod也是一个用户进程 2、insmod进程从命令行中读取要链接的模块名字:first_drv.k 阅读全文
posted @ 2018-08-13 10:55 andy_fly 阅读(2280) 评论(0) 推荐(0) 编辑
制作根文件系统之制作根文件系统步骤详解
摘要:在制作根文件系统之Busybox init进程的启动过程分析中我们知道了制作嵌入的根文件系统需要: 1、Busybox这个UNIX程序集合 2、/ect/inittab这个配置文件 3、/ect/inittab指定的命令或者脚本 4、/dev/console、/dev/null设备节点 5、C库 下 阅读全文
posted @ 2018-08-04 20:36 andy_fly 阅读(1160) 评论(0) 推荐(0) 编辑
制作根文件系统之Busybox init进程的启动过程分析
摘要:先来介绍一下什么是Busybox:它是将众多的UNIX命令集合进一个很小的可执行程序中。 在制作根文件系统之内核如何启动init进程中遗留了一个问题是/linuxrc是内核启动的第一个应用程序,那么它是什么?我们看到移植好的根文件系统环境,输入ls -al /linuxrc。可以看到: /linux 阅读全文
posted @ 2018-08-04 19:57 andy_fly 阅读(1642) 评论(0) 推荐(0) 编辑
制作根文件系统之内核如何启动init进程
摘要:start_kernel其实也是内核的一个进程,它占用了进程号0,start_kernel的内容简写如下: 它的主要意思就是打开控制台设备,然后找到init进程,然后执行。其中execute_command的值在Linux移植之tag参数列表解析过程分析已经分析过,它的值就是Uboot传入的init 阅读全文
posted @ 2018-08-04 15:41 andy_fly 阅读(583) 评论(0) 推荐(0) 编辑
制作根文件系统之内核挂接文件系统步骤分析
摘要:在Linux移植之tag参数列表解析过程分析中已经将内核传入的各个参数的处理过程大概的讲述了。root=/dev/mtdblock3参数的解析分析到最后发现它被存储在了saved_root_name中,最后发现是prepare_namespace函数调用了它。调用它的作用是为了挂接根文件系统,什么是 阅读全文
posted @ 2018-08-04 14:10 andy_fly 阅读(813) 评论(0) 推荐(0) 编辑
Linux移植之tag参数列表解析过程分析
摘要:在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析。 1、内存参数ATAG_MEM参数解析 2、命令行参数ATAG_CMDLINE解析,以传入的命令参数bootargs=noinitrd root 阅读全文
posted @ 2018-08-03 21:36 andy_fly 阅读(2145) 评论(0) 推荐(0) 编辑
Linux移植之内核启动过程start_kernel函数简析
摘要:在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容较多,这里只是简单介绍下内核启动流程。先看一下内核启动的流程框图,截图来自《嵌入式Linux应用开发 阅读全文
posted @ 2018-08-03 13:49 andy_fly 阅读(2548) 评论(0) 推荐(1) 编辑
Linux移植之内核启动过程引导阶段分析
摘要:在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压。自解压完成之后内核代码从物理地址为0x30008000处开始运行。下面分析在进入C之前内核做的一些工作,以下是内核启动过程中打印出来的信息,其中Uncompressing Li 阅读全文
posted @ 2018-08-02 14:03 andy_fly 阅读(1062) 评论(0) 推荐(0) 编辑
Linux移植之子目录下的built-in.o生成过程分析
摘要:在Linux移植之make uImage编译过程分析中罗列出了最后链接生成vmlinux的过程。可以看到在每个子目录下都有一个built-in.o文件。对于此产生了疑问built-in.o文件是根据什么产生的。 1、测试,在linux目录下添加一个test文件夹,在文件夹里面添加了test.c 和  阅读全文
posted @ 2018-08-01 15:46 andy_fly 阅读(7627) 评论(0) 推荐(0) 编辑
Linux移植之auto.conf、autoconf.h、Mach-types.h的生成过程简析
摘要:在Linux移植之make uImage编译过程分析中分析了uImage文件产生的过程,在uImage产生的过程中,顺带还产生了其它的一些中间文件。这里主要介绍几个比较关键的文件 1、linux-2.6.22.6\include\config\auto.conf、inux-2.6.22.6\incl 阅读全文
posted @ 2018-08-01 10:45 andy_fly 阅读(2615) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示