
S3C2400 Linux驱动
文章平均质量分 92
mainn
本人是移动互联应用技术专业,选择嵌入式开发方向。声明:博文的编写,主要参考网上资料,并结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。...
展开
-
S3C2440 字符设备驱动程序之同步互斥阻塞(十)
字符设备驱动程序之同步互斥阻塞 原子操作目的:同一时刻只能有一个应用程序app打开/dev/buttons。 读出、修改、写回 并不是很快就结束的,有可能被打断。因为linux是多任务,在A执行过程中,有可能换成B程序来执行。 原子操作函数:(原子:不可再分)原子变量操作是Linux的一种简单的同步机制,在操作过程中不会被打断的操作。原子变量...原创 2018-05-17 20:58:53 · 441 阅读 · 0 评论 -
S3C2440 USB鼠标驱动(十九)
http://www.cnblogs.com/lifexy/p/7641602.html在上一章分析完USB总线驱动程序后,接下来开始写一个USB驱动:本节目的:将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键参考/drivers/hid/usbhid/usbmouse.c(内核自带的USB鼠标驱动)1、本节需要用到的宏如下:struct usb_...原创 2018-07-19 07:13:53 · 790 阅读 · 0 评论 -
USB_4大描述符
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/aaa6695798/archive/2009/11/06/4776202.aspxhttp://www.cnblogs.com/lifexy/p/7634511.html在USB描述符中,从上到下分为四个层次:USB设备描述符(usb_device_descriptor)、USB配置描述符(usb_config_de...转载 2018-07-13 08:01:11 · 282 阅读 · 0 评论 -
S3C2440 块设备驱动程序的编写驱动之用内存模拟硬盘(二十一)
http://www.cnblogs.com/lifexy/p/7661454.htmlhttp://www.cnblogs.com/lifexy/p/7661239.html通过上节的块设备驱动分析,本节便通过内存来模拟块设备驱动,方便我们更加熟悉块设备驱动框架 参考内核自带的块设备驱动程序:drivers/block/xd.cdrivers/block/z2ram.c...原创 2018-07-25 15:59:14 · 393 阅读 · 0 评论 -
S3C2440 Nand Flash驱动(分析MTD层并制作NAND驱动)(二十三)
http://www.cnblogs.com/lifexy/p/7701181.html1、本节使用的nand flash型号为K9F2G08U0C,它的命令如下:1.1 我们以上图的Read ID(读ID)为例,它的时序图如下:首先需要使用CE片选1)使能CLE2)发出0x90命令,并发出WE写脉冲3)复位CLE,然后使能ALE4)发出0x00地址,并发出WE...原创 2018-07-28 20:59:23 · 855 阅读 · 0 评论 -
Linux下串口通信详解(上)打开串口和串口初始化详解
https://blog.youkuaiyun.com/specialshoot/article/details/50707965linux下串口通信主要有下面几个步骤 下面我会一一介绍这几个步骤。1.打开串口代码(串口为ttyUSB0)...转载 2018-07-26 10:52:19 · 9915 阅读 · 1 评论 -
Linux下串口通信详解(下)读写串口及关闭串口
https://blog.youkuaiyun.com/specialshoot/article/details/50709257上一篇博客是串口的打开及配置,博客链接http://blog.youkuaiyun.com/specialshoot/article/details/50707965这一篇我将要把读写串口及串口关闭的操作详细介绍一下。读串口读串口就是接收串口数据,通过read来实现。rea...转载 2018-07-26 10:56:34 · 459 阅读 · 0 评论 -
S3C2440 如果串口驱动有问题,怎么调(二十二)
https://blog.youkuaiyun.com/thisway_diy/article/details/81169666有很多人问我,为什么不录串口驱动?实际上串口裸板很简单,但是串口驱动还是挺复杂的;另外基本上所有芯片的内核源码中基本上都会有串口驱动。所以我认为对于串口,我们只要会APP编程即可,不需要去写它的驱动程序。现在有2个问题:1.怎么写串口APP? 2.如果串口驱动...转载 2018-07-26 10:58:08 · 459 阅读 · 0 评论 -
S3C2440 块设备驱动之框架详细分析(二十)
http://www.cnblogs.com/lifexy/p/7651667.html本节目的: 通过分析2.6内核下的块设备驱动框架,知道如何来写驱动 1、之前我们学的都是字符设备驱动,先来回忆一下字符设备驱动:当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按...原创 2018-07-22 20:35:41 · 387 阅读 · 0 评论 -
S3C2440 Nor Flash驱动(二十四)
http://www.cnblogs.com/lifexy/p/7737174.html1、Nor Flash硬件介绍:从原理图中我们能看待NOR FLASH有地址线,有数据线,它和我们的SDRAM接口类似,能直接读取数据,但不能想SDRAM直接写入数据,需要有命令才行。1.1 其中我们2440的地址线共有27根(LADDR0~26),为什么是27根?因为2440共有7个ban...原创 2018-08-05 10:55:52 · 1393 阅读 · 0 评论 -
S3C2440 网卡驱动介绍以及制作虚拟网卡驱动(二十五)
http://www.cnblogs.com/lifexy/p/7763352.html S3C2440 网卡驱动介绍以及制作虚拟网卡驱动1、描述网卡的驱动其实很简单,它还是与硬件相关,主要是负责收发网络的数据包,它将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接受到的数据包传递给上层协议。网卡设备与字符设备和块设备不同,网络设备并不对应于/dev/目录下的文件,...原创 2018-08-08 08:14:02 · 680 阅读 · 0 评论 -
S3C2440 I2C总线协议 和 I2C总线下的AT24C02存储芯片分析(二十七)
https://www.cnblogs.com/lifexy/p/7793686.html本节来学习I2C接口下的AT24C02存储芯片分析,本节学完后,再来学习Linux下如何使用I2C操作AT24C021、I2C通信介绍它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接受数据,是一个多主机的半双工通信方式。每个挂接在总线上的器件都有个唯一的地址。位速在标准模式下可达...原创 2018-08-18 15:09:53 · 1183 阅读 · 0 评论 -
S3C2440 DM9000C网卡移植(二十六)
https://www.cnblogs.com/lifexy/p/7777961.html上一节 我们学习了:网卡驱动介绍以及制作虚拟网卡驱动:https://blog.youkuaiyun.com/xiaodingqq/article/details/81501393接下来本节,学习网卡芯片DM9000C,如何编写移植DM9000C网卡驱动程序。1、首先来看看DM9000C原理图如下图所...原创 2018-08-16 15:11:24 · 2128 阅读 · 0 评论 -
S3C2440 字符设备的另一种写法register_chrdev_region()来注册(二十九)
https://www.cnblogs.com/lifexy/p/7827559.html1、之前注册字符设备用的如下函数注册字符设备驱动:int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops)但其实这个函数是linux版本2.4之前的注册方式,它的原理...原创 2018-08-23 09:50:11 · 345 阅读 · 0 评论 -
S3C2440 音频解码芯片WM8976声卡驱动移植、测试以及madplay播放mp3文件(三十一)
https://www.cnblogs.com/lifexy/p/7867782.html本节学习:分析linux中的OOS声卡系统 修改s3c2410-uda1341.c的控制部分,移植wm8976声卡 使用madplay应用程序播放mp3本节常用英语单词:volume:音量,dsp:数字信号处理(Digital Signal Processing),mixer:混音器,uni...原创 2018-08-27 20:09:17 · 2861 阅读 · 0 评论 -
S3C2440 Linux2.6 I2C驱动程序之框架和编写(二十八)
https://www.cnblogs.com/lifexy/p/7816324.html上一节 我们学习了:IIC接口下的AT24C02驱动分析:https://blog.youkuaiyun.com/xiaodingqq/article/details/81808875接下来本节,学习Linux下如何利用linux下I2C驱动体系结构来操作AT24C021、I2C体系结构分析1.1 首...原创 2018-08-21 09:08:50 · 765 阅读 · 0 评论 -
S3C2440 RTC实时时钟 驱动分析以及使用(三十)
https://www.cnblogs.com/lifexy/p/7839625.htmlRTC驱动分析总结:drivers\rtc\rtc-s3c.cs3c_rtc_init platform_driver_register s3c_rtc_probe rtc_device_register("s3c", &pdev->dev, &s3c_rtco...原创 2018-08-24 19:05:23 · 1104 阅读 · 0 评论 -
S3C2440 热拔插驱动 hotplug_uevent机制__修改mdev配置支持U盘自动挂载(三十三)
https://www.cnblogs.com/lifexy/p/7891883.html1、当我们每次插入U盘后,都会自动创建U盘的设备节点/dev/sda%d这是因为里面调用了device_create()实现的,busybox的mdev机制就会根据主次设备号等信息,在/dev目录下创建设备节点,如下图所示:而想使用上面的sda1设备节点,读写数据时,还需要使用mount /d...原创 2018-09-02 11:04:26 · 498 阅读 · 0 评论 -
S3C2440 USB总线驱动分析(十八)
http://www.cnblogs.com/lifexy/p/7631900.html如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序1 为什么一插上就会有提示信息?是因为windows自带了USB总线驱动程序,2 USB总线驱动程序负责:识别USB设备;给USB设备找到并安装对应的驱动程序;提供USB的读写函数。新接入...原创 2018-07-12 19:18:32 · 1001 阅读 · 0 评论 -
Linux-hexdump命令调试event驱动(详解)
hexdump:查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试用描述:我们以event1为例子,当我们insmod挂载了键盘驱动后,出现一个event1设备,此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从哪里来的呢?通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层的hexdump因为键盘驱动的input_handler是:evdev_hand...原创 2018-06-25 20:49:30 · 1672 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之异步通知(九)
https://blog.youkuaiyun.com/fengyuwuzu0519/article/details/71176782 字符设备驱动程序之异步通知 同步:从字面上来理解,就是同一个时间内双方都在同时做一件事情异步:相对于同步来说了,异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息 总结读取按键的方...原创 2018-05-16 18:55:38 · 697 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之poll机制(八)
https://blog.youkuaiyun.com/fengyuwuzu0519/article/details/71046343https://blog.youkuaiyun.com/cs953575/article/details/60590183 字符设备驱动程序之poll机制 测试程序:死循环read如果没有按键按下,read永远会在那里等待。优化目的(poll):5秒钟之内,如果...原创 2018-05-15 10:49:46 · 589 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之中断方式的按键驱动_编写代码(七)
参考:https://blog.youkuaiyun.com/fengyuwuzu0519/article/details/71046343 字符设备驱动程序之中断方式的按键驱动_编写代码 使用中断方式,那么肯定有一个中断的初始化注册,就是告诉内核,我按下按键的时候会触发一个中断,同时一定有一个中断处理函数来处理中断发生时应该做什么。linux内核中 如何告诉内核我按下按键了给我触发中断并...原创 2018-05-14 14:32:09 · 930 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构(六)
字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构 解析asm_do_IRQ,了解中断处理,怎么进行的。 单片机下的中断处理:1、分辨是哪一个中断2、调用处理函数3、清中断 Linux内核:asm_do_IRQ(C函数入口)最终 调用到 事先初始化的handle_irq函数。 以上单片机的三项,是用asm_do_IRQ函数来实现...原创 2018-05-13 15:18:19 · 513 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构(五)
字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构 中断方式获取按键值(单片机)1、有按键按下2、CPU发生中断 强制调到异常向量入口执行(中断是异常的一种)3、入口函数 跳转指令:b 函数 a.保存被中断的现场(各种寄存器的值) b.执行中断处理函数 c.恢复被中断的现场 ...原创 2018-05-12 16:11:11 · 852 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之LED驱动程序_操作LED(四)
第12课第2.3节 字符设备驱动程序之LED驱动程序_操作LED(四)写一个点LED的驱动:一、框架二、完善、硬件的操作: a.看原理图、确定引脚; b.看2440手册; c.写代码: 单片机:操作物理地址 驱动:用ioremap函数来映射虚拟地址驱动程序first_drv.c#include <linux/module.h>#inclu...原创 2018-05-10 19:29:18 · 528 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之LED驱动程序_测试改进(三)
字符设备驱动程序之LED驱动程序_测试改进在加载驱动之前,先来看一下/proc/devices,里面是现在内核所支持的设备。第一列是主设备号,对应的是内核数组chrdevs的下标,第二列是它的名字。加载驱动的命令:insmod first_drv.ko cat /proc/devices写个测试驱动程序测试它。(见代码二)mknod /dev/xx...原创 2018-05-09 16:08:08 · 473 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之LED驱动程序_编写编译(二)
字符设备驱动程序之LED驱动程序_编写编译app: open , read , write驱动: led_open,led_read,led_write驱动框架:一、写出:led_open,led_read二、怎么告诉内核? a、定义一个file_operations b、把这个结构体告诉内核: register_chrdev(major,na...原创 2018-05-07 18:38:08 · 632 阅读 · 0 评论 -
S3C2440 字符设备驱动程序之概念介绍(一)
字符设备驱动程序之概念介绍(一)一、Uboot目的是启动内核。内核目的是启动应用程序。 二、应用程序:读写文件、点灯、获取按键 三、 1、框架:应用 open,read,write C库 系统调用接口 sytem call interface 内核 VFS virtual file system sys_open,sys_read,sys_write 驱动 Led_open...原创 2018-05-06 16:50:37 · 1230 阅读 · 0 评论 -
S3C2440 使用定时器实现按键防抖(十一)
使用定时器实现按键防抖 发生抖动现象:按下0x1,松开0x81,一一对应。但是出现“按下0x1,按下0x1,松开0x81”。按下操作,会出现两个值,说明出现了抖动。 抖动如何产生的?按键是一个机械的开关,当我们按下按键的时候,里面的金属弹片可能会抖动了几次,就产生了些脉冲,脉冲就会产生中断。一次按下,可能出现多次中断。 目的:防抖动。 定时器的两...原创 2018-05-19 19:25:14 · 622 阅读 · 0 评论 -
S3C2440 输入子系统概念介绍(十二)
https://www.cnblogs.com/lifexy/p/7542989.html 输入子系统概念介绍 在以前的按键程序上,有个缺点,没办法用在被人的现成的应用程序上,比如QT等应用程序。别的应用程序不会打开/dev/buttons,有可能打开现成的设备/dev/tty。也有可能直接调用scanf(),就可以获取按键的输入。 以前写的应用程序,只有你知道怎...原创 2018-05-21 18:32:00 · 518 阅读 · 0 评论 -
S3C2440 (4.3寸)LCD驱动程序之层次分析(十五)
http://www.cnblogs.com/lifexy/p/7603327.html如果我们的系统用GUI(图形界面接口),这是LCD设备驱动程序就应该编写成frambuffer接口,而不是像之前那样只编写操作底层的LCD控制器接口。什么是frambuffer设备? frambuffer设备层是对图像设备的一种抽象,它代表了视频硬件的帧缓存,使得应用程序通过定义好的接口就可以...原创 2018-06-02 19:12:01 · 626 阅读 · 0 评论 -
S3C2440 输入子系统编写驱动程序(键盘按键驱动)(十三)
http://www.cnblogs.com/lifexy/p/7553861.html输入子系统编写驱动程序(键盘按键驱动) 一、目的:实现按键驱动,让开发板的4个按键代表键盘中的l键、s键、enter键、left-shift键。 二、介绍几个结构体和函数的使用:2.1 input_dev驱动设备结构体中常用成员如下:struct input_dev { v...原创 2018-05-23 15:38:16 · 1446 阅读 · 0 评论 -
S3C2440 platform总线分层分离概念_总线驱动设备模型(十四)
http://www.cnblogs.com/lifexy/p/7569371.htmlplatform机制以及分概念1、分离概念优点: 将所有设备挂接到一个虚拟的总线上,方便sysfs节点和设备电源的管理 使得驱动代码,具良好的扩展性和跨平台性,就不会因为新的平台而再次编写驱动介绍:分离就是在驱动中使用platform机制把硬件相关的代码(固定的,如板子的网卡、中断地...原创 2018-06-02 14:24:03 · 463 阅读 · 0 评论 -
S3C2440 触摸屏touch screen驱动程序(十七)
http://www.cnblogs.com/lifexy/p/7628889.html1、先来回忆之前第12节分析的输入子系统(请点击这里)其中输入子系统层次如下图所示:其中事件处理层的函数是通过input_register_handler()函数注册到input_handler_list链表中搜索input_register_handler注册函数,就可以看到都是事件处理层...原创 2018-06-25 20:03:35 · 1506 阅读 · 0 评论 -
裸机LCD驱动设置
横屏4.3寸LCD为480*272(一行:480个像素点 一列:272个行)1、LCD原理图:Pin1-Pin6:Von/Voff 电源正/负(由GPG4控制,高电平要效)Pin2:VM、VDEM 数据使能信号(0:表示正在跳行,1:表示可以传输像素数据)Pin8:VLINE/HSYNC 水平同步信号(每扫完一行,即发一次水平同步信号)Pin28:VFRAME/VSNC 垂直同步信号(...原创 2018-06-18 16:52:32 · 1116 阅读 · 0 评论 -
S3C2440 (4.3寸)LCD驱动程序之层次分析(十六)
参考:http://www.cnblogs.com/lifexy/p/7604011.html 在上一节LCD层次分析时,得出写个LCD驱动入口函数,需要以下4步:1)分配一个fb_info结构体:framebuffer_alloc();2)设置fb_info;3)设置硬件相关的操作;4)使能LCD,并注册fb_info:register_framebuffer(); ...原创 2018-06-18 20:16:33 · 1144 阅读 · 0 评论 -
S3C2440 DMA驱动程序编写及测试(三十二)
https://www.cnblogs.com/lifexy/p/7880737.htmlDMA(Direct Memory Access)即直接存储访问,DMA传输方式无需CPU直接控制传输,通过硬件为RAM、I/O设备开辟一条直接传输数据的通路,能使CPU的效率大为提高。学了这么多驱动,不难退出DMA的编写套路:1)注册DMA中断,分配缓冲区 2)注册字符设备,并提供文件操作...原创 2018-08-30 14:31:55 · 1848 阅读 · 0 评论