自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(33)
  • 收藏
  • 关注

原创 嵌入式linux之USB设备驱动概念

现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序" USB总线驱动程序负责:识

2015-07-31 21:00:19 471

原创 嵌入式linux之触摸屏驱动框架

1、工作原理首先我们要区分lcd和触摸屏,lcd是一个屏幕,触摸屏是贴在lcd上的两层膜。接下来我们说一下四线电阻触摸屏的原理:触摸屏就是上下两层膜,比如上层代表x轴(XM:负端,XP:正端),下层代表y轴(YM:负端,YP:正端)。当读取x轴坐标时,XP接3.3v,XM接地,从YM读取按下点的电压值作为模拟输入信号,再经过AD转换后就得到了x轴坐标。同理,当读取y轴坐标时,YP接3.3v,YM

2015-07-31 09:55:49 2579

原创 同步,异步,阻塞,非阻塞IO

同步与异步IO、阻塞与非阻塞IO 很多时候我们常常看到同步与异步,阻塞与非阻塞的出现。有的地方直接将同步与阻塞画上了等号。异步与非阻塞画上了等号。事实上这是不对的。同步不等于阻 塞,而异步也不等于非阻塞。下面就来仔细的看看同步与异步、阻塞与非阻塞的概念差别,及他们的组合应用。 同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用

2015-07-29 19:08:14 315

原创 嵌入式linux之LCD驱动记录

分类: 1、页对齐内存大小:dma_map_size = PAGE_ALIGN(MY_DATA_SIZE + PAGE_SIZE);MY_DATA_SIZE是你想分配的大小.2、调用A = dma_alloc_writecombine(B,C,D,GFP_KERNEL);含义:A: 内存的虚拟起始地址,在内核要用此地址来操作所分配的内存B: struct device指针,可以平台初始化里指定,主

2015-07-28 14:26:06 743 1

原创 设计模式之装饰模式

定义:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。层层包装,增强功能。在装饰模式中的各个角色有:  (1)抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。   (2)具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。   (3)装饰(Decorator)角色:持有一个构件(Component

2015-07-26 10:42:51 231

原创 嵌入式linux之LCD驱动层次分析

static int __init fbmem_init(void) { proc_create("fb", 0, NULL, &fb_proc_fops); if (register_chrdev(FB_MAJOR,"fb",&fb_fops)) //注册了名字为fb的字符设备,相关操作为fb_fops printk("unable to g

2015-07-25 21:17:15 487

原创 嵌入式linux之分离分层概念,总线驱动设备模型

一、示意图 App input.c / \ / \ / 分离 \button.c < ===== > evdev.c 硬件相关

2015-07-24 12:41:01 407

原创 嵌入式linux之输入子系统

1、为何引入input system? 以前我们写一些输入设备(键盘、鼠标等)的驱动都是采用字符设备、混杂设备处理的。问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的、不同类别的输入设备进行统一的驱动,所以才出现了输入子系统。 输入子系统引入的好处:(1)统一了物理形态各异的相似的输入设备的处理功能。例如,各种鼠标,不论PS/2

2015-07-24 09:23:13 435

原创 设计模式之单一职责原则

单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中给出的。马丁表示此原则是基于汤姆·狄马克(Tom DeMarco)和Meilir Page-Jones的著作中的内

2015-07-23 08:47:36 525

原创 嵌入式linux之自己写bootload之编写第1阶段

//最小bootloader的构建过程1:初始化硬件:时钟,看门狗,设置SDRAM,初始化NAND FLASH2:如果bootloader比较大,要把它重定位到SDRAM3:把内核从NAND FLASH中将内核读到SDRAM4:设置要传给内核的参数5:跳转执行内核

2015-07-23 08:47:29 380

原创 JAVA多线程

线程的6种状态1.New 新创建 就绪态 2.Runnable 可运行态 调用.start()方法,线程开始等待CPU的调度,可能正在运行,可能没有运行,失去了时间片 3 Blocked 阻塞 4.wating 等待 5.Timed wating 计时等待 6.Terminated 被终止(run方法正在退出而自然死亡,因为一个没有捕获的异常终止了run方法而意外死亡)thre

2015-07-23 08:47:12 214

原创 嵌入式linux之定时器防抖

总的来说,timer的用法还是很简单的。主要需要定义一个timer_list变量timer、先初始化timer   init_timer(&timer);   then 对timer的相关参数赋值:   timer.function = fun;   timer.expires = jiffies + TIMER_DELAY;   add_timer(&timer);   在定

2015-07-22 22:01:46 467

原创 设计模式之依赖倒转原则

抽象不应该依赖细节,细节应该依赖于抽象。说白了就是要针对接口编程,而不要针对实现编程。比如intel生产CPU,要针对接口设计,如果要针对实现设计,就要具体到对应某个品牌的主板。原则:依赖倒转就是高层和底层互相不依赖,都针对接口设计。1.高层模块不应该依赖于底层模块。两个都应该依赖抽象。 2.针对接口编程public interface ICar{void Run();void Turn()

2015-07-21 20:22:41 287

原创 设计模式之开放封闭原则

开放-封闭原则:是说软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。对于扩展是开放的,对于更改是封闭的。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码,这就是开放封闭的原则所在。将业务功能抽象为接口.public interface IBankProcess{ void Process();}public class DepositProcess : IBankPr

2015-07-21 19:40:45 325

转载 对韦老师移植最新u-boot的总结

一:准备移植 1、从下面的官网下载最新的U-boot。用google英文版搜索最新的u-boot源码 ftp://ftp.denx.de/pub/u-boot/ 2、建立sourceinsight工程 a、解压并在E:\colin weidongshan\transplant_u-boot-2012.04.01\u-boot-2012.04.01建立SI b、添加文件到SI工程

2015-07-21 17:25:45 585

原创 设计模式之策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。组成:—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。abstract class OperateStrategy { public abstract double OperateAlgorithm(double op1,double op2);}—具体策略角

2015-07-21 08:36:02 279

原创 设计模式之简单工厂模式

计算器引例目的:充分运用面向对象思想,利用封装,继承,多态设计出可维护性强,灵活性强,可扩展性,可重用性强的应用程序工厂模式:工厂类来管理所有子类的实例化,充分利用多态(设想本来有加减乘,客户需要增加除运算,是不应该将加减乘功能进行重新编译的。)public class OperationFactory { public static Operation createOperate(Str

2015-07-20 14:43:48 224

原创 嵌入式linux按键驱动,同步互斥阻塞,linux进程六大状态

目的:同一时刻只能有一个应用程序open设备文件。所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实

2015-07-18 10:09:17 401

原创 嵌入式linux之按键驱动,异步通知

目的:当有按键事件发生时,驱动主动发送信号给上层应用程序。实现异步通知异步通知,的确是一种很好处理机制,熟练掌握这种手段,对我们写高质量的应用程序很有帮助。下面说说对它的理解:异步通知,就是让驱动去告诉应用,底层硬件发生了什么事,而不是应用主动地去查询驱动,这对系统的性能有一个很大的提升。首先,在驱动中内核首先定义一个结构体struct fasync_struct,这个结构体用来存放对应设备文件的信

2015-07-17 21:21:41 712

转载 linux等待队列wait_queue_head_t和wait_queue_t

等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队

2015-07-17 17:26:05 884

原创 嵌入式linux之poll机制

最近看了一下Linux Poll 机制的实现,看了韦老师的分析文档,总结如下:int poll(struct pollfd *fds,nfds_t nfds, int timeout);总的来说,Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返回fd的

2015-07-17 15:59:18 391

原创 嵌入式linux之按键驱动程序

步骤1.写出框架 2.硬件操作(操作虚拟地址ioremaplinux中断处理体系架构1.重要函数 trap_init() init_IRQ();asm_do_IRQ中断总入口: 分辨中断,处理中断,清中断。1)发生中断时,CPU执行异常向量vector_irq的代码。2)在vector_irq里面,最终会调用中断处理的总入口函数asm_do_IRQ。3)asm_do_IRQ根据中断号调用i

2015-07-15 18:02:07 1838

转载 驱动之module_init/module_exit

驱动之module_init/module_exit作者:曹老师,华清远见嵌入式学院讲师。在前面helloworld的编写里面,我们使用了两个宏分别是module_init和module_exit,这里分析下为什么使用这两个宏。在写模块的时候有两个特殊的函数,分别是init_module和cleanup_module,这两个函数分别在insmod的时候和rmmod的时候调用,并且insmod和rmm

2015-07-14 15:13:59 362

原创 第12课第1节 字符设备驱动概念介绍

C库为应用程序提供标准系统接口,内核通过VFS,虚拟文件系统,将调用实际的设备驱动程序。

2015-07-12 21:52:51 338

原创 JAVA 接口 抽象类 的区别

简单来说, 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如

2015-07-12 17:54:59 255

原创 linux内核体验

内核编译步骤 嵌入式系统的构建1.首先烧写bootload到NOR Flash中.,利用U-boot将内核,,,文件系统烧写到Nand FALSH中 2.从NOR启动 u-boot运行,代码重定位到SDRAM内存最后一部分,继续运行。 3.u-boot将内核复制到SDRAM内存中,控制权交给内核。跳转到内核。 4.内核加载文件系统,成功启动/文件系统分为硬件,软件。硬件主要是指在存储设备上,

2015-07-10 08:34:35 437

原创 链接器和加载器

功能:把抽象的名字和底层更抽象的地址绑定起来,形成符号表。编译形成的目标代码地址是从0地址开始的,而链接器需要将代码重定位到主内存当中运行。还需要对程序中的数据和指令中的地址和偏移量进行修改。链接器要修改每个指令中引用的数据内存地址,每个跳转指令引用的地址,要被加载或存储的数据的地址,或指令要跳转到的地址等。。具体定位到哪个地址和计算机的 体系结构有关。硬件体系结构的两个方面影响到链接器:程序寻址和

2015-07-09 08:53:21 2810

转载 u-boot链接分析

近把boot的资料整理下,把我觉得boot比较核心的部分,完整的看了一遍,现在做个记号.我把我觉得我之前比较困惑的难点整理出来,也许大家一起讨论下,也许和我一样的新手就可以少走些弯路. BOOT的核心就是relocate,目前见到的典型嵌入式系统,除了处理器,至少都有ROM(norflash,nandflash)RAM(SDRAM),一般把Bootloader代码放在norflash里面,而nan

2015-07-08 22:08:20 411

原创 第9课 u-boot 分析 初探

U-boot 功能U-boot 学习目标我认为学习和应用u-boot对于刚接触的人来说最大的困难在于其功能比较全,文件(.S .c .h makefile文件)非常多,结构也比较复杂,难以理清各方面的关系。熟悉了一段时间之后,发现还是有很多的规律可以总结的。一、首先要理解bootloader的作用,以及U-boot具体可以实现什么样的一些功能。二、弄清U-boot的启动流程,这时候需要跟着整个程序走

2015-07-03 21:41:03 388

原创 第8课 LCD控制驱动

JZ2440 4.3寸 分辨率 480*272时序设置:1.VCLK 2.VSPW,VBPD,VFPD, HSPW,HBPD,HFPD AS43-24-TT-11 2.对应 tvp tvb tvf ,thp thb thf 3.VBPD = 1,VFPD = 1,VSPW = 9; HBPD = 1,HFPD = 1,HSPW = 40;

2015-07-02 21:42:55 334

原创 JAVA异常处理机制

Java异常处理和设计  在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,

2015-07-02 17:28:04 229

原创 android Activity的生命周期

子曰:溫故而知新,可以為師矣。《論語》 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓。 近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。 熟悉javaEE的朋友们都了解servlet技术,我

2015-07-02 15:56:18 249

原创 解析目标文件

最近在看《程序员的自我修养》,颇有体会,故化繁为简,整理书中部分内容,作为学习笔记。PC平台上流行的可执行文件格式主要是windows下的PE(Portable Executable)和Linux下的ELF(Executable Linkable Format),他们都是COFF(common file format)格式的变种。 可执行文件(windows下.exe和Linux下的ELF可执行文

2015-07-01 11:27:17 296

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除