自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫不经心

路漫漫其修远兮,吾将上下而求索....

  • 博客(124)
  • 资源 (3)
  • 论坛 (2)

原创 mkimage使用与解包

在最初学习阶段,我们经常使用mkimage来制作uImage和ramdisk,实质是在被处理的文件前面加上64字节的头部。mkimage 制作 uImagemkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n linux-3.0 -d zImage uImagemkimage 制作 ramdisk.i...

2019-09-20 15:13:53 4307

原创 Android Binder 修炼之道(四)Binder 系统C++ 发送数据过程以及Server注册服务处理数据的过程

本节分析发送数据过程以及Server注册服务处理数据的过程1#define LOG_TAG "CalculateService"2//#define LOG_NDEBUG 034#include 5#include 6#include 7#include 8#include 9#include 10#include 11#include 1213#include "ICalcula

2017-08-12 11:07:24 1383

原创 Android Binder 修炼之道(三)Binder 系统C++实现 BpXXX代理类分析

在 Binder 系统中,分为 Client ServiceManager Server 三部分,C++是面向对象的语言,因此,这三者对应三个类的实例。ServiceManager 由 Android系统实现,我们只需要实现我们自己的 client 和 Server 类即可。    在 Binder 系统 C 的实现中,我们的 Client 和 Server 都实现了 sddone 和 r

2017-08-10 22:43:30 1340

原创 Android Binder 修炼之道(二)Client Server 实例

前面一节,分析了 Binder 系统中的骨架,了解了 Client ServiceManager Server 三者之间的关系,重点针对 ServiceManager 分析了服务的注册过程以及查询过程。本节,将重点放在实现一个简单的 Server 和 Client ,加深对于代码的理解。首先是 Server:我们要向 ServiceManager 注册 1 个 calcul

2017-07-29 15:26:57 908 1

原创 Android Binder 修炼之道(一)框架分析

在 Android 系统中含有大量的进程间通讯,Android 系统的开发人员为了进程间通讯使用起来更方便,在Linux内核里搞了一个 Binder 驱动,然后利用这个 Binder 驱动进行一些进程间的数据传输。在 Android 中对如何使用 Binder 驱动进行了封装,有C版本,也有C++和JAVA版本,将它们统称为 Binder 系统。有了这些封装之后,使用者只需要调用固定的接口,便可以

2017-07-28 09:45:22 1146

原创 Android init.rc on property

在 init.rc 中,可以见到下面类似的用法,当一个属性值等于XX时,触发下面的事件,比如启动一个进程on property:sys.init_log_level=*    loglevel ${sys.init_log_level}那么它是如何实现的,启动时触发一次?还是任何时刻只要属性值满足条件就触发? 实验验证结果:1、启动时,如果属性满足设定条件会触发一次

2017-07-26 23:04:32 6394

原创 Android 5.1 截屏事件分析(Power + VolumeDown)组合键分析

为了实现组合键启动app的功能,参考了Android中截屏事件的处理流程,实现同时按下Power+音量增键启动电阻屏校准App的功能,下面是Android 代码中关于截屏按键部分的处理代码简要分析:    安卓5.0代码中,同时按住power键和音量-键一会可触发截屏事件PhoneWindowManager.java (base\policy\src\com\android\i

2017-07-24 17:22:00 2607

原创 电阻屏校正 tslib 五点校正算法

#include struct calibration { int x[5]; int y[5]; int xfb[5]; int yfb[5]; int a[5];};struct calibration cal;int perform_calibration(struct calibration *cal) { int j; float n

2017-07-22 12:51:19 3966 1

原创 固定 event 节点

相信与Linux驱动打交道的人都会遇到这样一个问题,由于插入Input设备的时机不同,导致内核每次创建 event 节点未必一样,给应用程序的参数设置带来困难,比如qt设置环境变量。如何做到无论啥时候插拔设备 event 节点都固定下来?网上有改内核的做法,修改event节点创建部分的代码能够解决问题,但是换个设备就白瞎了,而且对内核开刀总是显得不太优雅。解决思路: 

2017-07-07 15:53:45 1126 1

原创 Android backlight

frameworks\base\services\core\java\com\android\server\power\PowerManagerService.javapublic final class PowerManagerService extends SystemService implements Watchdog.Monitor {    ...

2017-06-18 21:38:59 1420

原创 Android lights system

Android 中的灯光子系统采用的是硬件访问服务框架,JNI 层的文件是 com_android_server_lights_LightsService.cpp (frameworks\base\services\core\jni)Java 程序通过 JNI 调用 setLight_native 来控制背光、通知灯、电池灯灯。 Java: frameworks/base/

2017-06-13 21:17:48 1243

原创 Android 修改 init.rc

Android 根目录下可以看到 init.rc ,但是却无力修改,改了也白瞎,重启就恢复了,ramdisk....init.rc 是 rootfs 中的文件,Android 将 rootfs(initramfs) link 到 linux kernel image 中,生成正常启动的boot.img, recovery 模式的 recovery.img.Android 每

2017-06-13 19:48:37 5659

原创 Android led_class driver

Linux的led class驱动echo 255 > /sys/class/leds/led1/brightnesscat /sys/class/leds/led1/brightnesscat /sys/class/leds/led1/max_brightness闪烁echo timer > /sys/class/leds/led1/trigger

2017-06-11 21:13:10 1046

原创 Android 消息处理机制——线程通信

package com.example.hasee.androidmsg;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.os.Handler;import android.os.Looper

2017-06-11 16:45:26 415

原创 Android 硬件访问服务

怎么实现硬件访问服务1、JNI和HALcom_andorid_server_ledService.cpphal_led.c2、修改onload.cpp 调用 com_andorid_server_ledService.cpp 实现的函数3、修改systemServer.java    new ledService & addService

2017-06-10 22:59:22 479

原创 Android JNI

什么是JNI,Java Native Interface ,Java 本地调用。Java 虽然具有跨平台的特性,但是Java和具体的平台之间的隔离是通过JNI层来实现的,Android 中 Java 通过 JNI 层调用 Linux 中的接口来实现对应的功能。JNI 层一般是由 C C++ 文件编写。Java 程序1、加载对应的JNI库,同行的做法是放在类的 sta

2017-06-10 18:45:22 1298

原创 设备树学习之(十三)电容触摸屏驱动

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25友善之臂提供的资料中,触摸屏驱动采用的是一线触控,但是保留了i2c接口,驱动芯片为FT5406,本文主要实现 i2c 接口的

2017-02-16 18:05:51 5447 1

原创 第十章 内核同步方法

原子操作原子正数操作定义一个 atomic_t 类型的数据方法很平常,你还可以在定义它时给它设定初值:atomic_t v; //定义vatomic_t u = ATOMIC_INIT(0); //定义u并把它初始化为0atomic_set(&v, 4); //v = 4 atomic_add(2, &v);

2017-02-04 19:44:02 592

原创 第九章 内核同步介绍

临界区所谓临界区就是访问和操作共享数据的代码段。多个执行线程并发访问同一个资源通常是不安全的,为了避免在临界区中并发访问,编程者必须保证这些代码原子的执行——也就是说,操作在执行结束前不可被打断,就如同临界区是一个不可分割的指令一样。竞争如果两个执行线程有可能处于同一个临界区中执行,那么这就是程序的一个Bug,如果这种情况确实发生了,我们就称它为竞争条件。同步避免并发和防止竞争条件称为同步。内核同步

2017-02-04 18:43:59 493

原创 第八章 下半部和推后执行的工作

上半部的局限性:中断处理程序以异步方式执行,并且它有可能打断其他重要代码(甚至包括其他中断处理程序)的执行,因此中断处理程序应该越快越好。如果当前有一个中断处理程序正在执行,在最好的情况下(如果IRQF_DISABLED没有被设置),与该中断同级的其他中断被屏蔽,在最坏的情况下(设置了IRQF_DISABLED),当前处理器上所有其他中断都会被屏蔽。因为禁止中断后硬件与操作系统无法通信,因此,中

2017-02-02 20:24:24 533

原创 第七章 中断和中断处理

什么是中断中断本质上是一种特殊的电信号,由硬件设备发向处理器,处理器接收到中断后,会马上向操作系统反应此信号到来。硬件设备产生中断的时候并不考虑处理器的时钟同步,因此中断是异步的,换句话说中断随时可能产生。什么是异常异常一般由处理器本身引起(异常是同步中断),比如运算中的除0操作。中断处理程序——中断上下文、原子上下文中断处理程序与其他内核函数的真正区别在于,中断处理程序是被内核调用来相应中断的,而

2017-02-01 21:46:41 702 1

原创 第五章 系统调用

什么是系统调用系统调用在用户进程和硬件设备之间添加了一个中间层。该层的作用有三个:首先,它为用户空间提供了一种硬件抽象接口,举例来说,当需要读写文件的时候,应用程序就可以不去管磁盘类型和介质,甚至不用去管文件所在的文件系统是那种类型。第二,系统调用保证了系统的稳定和安全。作为硬件设备和应用程序之间的中间人,内核可以基于权限、用户类型和其它一些规则对需要进行的访问进行裁决。第三,每个进程都运行在

2017-02-01 21:34:15 453

原创 第四章 进程的调度

1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间 此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断。总之,调度是一个平衡的过程。一方面,它要保证各个运行的进程能够

2017-01-31 22:15:30 541

原创 第三章 进程管理

1、进程和线程  进程就是出于执行期的程序,但进程并不仅仅局限于一段可执行代码。通常还要包括其它资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存空间地址及一个或多个执行线程,当然还包括用来存放全局变量的数据段等。   执行线程,简称线程,是在进程中活动的对象,每个线程拥有独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程,而不是进程。   对 L

2017-01-31 22:01:38 474

原创 第二章 从内核出发

内核开发的特点:内核编程时既不能访问 C 库,也不能访问标准的 C 头文件。内核编程时必须使用 GNU C。内河编程时缺乏像用户空间的那样的内核保护机制。内核编程时难以执行浮点数运算。内核给每一个进程只有一个很小的定长堆栈。由于内核支持异步中断、抢占和 SMP,因此必须时刻注意内核同步和并发。要考虑可移植性的重要性。1、无 libc 库抑或无标准头文件  对内核来说完整的 C 库——

2017-01-30 16:40:41 448

原创 第一章 Linux内核简介

1.1 Unix 特点Unix 很简洁,不像其他动辄几千个系统调用并且设计目的不明确的系统,Unix 仅仅提供几百个系统调用并且有一个非常明确的设计目的。Unix 中所有的东西都被当作文件对待。Unix 内核和相关的系统工具软件是用 C 语言编写而成。Unix 进程创建非常迅速,并且有一个非常独特的 fork()系统调用。1.2 Linux 简介Linux 是类 Unix 系统,但它不是

2017-01-30 16:32:58 703

原创 设备树学习之(十二)LCD驱动

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25参考:tiny4412LCD驱动加字符显示1、背光   友善之臂的该款LCD采用了一线触控技术,包括背光控制也集成在一线触控之

2017-01-26 10:16:46 5994 11

原创 学习设备树之(十一)Backlight

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 由于 tiny4412 的lcd背光控制采用的一线触控,并不开源,因此移植友善自带的linux3.5 内核中的背光相关

2017-01-15 22:57:27 1810

原创 设备树学习之(十)spi flash

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 驱动外接的8M的 spi flash,注册为块设备。设备树:&spi_0 { status = "ok

2017-01-15 22:30:38 3274

原创 设备树学习之(九)SPI设备注册过程

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 同 i2c 一样,分析 spi 设备的注册过程,其实是一模一样的。int spi_register_master(st

2017-01-15 22:23:02 5679 1

原创 设备树学习之(八)eeprom

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 驱动 tiny4412 底板上的 i2c eeprom ,使用字符设备进行读写。原理图: 设备地址为

2017-01-15 22:15:30 1550 1

原创 设备树学习之(七)I2C设备的注册过程分析

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 设备树中普通的节点都被注册为平台设备驱动中的“设备”,也是注册到 platform_bus_type 的,但是 i2c

2017-01-15 21:50:18 5591 1

原创 设备树学习之(六)RTC

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: Linux4.4 中已经对 tiny4412 rtc 有了支持,但是使能设备树之后启动报错,简单修改,使 rtc 正常

2017-01-15 21:05:45 1516

原创 设备树学习之(五)watchdog

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 学习设备树中普通中断的表示方法。设备树参考: watchdog: watchdog@10060000 {

2017-01-15 20:59:18 1761 1

原创 设备树学习之(四)ADC 又见中断

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 在第一篇文章中,学习了在设备树中增加GPIO资源,在代码中转为对应的中断,本文目标学习在设备树中直接使用中断资源

2017-01-15 18:57:06 1735

原创 设备树学习之(三)Clock

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 学习设备树中 Clock 的使用,使能 PWM CLOCK 输出 PWM 脉冲,写简单的字符设备驱动程序,使蜂鸣

2017-01-15 18:37:29 4865

原创 设备树学习之(二)点灯

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 学习设备树中GPIO控制器的使用,实现配置引脚为输出功能,写简单的字符设备驱动程序,实现点亮LED。原理图:

2017-01-15 18:16:31 3531 1

原创 设备树学习之(一)GPIO中断

开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25目标: 学习设备树中GPIO资源的使用,实现按键中断简单驱动程序。原理图: tiny4412 底板上有4颗

2017-01-15 17:25:37 9903

原创 设备树学习文章分享

分享一下学习设备树过程中看过的文章,写的都非常好,是难得的设备树学习资料。另外,有个内核开发者讲的设备树也非常好,视频有1小时20多分钟,只不过他语速太快了,接受不了,但是ppt还是不错的,可以谷歌一下Device Tree for Dummies    * Device tree 背景介绍 * Device Tree Usage翻译 * 设备树解析过程 * 基于tiny4412的Linu

2016-12-23 20:41:22 2435

原创 ath9k usb wifi 网卡驱动浅析

ieee80211  802.11协议簇是国际电工电子工程学会(IEEE)为无线局域网络制定的标准。概述nl80211: 用于对无线设备进行配置管理,它是一个基本Netlink的用户态协议(User态)cfg80211: 用于对无线设备进行配置管理。与FullMAC, mac80211和nl80211一起工作。(Kernel态)mac80211: 是一个driver开发者可用于为SoftMAC

2016-12-15 23:06:54 4012 1

LINUX设备驱动程序第三版配套源码

LINUX设备驱动程序第三版配套源码

2014-08-28

tny4412_12.16.patch

tiny4412-1506 版本的uboot 补丁

2016-12-16

dnw_fastboot_for2440

适用于2440平台的fastboot源码,同时含有 dnw 源码,superboot 部分实现代码,有详细注释便于学习,建议先看dnw代码再看fastboot

2016-12-11

Linux学习之路的留言板

发表于 2020-01-02 最后回复 2020-01-02

UVCVIDEO驱动 默认像素问题

发表于 2014-09-16 最后回复 2014-09-16

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