自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (2)
  • 收藏
  • 关注

转载 git pull更新错误解决办法

Your local changes to the following files would be overwritten by mergeerror: Your local changes to the following files would be overwritten by merge:        protected/config/main.phpPlease,

2016-02-23 10:16:29 642

转载 Android开发者网址导航

Android开发者网址导航字数330 阅读8653 评论13 喜欢160  随着Android开发越来越庞大,Android的开源项目、开发资源越来越多,作为需要不断学习的程序猿,每天浏览的技术文章也是不少,但目前为止没有看到一个比较满意的Android开发者网址导航,找资料的时候很麻烦,这是我整理的自己经常浏览的开发者网站,分享给大家。官网Android

2015-12-28 11:12:36 513

转载 git add详解

版权声明:本文为博主原创文章,未经博主允许不得转载。一、前言git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。二、基本git add 表示 add to index only files created or modified and not those deleted 我通常

2015-12-08 15:24:40 555

原创 工作队列(workqueue) create_workqueue/schedule_work/queue_work

项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlo

2015-11-07 18:04:31 1431

转载 spin_lock & mutex_lock的区别? .

本文由该问题引入到内核锁的讨论,归纳如下为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v加1原子操作比普通操作效率要低,因此

2015-11-07 17:48:57 590

转载 Linux的原子操作与同步机制

并发问题现代操作系统支持多任务的并发,并发在提高计算资源利用率的同时也带来了资源竞争的问题。例如C语言语句“count++;”在未经编译器优化时生成的汇编代码为。当操作系统内存在多个进程同时执行这段代码时,就可能带来并发问题。假设count变量初始值为0。进程1执行完“mov eax, [count]”后,寄存器eax内保存了count的值0。此时,进程

2015-11-07 17:41:29 410

转载 i++与++i哪个效率更高?

答案:在内建数据类型的情况下,效率没有区别;在自定义数据类型的情况下,++i效率更高! 分析:(自定义数据类型的情况下)++i返回对象的引用;i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。(重载这两个运算符如下)class Integer{public:    Integer(long data):m

2015-09-21 15:35:58 1070

原创 背光驱动内核层及驱动层分析

一些重要的结构体:struct mt65xx_led_data {         structled_classdev cdev;         structcust_mt65xx_led cust;         structwork_struct work;         intlevel;         intdelay_on;         intd

2015-09-10 17:59:35 1498

转载 android中的背光驱动层次分析

2013-06-17 16:28 287人阅读 评论(0) 收藏 举报目录(?)[+]Android的SettingAndroid的背光JNI层Android的背光HAL层Linux的背光内核层Linux的背光驱动层总结其实Android的底层就是Linux,所以其驱动本质就是Linux驱动,但是这些Linux驱动是服务上层Android的,所以需遵循上

2015-09-10 17:57:17 1313 1

原创 HAL层开发框架介绍

Android HAL层即硬件抽象层是Google响应厂家“希望不公开源码”的要求推出的概念1,源代码和目标位置源代码: /hardware/libhardware目录,该目录的目录结构如下:/hardware/libhardware/hardware.c编译成libhardware.so,目标位置为/system/lib目录Android.mk中lib文件默认使用LOCAL_

2015-09-04 22:02:52 554

转载 uart arm9

在没有引入UART之前,由于没有OS,我们写程序烧到开发板内执行后,并不能在程序的运行过程中打印一些提示信息告诉我们程序究竟运行了如何或者提供接口让用户去控制程序的运行路径,最后也只能通过物理现象去判断程序是否执行成功。 使用串口我们便可以实现开发板最基本的数据的发送和接收,实现同开发板的交互,控制程序的运行,并且在程序运行中打印出一些信息进行debug。实际上bootloader

2015-08-31 14:15:37 500

转载 ARM9(S3C2440)时钟与定时器

时钟概念一、时钟脉冲:一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。二、时钟频率:单位时间(如一秒)内产生的时钟脉冲个数。           时钟作用         时钟信号时时序逻辑(如一些芯片要一定的延时时间才能工作)的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中众多的晶体管都工作在开关状态,他们的导通和关断动作无不是按照时钟信号的节奏

2015-08-31 11:24:38 1159

原创 arm中断体系结构

http://blog.chinaunix.net/uid-28458801-id-3780127.htmlCPU一上电就处于 ARM 状态。    如果对于arm的CPU的工作模式和状态有疑惑: ** ARM处理器的寄存器,ARM与Thumb状态,7中运行模式     如果对arm刚上电的工作模式和状态有疑惑:**arm 上电或复位时的状态,模式 ARM异

2015-08-31 10:35:39 577

转载 NAND FLASH控制器

摘自:《嵌入式Linux应用开发完全手册》——韦东山一、NAND Flash介绍和NAND Flash控制器的使用NAND Flash在嵌入式系统中的作用,相当于PC上的硬盘常见的Flash有NOR Flash和NAND Flash,NOR Flash上进行读取的效率非常高,但是擦除和写操作的效率很低,容量一般比较小;NAND Flash进行擦除和写操作的效率更高,并且容量

2015-08-29 17:40:37 1979

原创 mmu内存管理单元

ARM MMU页表框架先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级页表有4096个item,每个item占4个字节,所以一级页表的大小为16KB,而在第一级页表中的每个entry的最低2bi

2015-08-29 16:39:06 539

原创 ARM9------ 存储控制器

初入领悟:1、 bank、L-bank的概念2、 s3c2440内部管理SDRAM寄存器配置 Frist part:原理分析S3c2440为32位微处理器,其可访问空间为4G;但其中提供1G外设访问空间,这1G空间有8个bank组成;及平均每个bank有128M的访问空间;其中8bank的特性为:1、 bank0~bank5支持外接SRAM、ROM等

2015-08-23 01:17:28 599

原创 uboot系列之-----顶层Makefile分析(一)

ALL += $(obj)u-boot.srec $(obj)u-boot.bin$(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)all:              $(ALL)当用make命令编译时,执行的就是这个all变量$(obj)u-boot.hex:         $(obj)u-boot        

2015-08-18 20:20:57 491

原创 linux之sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] ‘command’ 输入文本        常用选项:        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般

2015-08-15 15:21:23 288

原创 android 编译共享ccache的缓存

1. android自带的ccache版本(2.4版本)过低,是无法支持以上的功能的,需要使用新版ccache。2. 最新的ccache请到http://ccache.samba.org/download.html下载3. 下载解压之后,在linux底下进入ccache目录,运行:  ./configure  ./make  ./strip --strip-all ccache

2015-08-15 13:32:25 406

转载 linux设备树dts移植详解

【转】摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot 和Linux 内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分析了U-Boot 对扁平设备树的支持设置,Linux 内核对设备树的解析流程。关键词:扁平设备树; DTS; PowerPC; Linu

2015-08-14 18:24:29 745

原创 chown

改变文件的拥有者:chown本文所属图书 > Linux系统命令及Shell脚本实践指南全书共计18章,从知识结构上分为三部分。第一部分为前8章,全面介绍了Linux的基础知识和常用命令;第二部分为第9章和第10章,主要是Linux下交互和非交互编辑器的使用;第三部分为第11~18章,主要是Shell脚本开发  立即去当当网订购该命令用来更改

2015-07-27 09:23:42 460

转载 ARM裸机程序研究 - 编译和链接

1. Linux下的二进制可执行文件。    如果世界很简单,那么二进制可执行文件也应该很简单,只包括CPU要执行的指令就可以了。可惜,世界并不简单……。Linux下的二进制可执行文件(以下简称可执行文件),也并不是只包括了指令,还包括了很多其他的信息,比如,执行需要的数据,重定位信息,调试信息,动态链接信息,等等。 所有这些信息都按照一个预定的格式组织在一个可执行文件里面。Linux下叫

2015-07-23 21:31:32 597

原创 Linux Input子系统之第一篇(input_dev/input_handle/input_handler)

Input子系统是linux kernel中与部分外围器件驱动联系比较紧密的模块,常用于Sensor,TP(touch panel),power key等器件的驱动。这类模块有个共同特点:字符设备,且数据量都不大,比如sensor一般最多只有xyz三个维度的数据。      整体来看,Input子系统有一个主线,那就是题目中这三个结构体的关系(下面简称为三方关系),input_dev对应于实际

2015-07-03 09:09:58 591

原创 通过NFS启动自制的网络文件系统遇到的问题总结

在此要特别感谢技术上的发烧友们提供的帖子给我的帮助,搞了整整一天终于搞定了。    搭建好开发环境后,内核镜像烧写,flash的分区全部都弄好了,ubi文件系统备好了,准备通过NFS方式启动,它妹的出现了如下的问题。     Looking up port of RPC 100003/2 on 192.168.0.199    rpcbind: server 192.1

2015-06-27 16:34:35 840

原创 makefile中的patsubst

1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makef

2015-06-02 20:35:25 440

原创 一些shell命令

select 表达式是一种bash的扩展应用,动作包括:   (1)、自动用1,2,3,4列出菜单 (没有echo指令,自动显示菜单)   (2)、自动read输入选择 (没有 read指令,自动输入)   (3)、赋值给变量  (没有赋值指令,自动输入数字后,赋值字符串给变量)1、   select典型例子[macg@machome ~]$ vi

2015-06-01 15:55:51 366

转载 linux2.6内核,如何指定内核启动参数

前两天调试加载文件系统时,由于cfe中参数写不进去,直接在内核中写死参数,碰到一个问题:static int __init init_setup(char *str){unsigned int i;execute_command = str;/** In case LILO is going to boot us with default command l

2015-05-31 10:06:46 395

转载 static char __setup_str_##unique_id[] __initdata __aligned(1) = str

__setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下:#define __setup(str, fn) \__setup_param(str, fn, fn, 0)#define __setup_param(str, unique_id, fn, early) \static char __setu

2015-05-31 10:01:57 530

原创 MTK手机皮套驱动实现驱动代码分析

平台:MTK6592,KK修改文件路径:alps\bird\custom\1481G\kernel\touchpanel\GT9158\gt9xx_driver.c代码分析:#if KPD_HAS_FLIP_FUN#define GET_KPD_FLIP_KEY _IOR('k', 35, int)#endif#if KPD_HAS_FLIP_F

2015-04-17 17:57:41 1778

原创 高精度定时器hrtimer使用示例

平台:MTK_android_KK_1483M_W503_mt6582touch_panel_gt9158_hotknot驱动里面添加部分如下:#include #define GT9158_kthread_hrtimer_zhubing 1#if GT9158_kthread_hrtimer_zhubingstatic struct hrtimer GT915

2015-04-01 16:45:18 1549

转载 什么是sys文件系统

1. 什么是sysfssysfs是Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计从 proc 中吸取了很多教训。2. sysfs 与 /sys

2015-03-30 20:07:53 1802

转载 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()

1. 字符设备结构体  内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下:   static struct char_device_struct {       struct char_device_struct *next;    // 指向散列冲突链表中的下一

2015-03-30 19:05:22 807

原创 android5.0充电驱动学习

驱动流程分析(battery_common.c):/* Integrate with NVRAM */ret = alloc_chrdev_region(&adc_cali_devno, 0, 1, ADC_CALI_DEVNAME);//字符设备的注册,register_chrdev_region(dev_t first,unsigned int count,char *na

2015-03-30 16:37:42 1107

原创 device_create详解

在驱动程序中初始化入口函数中,向内核注册一个设备后,往往要注册一个类例如static int __init mydriver_init(void) //驱动程序的初始化{     ……    MYDRIVER_Major = register_chrdev(0, DEVICE_NAME, &mydriver_fops); //向内核注册一个设备,返回值为注册的主设备号   

2015-03-30 15:03:09 614

转载 Linux内核 kthread_run函数 理解学习

Linux内核 kthread_run函数 理解学习[日期:2011-12-04]来源:Linux社区  作者:Linux[字体:大 中 小]最近发现在内核创建线程的时候经常会用到kthread_run()这样的一个调用。于是准备拿出来学习一下。首先看看它的定义之处才发现它是一个宏函数,而不是一个真正意义上的函数。在include

2015-03-30 14:57:35 689

转载 Ubuntu10.04升级到12.04

原来是使用Ubuntu10.04版本,由于工作要求,因为刚刚花了九牛二虎之力下载了android的源代码和编译,所以又不想换系统,就在原系统下升级。由于是用校园网升级速度好慢,又是在虚拟机下,断断续续的更新下载竟然花了几天时间。呵呵~其实直接下载一个最新版本的安装应该还快,不过就当作学习一下吧,也许以后一个系统用久了也要升级。还有就是刚装系统的时候,系统分配的空间不合理,根目录只分配了十几G空间-

2015-02-28 10:50:55 773

转载 Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

2012-10-19 23:05 20192人阅读 评论(21) 收藏 举报目录(?)[+]上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件。内核从2.6.16开始加入了高精度定时器架构。在实现

2015-02-11 11:48:19 498

转载 Linux中的工作队列

Linux中的工作队列2010-10-27 10:09 by wwang, 14181 阅读, 2 评论, 收藏, 编辑工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机

2015-02-10 18:11:13 620

转载 linux中的IIC设备驱动

linux中的IIC驱动很庞大,驱动中随处可见智能手机和平板电脑上用的sensor几乎都是IIC设备,比如:camera,电容触摸屏,重力/加速度sensor,环境光sensor,指南针sensorIIC驱动主要分为Master和Slave,Master就是主机控制器,像S3C2440内部的IIC控制器就是一个MasterSlave就是IIC从机设备

2015-01-17 19:43:54 1128

转载 基于MTK 的 TP 驱动分析

1. 克隆服务器工程源码并切换分支 git clone git@192.168.20.2: mt658292_kk v9 git checkout -b submit_v9_dongxf_tp_modify_v1.0_2014_0910 origin/v6_dev2. TP 硬件分析1)硬件图: 2)硬件管脚:

2015-01-03 21:10:23 3157

DDS之AD9854之中文资料以及代码

包含了DDS之AD9854的中文资料,电路图以及各种配套的测试程序,

2013-08-30

基于STM32的1602液晶驱动程序

基于STM32的液晶驱动程序,对于初学者,是作为检验你GpIO口的一个好的例程

2013-07-30

空空如也

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

TA关注的人

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