自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(477)
  • 资源 (1)
  • 收藏
  • 关注

原创 Makefile的基本语法

Makefile的基本语法结构是:目标:依赖命令目标是我们想要得到什么,依赖表示得到目标需要什么,命令指明具体如何通过依赖生成目标。make可以指定伪目标,他们不生成具体的东西,利用他们可以实现比如生成多个目标或者执行指定命令的工作。...

2021-06-17 23:11:33 505

原创 shell 中获取字符串长度

在 Shell 中获取字符串长度很简单,具体方法如下:${#string_name}string_name 表示字符串名字。

2021-02-22 18:19:21 646

转载 linux msm dts加载分析

MSM8974 上DeviceTree设备描述源文件放在”kernel/arch/arm/boot/dts/”下后缀是”.dts”或”.dtsi”,一般”.dtsi”是被其它文件包含的,只用dtc编译”.dts”文件。Build时会用”dtc”命令把需要的设备描述文件编译成”.dtb”文件,并放到到bootimage的某个地方。对设备描述的解析处理实现主要在”kernel/drivers/of...

2018-08-09 09:37:57 986

转载 taglist属性设置

配置 介绍常用的taglist配置选项,你可以根据自己的习惯进行配置:  - Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用此选项设置一下;- 如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;- 设置Tlist_Sor...

2018-08-07 12:15:56 1185

转载 VIM关于winmanager中FileExplorer窗口大小的问题

Vim时,用winmanager时,FileExplorer窗口经常会自动变小,有时甚至会被Taglist窗口压缩得看不见。可以通过如下设置解决 设置taglistbuffer的最高限制: let g:bufExplorerMaxHeight=30 如果有minibuffer插件还需要设置:let g:miniBufExplorerMoreThanOne=0 这...

2018-08-07 09:56:46 652 1

转载 vim 插件之winmanager

winmanager是vim下管理窗口的插件,可以管理文件浏览器、缓冲区、taglist等窗口。在.vimrc中增加下面两句:"let g:winManagerWindowLayout = "BufExplorer|FileExplorer|TagList"letg:winManagerWindowLayout='FileExplorer|TagList'nmap wm :WMTog...

2018-08-07 09:55:30 7197

原创 删除一个node或者属性

1、删除Node删除节点的语法如下: /delete-node/ 节点名;以一个例子介绍如何删除设备节点。注意:(1)/delete-node/与节点名之间有空格。(2)如果节点中有地址信息,节点名后也需要加上。EVB板中的内存配置是2GB:DDR0 1GB + DDR1 1GB xxxx.dtsi,    memory_DDR0@80000000 {        d...

2018-08-05 15:29:46 4531

原创 修改vim配色方案

1、系统自带的vim配色方案放在/usr/share/vim/vim74/colors/里。2、输入":colorscheme"即可查看当前的配色方案。3、修改配色方案 (1)全局修改,在.vimrc文件中添加设置"colorscheme 配色方案名"。 (2)局部修改,在打开的vim中输入":colorscheme 配色方案名"命令,可临时更改配色方案,退出vim失效。4、安装自定义的配...

2018-03-23 10:32:40 1485

原创 Nano编辑器

1.在Linux操作系统中,有很多的文本编辑器,最为重要的就是vi文本编辑器,下面来介绍一个简单的nano文本编辑器。2.nano的使用简单,我们可以直接加上文件名就能够打开一个旧文件或新文件,我们可以打开一个旧文件编辑它,也可以打开一个新文件,即不管这个文件存不存在都是可以打开的!(1).下面,我们在终端输入命令nano xg.txt后,如下图所示:从上图可以看到,第一行是在声明nano的版...

2018-03-20 11:19:35 396

原创 修改git默认的编辑器

git默认的编辑器为nano,不常用,需要修改为vim,方法如下:打开.git/config文件,在core中添加 editor=vim即可。或者运行命令 git config –global core.editor vim 修改更加方便。...

2018-03-20 11:17:25 33617 1

原创 /system/bin/r读取gpio寄存器

/system/bin/r是高通提供的一个工具,用于读取gpio寄存器。如果想使用这个工具,必须在kernel defconfig文件中设置宏CONFIG_DEVMEM=y,重新编译烧写内核。使用方法如下:/system/bin/r register_gpiomsm8998/sdm660以前QCOM 平台 GPIO 地址是连续的,gpioN cfg register 地址是:

2018-01-23 10:00:55 2815

原创 git config 查看配置信息

config 配置指令1git config  config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system-》global-》local  底层配置会覆盖顶层配置 分别使用--system/global/local 可以定位到配置文件 

2018-01-16 10:54:38 118621

原创 git创建新分支时提示refname ambiguous

在使用git创建分支的时候,出现了一下面的问题,报错:warning: refname 'version_13_10_10' is ambiguous. 竞然说改名模糊,于是换个别的名字,newbranch也不行,查了下,说需要改名字,即需要把这个名字改掉,才能再创建分支,改了名字之后,果然是可以的,改名如下:git branch -m 旧名字 新名字

2018-01-10 13:42:01 25155 1

转载 surfaceflinger和Vsync

android44中的实现整体流程HWComposer对象的建立EventControlThread闸刀的建立DispSync和DispSyncThreadDispSyncSource和EventThread完整走一遍android 4.1一个很大的更新是Project

2018-01-10 10:30:18 957

原创 vsync event处理过程总结

1、对vsync event感兴趣的对象有两个,一个是SF,另外一个是APP。2、kitkat对vsync进行虚拟化,引入dispsync模型,输出两个带有相位偏移的vsync分别供SF和APP使用。3、hwc将HW vsync event传递给SF,SF交给dispsync模型进行处理。 dispsync模型通过eventlistener的回调函数(onDispSyncEvent)将处

2018-01-09 16:50:23 769

转载 BufferQueue

1.BufferQueue内部原理BufferQueue是IGraphicBufferProducer服务器端的实现;所以BufferQueue会重载IGraphicBufferProducer接口中的各个虚函数queueBuffer,requesBuffer,dequeueBuffer等,该类内部还有一个mSlots[NUM_BUFFER_SLOTS];1.1 mSl

2018-01-09 15:00:30 743

原创 Android的原子操作函数

1.原子变量的加法操作 int32_t android_atomic_add(int32_t value, volatile int32_t* addr); 原子变量的减法操作可以通过传递负值给加法操作函数来完成。2.原子变量的自增和自减操作 int32_t android_atomic_inc(volatile int32_t* addr); int32_t android

2018-01-09 11:00:51 1999

原创 VSync信号的虚拟化

Android 4.1(Jelly Bean)引入了Vsync(Vertical Syncronization)用于渲染同步,使得App UI和SurfaceFlinger可以按硬件产生的VSync节奏来进行工作。                                                   图1 VSync模型

2018-01-08 16:06:53 986

原创 SurfaceFlinger服务的入口

SurfaceFlinger服务是一个可执行程序,其入口函数在main_surfaceflinger.cpp的main函数中,如下:int main(int, char**) { signal(SIGPIPE, SIG_IGN); // When SF is launched in its own process, limit the number of // binde

2018-01-03 10:19:42 437

转载 AndroidN Surfaceflinger

GOP:Graphic Output PatheFXSurfaceNormal:createNormalLayereFXSurfaceDim:createDimLayer相关Path:frameworks/base/core/jniframeworks/base/core/jni/Android/graphicsframeworks/base/core/jni/andro

2018-01-03 09:45:07 337

转载 VIM之高亮光标所在的行列

基本设置设置高亮行和列有两种方式进行设置:set cursorcolumnset cursorline" orset cucset cul按 Ctrl+C 复制代码我建议使用第一种方式,这样可以看到配置就能知道是干什么用的了,同时再加上注释,因为随着配置越来越多,最后自己可能都忘了这些配置是用来干嘛的了。美化我们现在已经能快速的分别光标所在的位置了,但是离我们最终需

2017-12-15 11:27:25 7177 1

原创 vim之spellchecking

vim中内置了拼写检查功能,在终端中使用简单的命令就可以开启和关闭拼写检查功能。如果单词拼写错误,单词下面会有红色波浪线打开拼写检查::set spell关闭拼写检查::set nospell

2017-12-15 11:20:16 618

原创 vim设置配色方案

1、在.vim目录下新建一个叫 colors 的目录,用于存放配色方案文件xxxx.vim。2、下载配色方案,并放到新建的colors目录。3、在.vimrc中设置配色方案: colorscheme xxxx

2017-12-15 10:25:35 633

转载 vimrc选项

.vimrc是vi的启动配置文件,可以在其中设置很多启动参数,网上可以找到很多人写的各种.vimrc文件,下面有我用的一个简单的.vimrc文 件。 6. 我的.vimrc文件:set encoding=gb2312 syn on " 打开语法高亮set guifont=Luxi/ Mono/ 9 " 设置字体,字体名称和字号set tabstop=

2017-12-15 09:02:14 273

转载 sysinfo函数使用方法

Linux中,可以用sysinfo来获取系统相关信息。Linux中,sysinfo是用来获取系统相关信息的结构体。函数声明和原型:#include int sysinfo(struct sysinfo *info);结构体信息:在Linux 2.3.16中,结构体的信息是(单位是字节):[cpp] view plain copy

2017-12-12 14:06:18 2059

原创 像素与毫米的转换

(1)DPI(每英寸多像素点数)(2)一英寸等于25.4mm(3)象素数 / DPI = 英寸数(4)英寸数 * 25.4 = 毫米数毫米换算成像素的公式为 水平方向的换算:x = w * dpix /25.4垂直方向的换算:y = h * dpiy /25.4像素换算为毫米的公式为水平方向的换算:w = x * 25.4 / dpix垂直方向的换算:h = y * 25.

2017-12-12 10:52:46 6020

转载 vim关闭子窗口

:qall -- 关闭所有窗口,退出vim。:wall -- 保存所有修改过的窗口。:only -- 只保留当前窗口,关闭其它窗口。(CTRL-W o):close -- 关闭当前窗口,CTRL-W c能实现同样的功能。 (象 :q :x同样工作 )

2017-12-12 09:35:14 4852 1

转载 vim缓冲区

:buffers或:ls或:files 显示缓冲区列表。ctrl+^:在最近两个缓冲区间切换。:bn -- 下一个缓冲区。:bp -- 上一个缓冲区。:bl -- 最后一个缓冲区。:b[n]或:[n]b -- 切换到第n个缓冲区。:nbw(ipeout) -- 彻底删除第n个缓冲区。:nbd(elete) -- 删除第n个缓冲区,并未真正删除,还在unlisted列表中。:ba[l

2017-12-12 09:33:52 418

转载 vim跳跃指令 (jumps)

跳跃指令类似于游览器中的按钮 CTRL-] -> 跟着link/tag转入 (follow link/tag) CTRL-o -> 回到上一次的jump (go back) CTRL-i -> 跳回下一个 (go forward) :ju -> 显示所有的可以跳跃的地方 (print jump list)

2017-12-12 09:31:05 1993

原创 CtrlP命令

COMMANDS *ctrlp-commands* *:CtrlP*:CtrlP [starting-directory] Open Ctr

2017-12-07 10:46:19 993

转载 CtrlP 在.vimrc中的配置

改变CTLRP启动默认映射和默认的命令,vimrc中添加let g:ctrlp_map = ''let g:ctrlp_cmd = 'CtrlP'当引用没有明确的开始目录时,CTLRP会按照以下值来设定工作目录let g:ctrlp_working_path_mode = 'ra'‘c’--当前文件的目录‘a’--当前文件的目录,除非它是cwd的子目录‘r’--最近的当前文件,包含

2017-12-07 10:08:16 2572

原创 MRU

MRU的全称为Most Recently Used,直译理解为最近最多用过的,指最近使用较多的文件

2017-12-07 09:51:29 1204

转载 vim中buffer、windows和tab的概念

Vim 中的 window 和 tab 非常具有迷惑性,跟我们平时所说的 “窗口” 和 “标签页” ,是完全不同的两个概念,请看 vimdoc 给出的定义:A buffer is the in-memory text of a file.A window is a viewport on a buffer.A tab page is a collection of windows.123简

2017-12-06 17:07:05 536

原创 phandle一种错误的用法及改正方法

(1)错误代码由于偷懒,直接把从别处拷贝的添加spi设备节点的代码直接拷贝放到了spi总线后面,如下:&soc { spi: spi@xxxxxxxx { compatible = "xxxx"; #address-cells = ; #size-cells = ; }; &spi { spidev@0 { compatible = "rohm,dh2228f

2017-12-05 20:17:32 2353

原创 hw_module_t 加载过程

    每一个HAL模块都有一个ID值,以这些ID值为参数来调用硬件抽象层提供的函数hw_get_module就可以将指定的模块加载到内存来,并且获得一个hw_module_t接口来打开相应的设备。 函数hw_get_module实现在hardware/libhardware/hardware.c文件中,如下所示:   1. #define HAL_

2017-12-01 15:45:26 1604

转载 HAL Stub框架

HAL stub的框架比较简单,三个结构体、两个常量、一个函数,简称321架构,它的定义在:@hardware/libhardware/include/hardware/hardware.h@hardware/libhardware/hardware.c1. /*  2. 每一个硬件都通过hw_module_t来描述,我们称之为一个硬件对象。你可以去“继承”

2017-12-01 15:26:06 520

原创 input子系统框架

一、输入子系统框架输入子系统由核心层(Input Core)、驱动层和事件处理层(Event Handler)三部份组成,如下图所示,一个输入事件通过 Driver -> InputCore ->Eventhandler -> userspace 的顺序到达用户空间传给应用程序。设备驱动层:将底层的...

2017-11-29 19:22:21 2175

原创 evdev事件处理器数据处理过程

在事件处理层()中结构体evdev_client定义了一个环形缓冲区(circular buffer),其原理是用数组的方式实现了一个先进先出的循环队列(circular queue),用以缓存内核驱动上报给用户层的input_event事件。struct evdev_client {   unsignedint head;

2017-11-29 10:11:02 843

原创 i2c、spi设备展开过程

const struct of_device_id of_default_bus_match_table[] = { { .compatible = "simple-bus", }, { .compatible = "simple-mfd", }, #ifdef CONFIG_ARM_AMBA { .compatible = "arm,amba-bus",

2017-11-27 19:47:04 460

转载 字符设备文件的打开

打开字符设备文件,还是通过 sys_open() 系统调用。在经过一连串的调用后,nameidata_to_filp, 内核会走到 __dentry_open() 函数。在这个函数中,执行了以下代码片段:f->f_mapping = inode->i_mapping;f->f_path.dentry = dentry;f->f_path.mnt = mnt;f->f_pos = 0;f

2017-11-23 20:21:43 567

atmel89s51芯片数码管显示

单片机 atmel89s51芯片 数码管 动态 显示程序

2010-05-05

空空如也

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

TA关注的人

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