12 2018 档案

摘要:由上一节 得出写个LCD驱动入口函数,需要以下4步: 1) 分配一个fb_info结构体: framebuffer_alloc(); 2) 设置fb_info 3) 设置硬件相关的操作 4) 使能LCD,并注册fb_info: register_framebuffer() 本节需要用到的函数: 分配 阅读全文
posted @ 2018-12-22 10:17 朱果果 阅读(592) 评论(1) 推荐(0)
摘要:引言: 由LCD的硬件原理及操作(可参看韦哥博客:第017课 LCD原理详解及裸机程序分析) 我们知道只要LCD控制器的相关寄存器正确配置好,就可以在LCD面板上显示framebuffer中的内容。 若应用程序需要在LCD屏幕上显示文字或图像时,只需要把相应的显示内容以正确的格式写到Framebuf 阅读全文
posted @ 2018-12-22 09:33 朱果果 阅读(1019) 评论(0) 推荐(0)
摘要:参考:linux-platform机制实现驱动层分离(详解) platform驱动分离 本节目标: 学习platform机制,如何实现驱动层分离 1、回顾一下上一节的输入子系统 如上图,在输入子系统中,我们通过分层及通过核心层向设备驱动层,事件处理层提供各种接口,使各层都能专注于自己的事情。 对于设 阅读全文
posted @ 2018-12-19 10:32 朱果果 阅读(1009) 评论(0) 推荐(0)
摘要:由上一节的输入子系统的框架分析可知,其分三层:设备驱动层,核心层,事件驱动层 我们在为某种设备的编写驱动层,只需要关心设备驱动层,即如何驱动设备并获得硬件数据(如按下的按键数据),然后调用核心层提供的接口,核心层就会自动把数据提交给事件处理层。在输入子系统中,事件驱动是标准的,适用于所有输入类的。我 阅读全文
posted @ 2018-12-16 22:37 朱果果 阅读(645) 评论(0) 推荐(0)
摘要:ssize_t second_drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) { } 这是一个文件读函数 ssize_t是signed size_t,size_t是标准C库中定义的,应为unsigned 阅读全文
posted @ 2018-12-16 17:14 朱果果 阅读(365) 评论(0) 推荐(0)
摘要:为什么要引入输入子系统? 在前面我们写了一些简单的字符设备的驱动程序,我们是怎么样打开一个设备并操作的呢? 一般都是在执行应用程序时,open一个特定的设备文件,如:/dev/buttons 但是实际上,一般的应用程序不会去打开这样设备文件“/dev/buttons”。一般打开的都是系统原有的文件, 阅读全文
posted @ 2018-12-16 14:27 朱果果 阅读(496) 评论(0) 推荐(0)
摘要:目的: 通过定时器防按键抖动,测试程序是使用上节的:阻塞操作的测试程序 http://www.cnblogs.com/lifexy/p/7522122.html 使用定时器的一般流程为: (1)timer、编写function; (2)为timer的expires、data、function赋值; 阅读全文
posted @ 2018-12-15 10:34 朱果果 阅读(162) 评论(0) 推荐(0)
摘要:引入 当设备被一个程序打开时,存在被另一个程序打开的可能,如果两个或多个程序同时对设备文件进行写操作,这就是说我们的设备资源同时被多个进程使用,对共享资源(硬件资源、和软件上的全局变量、静态变量等)的访问则很容易导致竞态。 显然这不是我们想要的,所以本节引入互斥的概念:实现同一时刻,只能一个应用程序 阅读全文
posted @ 2018-12-13 14:33 朱果果 阅读(361) 评论(0) 推荐(0)
摘要:引入: 按键驱动方式对比 以上3种,都是让应用程序主动去读,本节我们学习异步通知,它的作用就是当驱动层有数据时,主动告诉应用程序,然后应用程序再来读, 这样,应用程序就可以干其它的事情,不必一直读 比如:kill -9 pid ,其实就是通过发信号杀死进程,kill发数据9给指定id号进程 进程间发 阅读全文
posted @ 2018-12-12 18:37 朱果果 阅读(291) 评论(0) 推荐(0)
摘要:1.poll情景描述 以之前的按键驱动为例进行说明,用阻塞的方式打开按键驱动文件/dev/buttons,应用程序使用read()函数来读取按键的键值。 这样做的效果是:如果有按键按下了,调用该read()函数的进程,就成功读取到数据,应用程序得到继续执行;倘若没有按键按下,则要一直处于休眠状态,等 阅读全文
posted @ 2018-12-12 14:56 朱果果 阅读(726) 评论(0) 推荐(0)
摘要:阻塞和非阻塞,同步和异步 例子 故事:老王烧开水。 出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。 老王想了想,有好几种等待方式 1.老王用水壶煮水,并且站在那里,不管水开没开,每隔一定时间看看水开了没。-同步阻塞 老王想了想,这种方法不够聪明。 2.老王还是用水壶煮水,不 阅读全文
posted @ 2018-12-12 08:29 朱果果 阅读(410) 评论(0) 推荐(0)
摘要:硬件相关配置: 先看测试程序中的main函数(thirdtest.c) (所有的操作都是以open函数来开始,它用来获取fd,然后后期的其他操作全部控制fd来完成对硬件设备的实际操作) 应用程序打开设备,调用系统调用open时,操作系统会将文件系统对应设备文件的inode中的file_operati 阅读全文
posted @ 2018-12-11 20:50 朱果果 阅读(612) 评论(0) 推荐(0)
摘要:一、中断处理体系结构的初始化 Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断;每个数组项对应一个中断,也可能是一组中断,它们共用相同的中断号,里面记录了中断的名称、中断状态、中断标记(比如中断类型、是否共享中断等),并提供了中断的低层硬件访问函数(清除、屏蔽、使能 阅读全文
posted @ 2018-12-10 16:18 朱果果 阅读(419) 评论(0) 推荐(0)
摘要:一、中断处理体系结构的初始化 Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断;每个数组项对应一个中断,也可能是一组中断,它们共用相同的中断号,里面记录了中断的名称、中断状态、中断标记(比如中断类型、是否共享中断等),并提供了中断的低层硬件访问函数(清除、屏蔽、使能 阅读全文
posted @ 2018-12-10 16:15 朱果果 阅读(349) 评论(0) 推荐(0)
摘要:裸机中断流程 Linux处理异常流程 异常发生时,会去异常向量表找到入口地址,(这算异常发生之后跳转到第一个处理分支),进入异常模式,保护部分现场,强制进入SVC管理模式,根据异常发生前的工作模式,找到异常处理的第二级分支,在该模式下面接过异常模式堆栈中的信息,接着保存异常发生时异常模式还未保存的信 阅读全文
posted @ 2018-12-10 14:09 朱果果 阅读(464) 评论(0) 推荐(0)
摘要:__init、__initdata和__exit、__exitdata的定义位于<kernel/include/linux/init.h> 这些宏大多跟和section相关的定义 这些宏定义的作用是告诉编译器将这些函数或者数据放入相应的section中,一般是指放置到内核镜像的哪个位置上。内核中的内 阅读全文
posted @ 2018-12-09 09:58 朱果果 阅读(2394) 评论(0) 推荐(0)
摘要:环境: 单板:s3c2440 内核:Linux-2.6.22.6 U-boot1.16 初始根文件系统Yaffs2 前提条件 1. 开发板上要烧写好文件系统 2. 能正常开机进入Linux系统 3.uboot中启动参数类似于 bootargs=noinitrd root=/dev/mtdblock3 阅读全文
posted @ 2018-12-07 22:43 朱果果 阅读(815) 评论(0) 推荐(0)
摘要:PC机使用网卡A连接开发板,VMWare就要使用同一个网卡A作为桥接网卡 步骤: 1.确定网卡A 2.VMWare选择网卡A作为桥接网卡 3.设置三者IP在同一网段 a.Windows网卡A的IP b.VMWare里面Ubuntu的IP c.开发板的IP(U-Boot / Linux) 注意事项: 阅读全文
posted @ 2018-12-07 18:47 朱果果 阅读(3945) 评论(0) 推荐(0)
摘要:Ubuntu 16.04 win7 笔记本连接学校的无线网 开发板S3c2440与笔记本仅通过COM连接 问题描述: 设置了桥接,主机与虚拟机IP在同一网段后,主机与虚拟机可以Ping,但是开发板无法Ping主机与虚拟机 设置如下 步骤: 1.确定网卡A 2.VMWare选择网卡A作为桥接网卡 3. 阅读全文
posted @ 2018-12-07 15:08 朱果果 阅读(2321) 评论(1) 推荐(0)
摘要:开发板 : JZ2440 Linux内核 : Linux-2.6.22.6 Busybox1.29.3 最小根文件系统所需的部分: 1./dev/console /dev/null :创建根文件系统所必备的,指出了所需要的标准输入,标准输出,标准错误设备终端。 2.init 程序: 当busybox 阅读全文
posted @ 2018-12-02 12:11 朱果果 阅读(611) 评论(0) 推荐(0)