- 博客(519)
- 资源 (4)
- 收藏
- 关注
转载 linux的触摸屏之一:原理及APK调试
(1)原理:本文抛开技术层次上来说说LINUX触摸屏设备驱动原理。触摸屏,就是用一块AD转换模块来将屏幕上的触摸信号转成数字信号。触摸屏常用的是四线电阻,当触摸时候,功能模块会将模拟信号转换成数字信号,就是通常说的AD转换。在LINUX中,通常是通过中断来读取这些数字的。触摸屏幕的时候,中断发生,LINUX通过串口或者I2C,SPI或者内部数据通道等去读取转换后的数字,然后把数值传给INPUT层。
2013-02-01 17:04:34 1200
转载 6410平台500W摄像头调试过程 && 拍照偏绿和图片保存等BUG
(1)各种款式的摄像头会有一个最大的支持分辨率,通常此时的格式约定是:1,30W:640*480=307200;2,130W:1280*1024=1310720;3,200W:1600*1200=1920000;4,300W:2048*1536=3145728;5,500W:2592*1944=5038848;6,1600W:4096*4096=16777216;
2013-02-01 16:44:49 1524
转载 Uboot之一:BootLoader的概念
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,Boot Loader 是严重地依赖于硬件而实现的,因此建立一个通用的 Boot Loader 几乎是不可能的。 每种不同的 CPU 体系结构都有不同的 Boot
2013-02-01 16:16:07 437
转载 android平台6410背光修改
昨日装机的MID亮度不够,特别是看些视频文件时很不清晰。实际测得输出PWM的GPF15电压不够,仅0.4伏,要求上应该要达到跟WINCE一样的2.8V,才适合供给U7位的MP1528。 在内核CODE中查找PWM相关文件,找到s3c6410_timer_setup函数是设置PWM通道和分频比等相关函数的调用。恰好该函数在s3cfb_set_brightness中被调用,设置tcnt的
2013-02-01 16:01:09 458
转载 platform_device与platform_driver
做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义 platform_driver-> 注册 platform_driver。(1)platform_device设备
2013-02-01 15:50:31 441
转载 使用busybox
1,busybox简介:busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小。我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍。在MID平台上,我的很多linux命
2013-02-01 15:06:06 458
转载 Linux 设备驱动框架
(1)驱动框架 Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”,如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,
2013-02-01 11:33:22 360
转载 Linux设备模型(总线、设备、驱动程序和类)之四:class_register
类是一个设备的高层视图,它抽象出了底层的实现细节,从而允许用户空间使用设备所提供的功能,而不用关心设备是如何连接和工作的。类成员通常由上层代码所控制,而无需驱动的明确支持。但有些情况下驱动也需要直接处理类。 几乎所有的类都显示在/sys/class目录中,可以通过ls -l /sys/class来显示。出于历史的原因,有一个例外:块设备显示在/sys/block目录中。在许多情况,类
2013-02-01 11:20:12 501
转载 Linux设备模型(总线、设备、驱动程序和类)之三:device_driver && 多厂家驱动自动识别
设备模型跟踪所有系统已知的驱动,主要目的是使驱动程序核心能协调驱动和新设备之间的关系。一旦驱动在系统中是已知的对象就可能完成大量的工作。驱动程序的结构体device_driver 定义如下:struct device_driver { const char *name; /*驱动程序的名字( 在 sysfs 中出现 )*/ struct bus_type
2013-02-01 11:13:45 1103
转载 Linux设备模型(总线、设备、驱动程序和类)之二:device
在最底层,Linux 系统中的每个设备由一个struct device 代表: struct device{ struct klist klist_children; struct klist_node knode_parent; /* node in sibling list */ struct klist_node knode_driver;
2013-02-01 11:04:43 357
转载 Linux设备模型(总线、设备、驱动程序和类)之一:bus_type
总线是处理器和一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟"platform"总线。可以通过ls -l /sys/bus看到系统加载的所有总线。drwxr-xr-x root root 1970-01-01 00:02 platformdrwxr-xr-x root root 1970
2013-02-01 10:58:59 468
转载 Linux下串口编程之二:读串口和写串口
1,打开串口 /**打开串口,dev 串口设备名, mode 打开方式,**/int opendev(char *dev,mode_t mode) { int fd; fd = open(dev, mode); if (-1 == fd){ perror("Ca
2013-02-01 10:50:29 558
转载 Linux下串口编程之一:基础设置函数
1,串口操作需要的头文件 #include /* 标准输入输出定义 */ #include /* 标准函数库定义 */ #include /* Unix 标准函数定义 */ #include #include #include /* 文件控制定义 */ #include /*终端控制定义
2013-02-01 10:47:25 482
转载 Linux的帧缓冲(Frame Buffer)之二:显示图形和图像
现在你应该对FrameBuffer有一个大概的了解了吧。那么接下来你一定会想在屏幕上画一些东西,让我们先从画一个方块开始吧。先说说我的想法:在类Unix系统中,一切东西都是文件。我们对屏幕的读写就可以转换成对帧缓冲设备的读写。那么就把帧缓冲设备用open打开,再用lseek定位要读写的位置,最后调用read或者write来操作。通过这么一大段的操作我们才完成了对一个点的读或者写。 这
2013-02-01 10:42:51 1788
转载 linux平台上GPIO模拟I2C
GPIO模拟I2C是嵌入式中较为常用的一种应用。各个地方有各种不同的做法,按照我自己的个人理解,最好是把I2C的各种状态分割开来,比如起始条件终止条件,读数据和写数据,然后根据具体的使用场合组合起来。 这里需要注意两点:一是SCL的波形并不规律,不能将它理解为方波,它本身只是一段段独立的波形。二是每段操作时,之前和之后的SCL和SDA波形是可以忽略的;通常情况下I2C开始之前和I2C
2013-02-01 10:38:02 768
转载 Linux的帧缓冲(Frame Buffer)之三:LCD上显示摄像头
一个简单的应用程序,来实现在LCD上显示当前camera的图像数据,也可以根据键盘输入保存摄像头数据到BMP图片中。(1) 如下: 文件头和全局变量:[cpp] view plaincopyprint?#include #include #include #include #include #include #inc
2013-02-01 10:10:14 691
转载 Linux的芯片驱动firmware自动升级之一:功能说明
在驱动开发过程中,我们有时会碰到这种应用:比如说某款芯片的固件不是固定的,是可以后期升级的。那么在每次系统开机时,需要做个检测,如果检测到提供了新的固件,那么在第一次开机时就升级固件。之后由于保存了新的固件版本号可供检测,就不用再开机升级了。 以一款I2C的触摸屏芯片为例,假设供应商提供的新固件文件名是Us3x06eb_use.it,将该文件放在触摸屏驱动.c的同目录下,那么需要
2013-02-01 09:56:16 946
转载 Linux的芯片驱动firmware自动升级之二:MELFAS的TP升级实例
以MELFAS的MS6000芯片固件升级实例,说明一般的数组格式的IMAGE文件烧录的过程。该芯片需要PIN脚组合完成一定的时序并实现一组命令码进入烧录模式,并且在烧录模式下的I2C地址是0XFA(跟芯片正常工作时的地址0X40不同),在烧录完毕后进行复位并开始相应正常的TP操作。芯片大致的烧录了流程图如下: 实现代码如下:(1)基础宏定义[cpp]
2013-02-01 09:54:51 866
转载 Linux平台从SD卡读文件并处理的方法
2012-03-09 15:13371人阅读评论(0)收藏举报 在Linux的应用平台上,很多时候我们需要用到从SD卡读数据来使用,比如升级触摸屏固件,比如载入调试文本等,都需要用到Linux的文件系统来操作。通过举一个实例来说明VFS FILE操作细节,即在ADB中通过echo 到DEVICE_ATTR的store来升级TP固件,相关升级函数可以参见博文http://blo
2013-02-01 09:44:59 1811
转载 Linux和android下测试键盘和触摸屏
在Linux或者Android-x86系统下,会用到测试键盘、鼠标、触摸屏等各种输入设备的功能,那么下面的这段代码是个好的选择。首先编写了个Linux输入设备的测试小程序来检测问题所在,总算也小有成就。具体输入设备的路径,大家可以用cat /proc/bus/input/devices查看自己机器的设备文件。 检测按键的程序如下:[cpp] view plainco
2013-02-01 09:32:44 2090
转载 Request_irq和setup_irq的区别
Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。这两个函数有什么样的区别呢?(1)Setup_irq,Setup_irq通常用在系统时钟(GP Timer)驱动里,注册系统时钟驱动的中断处理函数。下面举个列子,如s3c2410 timer驱动结构体定义在Time.c (arch/arm/p
2013-01-31 20:40:10 475
转载 Linux 静态链接库与动态链接库之二:动态链接库生成
动态链接库是一种通用的软件组件技术,是多种操作系统中提供基本服务的方式。比如Win32内核就是3个DLL文件构成。这种技术在Linux操作系统下也有对应的实现,就是Linux标准对象Standard Ojbect,对应的文件扩展名为.so。 下面通过一个简单的例子开始介绍Linux标准对象。void show() { printf("Standard Object b
2013-01-31 18:00:48 318
转载 Linux 静态链接库与动态链接库之一:静态链接库生成
2010-07-01 22:54284人阅读评论(0)收藏举报一,引言 通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态
2013-01-31 17:55:38 318
转载 Linux的中断处理的一些说明
1、中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚上。然后再由中断控制器向处理器发送相应的信号。处理器一经检测到此信号,便中断自己的当前工作转而处理中断。此后,处理器会通知操作系统已经产生中断,这样,操作系统就可以对这个中断进行适当的处理了。 2、不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标识。中断值通常被称为中断请求(IRQ)线。有些中断值是指定的,有些
2013-01-31 17:35:14 299
转载 Linux 守护进程的编程方法
Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程,它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件,它唯一接受的命令就是它设计时候规定要扑捉的信号。 守护进程常常在系统引导装入时启动,在系统关闭时
2013-01-31 16:29:10 378
转载 关于fork()函数的作用
(1) 先看一个实例:#include ; #include ; main () { pid_t pid; pid=fork(); if (pid printf("error in fork!"); else if (pid == 0)
2013-01-31 15:51:35 718
转载 关于EXPORT_SYMBOL的用法
linux2.6的“/proc/kallsyms”文件对应着内核符号表,记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表:EXPORT_SYMBOL(符号名); EXPORT_SYMBOL_GPL(符号名) 导出的符号可以被其他模块使用,不过使用之前一定要extern声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。
2013-01-31 15:39:44 512
转载 linu编译系统的Kconfig和Makefile
Linux内核源码树的每个目录下都有两个文档Kconfig和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这个.config,就知道了用户的选择
2013-01-31 15:20:22 415
转载 AIDL 发生异常的原因
我建立了两个project。一个是activity 的 ,一个是service 的。在进行两个project通信时,应该有以下几点注意:1.在activity project中引入service project中aidl文件。注意引入后的aidl文件包名应该和service中aidl文件包名保持一致。2.service project中manifest文件中,service 注册时要声
2013-01-31 14:33:02 721
转载 Linux下常见命令
=============挂载和登陆命令========================================Mount:挂载命令。把存储介质指定成系统中的某个目录,比如挂载光驱mount /dev/cdrom把CDROM挂载,可在目录/mnt/cdrom下查看内容。同样可以挂载盘符,比如mount -t vfat /dev/uba1 /mnt,就可以切换到/mnt目录下查看内容。
2013-01-31 11:42:30 1276
转载 shell编程基础
(1)它必须以如下行开始(必须放在文件的第一行): # !/bin/sh符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh。编辑结束并保存后,如果要执行该脚本,必须先使其可执行: chmod +x filename此后在该脚本所在目录下,输入 ./filename 即可执行该脚本。 (2)变量赋值和引用。Shell编程中,使用变量无需事先声明,
2013-01-31 11:39:42 421
转载 linux之gcc命令
在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为: Gcc [选项] 要编译的文件 [选项] [目标文件]。其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out看一下经典入门程序"Hello World!"# vi hello.c ,编辑如下:[cpp] view plaincopyprint?
2013-01-31 11:30:50 402
转载 container_of()和内核链表中的list_entry()
(1) container_of宏的原始定义是: [cpp] view plaincopyprint?/** * container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: t
2013-01-31 11:17:03 416
转载 mmap函数详解
mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数。原型:#include void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off);int munmap(void *addr, size_
2013-01-31 11:03:48 417
转载 有关likely和unlikely
在linux中判断语句经常会看到likely和unlikely,例如:if(likely(value)){}else{}简单从表面上看if(likely(value)) == if(value),或者if(unlikely(value)) == if(value)。也就是likely和unlikely的用法是一样的,但是实际上执行是不同的,加likely的意识是value的值为
2013-01-31 10:59:41 344
转载 内核空间与用户空间之一:基础概念
(1)Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此Linux的虚拟地址空间也为0~ 4G(32位地址最大访问极限)。Linux内核将这4G字节的空间分为两部分,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF,供各个进程使用,称为“用户空间)。因为每个进
2013-01-31 10:43:58 721
转载 Linux的中断处理:work_struct的使用实例
WM9714的耳机跟喇叭通道切换由寄存器软件控制,跟之前电视里面插入耳机让功放直接拉低关掉外音的方式有点差别。通过设置WM9714的0X1C寄存器的值来切换,其中设置耳机时为0X00A0,设置喇叭时为0X1200。 电路中有外部上拉固定EINT11为高电平,通过插入耳机将这个外中断EINT11拉低来触发中断,再进行WM9714的寄存器控制。首先在WM9713.C中wm9713_soc
2013-01-31 10:19:10 606
转载 Linux中vim的应用技巧
一、显示行号信息 即时命令 :set nu 永久命令 echo “set nu”>>~/.vimrc 二、一个窗口操作两个文档 :sp filename 垂直分割窗口 :vert sp filename 水平分割窗口 Ctrl+w j/k 上下窗口间移动光标 Ctrl+w h/l 左右窗口间移动光标 三、进入vi的命令 vi filename :打开
2013-01-30 16:00:16 292
转载 MTK Android滑盖或翻盖处理驱动
1.MTK中添加一个驱动。代码位置:mediatek/platform/mt6573/kernel/driver/要添加的目录/2.进入目录添加:slide.c 和 Makefile其中Makefile的内容如下:obj-$(CONFIG_MTK_SLIDE) := slide.o3.再进入目录:mediatek/config/viroyal73_wg/autoconfig/Kco
2013-01-30 14:02:37 597
Android 框架开发视频
2018-10-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人