- 博客(25)
- 资源 (26)
- 收藏
- 关注
原创 linux驱动程序之触摸屏(涵盖了常用的事件编码)
作为一个输入子系统,步骤依然是:1、分配2、设置3、注册4、硬件相关的操作触摸屏的使用过程:1、按下,产生中断2、在中断处理程序里面启动ADC转换XY坐标3、ADC结束,产生中断。4、在ADC处理函数里面上报input_event,启动定时器5、定时器时间到,再次启动ADC(处理长按,滑动)6、等待松开
2014-12-30 16:08:08 2666 1
原创 linux驱动之LCD
以下是写LCD驱动的框架:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in
2014-12-27 22:21:31 1627
原创 linux驱动之分离分层的概念
bus_drv_dev模型:简单说明:这张图就是全部了。device是与硬件相关的代码,driver是比较稳定的驱动代码。当修改硬件部分的时候,只修改dev里面的东西。====================================================================================================
2014-12-26 20:54:01 2513 1
原创 linux驱动之输入子系统概念
以前的博文介绍linux驱动程序的时候一直遵循以下步骤:确定主设备号定义一个file_operation结构,填充函数如:open write read poll等设备注册入口函数出口函数以上即是字符设备的框架。------------------------------------------------------------------------------------
2014-12-24 23:00:20 1947
原创 linux驱动程序之定时器防按键抖动
前提:按键按下通过中断方式进行处理。本博文基于上一个博文改写:上一篇博文目的:使用定时器防止按键抖动产生中断。方法:每次发生按键中断后,推迟10ms进行处理,最终将会只执行一次定时器中断处理函数。这样就避免了按键抖动引起的误中断。步骤:1、定义一个定时器结构体static struct timer_list button_timer;//定义一个定时器,用于按键消抖
2014-12-24 18:35:58 2585
原创 linux驱动程序之同步、互斥、阻塞
目的:同一时刻,只能有一个应用程序打开/dev/wq_button1、方法一:使用设备打开标志(原子操作)1、在驱动程序的open函数中增加一个标志,如果满足条件,则执行open函数中其余工作,如果不满足,则返回,增加代码如下: if(!atomic_dec_and_test(&canopen))//自减操作并测试是否为零,如果为零返回 ture { atomic_inc(&ca
2014-12-22 21:24:44 1321
原创 linux驱动程序之增加按键异步通知机制
目的:按下按键时驱动程序通知应用程序大体框架:1、应用程序:注册信号处理函数2、驱动程序发送信号3、应用程序通知驱动 PID4、驱动程序发送如何发送信号
2014-12-22 18:27:05 1289
原创 linux驱动之poll操作
POLL操作1、POLL执行过程:poll是一个系统调用,其内核入口函数为sys_poll,sys_poll几乎不做任何处理直接调用do_sys_poll,do_sys_poll的执行过程可以分为三个部分: 1,将用户传入的pollfd数组拷贝到内核空间,因为拷贝操作和数组长度相关,时间上这是一个O(n)操作,这一步的代码在do_sys_poll中包括从函数开始到调用do_poll
2014-12-22 12:29:27 1087
原创 linux驱动之中断方式获取键值
linux驱动之中断方式获取键值------------------------------------------------------------------------------------------------------------------------------------------------------回顾在单片机下的中断处理分辨是哪个中断调用处理函
2014-12-21 11:48:37 2347 2
原创 linux驱动之按键驱动
目的:编写按键驱动原理图:按键与引脚对应关系:1、编写驱动程序框架2、查看原理图与s3c2440手册3、编写open函数配置引脚4、编写read函数功能驱动代码:#include #include #include #include #include #include #include #include MODULE_LI
2014-12-20 19:04:02 1045
原创 linux驱动之LED驱动_2
在上一个帖子中,讲述了如何给led编写驱动程序,但是实现的功能比较单一,接下来我们要实现的功能是在上一个的基础上能够单独控制每一个led灯。上一个帖子的链接: linux驱动之LED驱动_1 上一个帖子的驱动源码在:点击打开链接 测试源码在:点击打开链接目的:实现板子上每个led能够单独的控制。方法:0、通过次设备号来单独访问每个led1、更改入口函数: 为
2014-12-19 21:35:10 1365
原创 linux驱动之LED驱动_1
步骤:1、框架 2、完善硬件的操作: a.看原理图、引脚 b.看2440手册 c.写代码: IO口需要用ioremap映射我的板子电路如下所示1、配置GPBCON 寄存器,配置输出 在open函数中去配置2、配置GPBDAT 寄存器 在write函数中去配置#########
2014-12-19 16:25:37 1242
原创 linux驱动之设备号与创建设备节点
设备号:1、自动分配major = register_chrdev(0,"first_drv",&first_sdv_fops);//注册注册设备时给设备号写0,则内核会自动分配一个主设备号返回。2、手动指定到 proc/devices 文件下查找都有哪些主设备号,如果没有被使用的我们即可拿过来使用它。应用程序设备节点:我们会使用open这个函数带开一个设备,那么o
2014-12-18 21:50:18 1966 1
原创 linux根文件系统init进程分析
init程序本身即busybox:配置文件解析配置文件执行用户程序程序执行过程:busybox -> init_main parse_inittab file = open(INITTAB,"r"); //打开配置文件 /etc/inittab
2014-12-16 18:28:15 1280
原创 linux内核启动流程
内核启动:1、内核引导阶段确定内核是否支持该架构 __lookuo_processor_type 确定内核是否支持该单板 __lookup_machine_type建立一级页表 __create_page_tables设置arm920 cpu核 禁止 I,D caches等 __arm920_setup使能MMU __enable_mmu
2014-12-16 17:16:49 849
原创 lcd控制器 笔记前序<s3c2440>
2440LCD控制器基本概念 bpp(bit per pixel) 如果是320*240像素的屏幕,16bpp,则内存占 240*2 字节 *320行基本操作步骤:打开背光时序设置在framebuffer写数据对于8bpp的LCD来说:8bpp时 framebuffer里面存放的是 调色板的索引值。调色板里面存储的是256种颜色的色值。
2014-12-14 22:57:39 1140
原创 中断控制器学习 <s3c2440>
arm 体系cpu的七种工作模式:用户模式(usr)快速中断模式中断模式 是一种异常管理模式数据访问终止模式 是一种异常系统模式未定义指令中止模式工作模式之间:不同的寄存器(寄存器副本) 同一条指令,在不同模式会对应不同的寄存器。不同的权限 触发条件=====================================================
2014-12-14 18:23:40 1083
原创 NANDFLASH学习 <s3c2440>
一上电,nandflash4K 数据拷贝到 sram中内存接法: 地址总线 -》2440的地址总线网卡(DM9000)接法: 地址总线 -》2440的地址总线nandflash接法: 没有地址总线结论:1、nanfalsh和DM9000的寻址方式不一样。 片内内存、sdram 、DM9000、寄存器 是CPU统
2014-12-14 11:54:27 1152
原创 MMU 内存管理单元 <s3c2440>
mmu作用:权限管理地址映射1、权限管理:A程序 B程序A程序、B程序是不能访问内核空间的内存同时A程序也不应该访问B程序的内存===============================================虚拟地址:如果CPU启用了MMU,CPU核发出的地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称
2014-12-14 10:14:38 1020
原创 存储管理器实验 嵌入式学习<s3c2440>
cpu访问0x30000000地址上的数据时,只需要以下汇编指令:MOV R1,#0x30000000LDR R0 ,R1LDR这条指令硬件上操作包括这写内容:发出片选信号发出bank选择信号发出列地址,行地址信号这些操作都是由2440中的存储管理器完成的#######################################################
2014-12-13 22:37:15 1561
原创 配置eclipse linux嵌入式 集成开发环境(编译部分)详细
开发环境:ubuntu12.04(64位)eclipse (c/c++)luna注意:本文主要讲将eclipse配置好编译器。 远程调试的部分请看另一篇帖子 eclipse 调试环境配置。我的arm-linux-gcc 路径是:/opt/EmbedSky/4.3.3/bin/arm-linux-gcc (什么?怎么看arm-linux-gcc的路径?? 你可以使用 whic
2014-12-11 21:44:40 3917
原创 eclipse linux驱动交叉调试环境的制作
知识背景:菜鸟阶段,一心学习linux驱动开发,只是现在还什么都不会。。 特别信仰 “工欲善其事,必先利其器”。环境:ubuntu 12.04 arm-linux-gccstep1:安装eclipse相信你已经会了,嵌入式开发下载 c/c++版本的exlipse,版本用最新的吧,但也不是绝对的。我用的luna版本。点击这个下载eclipse,解压即可,但是安装时需要安
2014-12-10 21:14:16 2541
原创 ubuntu nfs挂载方法
环境:ubuntu 12.04step1:在使用nfs服务前,我们需要先关闭伟大的防火墙要不然有可能失败。指令: ufw disablestep2:安装nfs,有人说ubuntu12.04已经安装了最新版的,我不信,所以我要试试。。。指令:sudo apt-get install nfs-kernel-server
2014-12-10 21:11:43 7019
原创 eclipse在linux的安装以及在dash中的显示(c/c++版本)
环境:ubuntu 12.04工欲善其事,必先利其器。vim,emacs是高负率用的,我等屌丝还是用点稍微傻瓜一点的吧。效率第一!
2014-12-10 20:38:58 2355
GB∕T 33577-2017 智能运输系统 车辆前向碰撞预警系统 性能要求和测试规程.pdf.tar
2019-07-30
grpc_msvc_x86_Qt库文件
2016-11-02
燕山大学光纤位移传感器控制终端--王奇
2015-05-21
crazyflie 四轴源码 原理图
2014-04-02
GNU ARM Eclipse Plug-in
2014-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人