- 博客(477)
- 资源 (1)
- 收藏
- 关注
原创 Makefile的基本语法
Makefile的基本语法结构是:目标:依赖命令目标是我们想要得到什么,依赖表示得到目标需要什么,命令指明具体如何通过依赖生成目标。make可以指定伪目标,他们不生成具体的东西,利用他们可以实现比如生成多个目标或者执行指定命令的工作。...
2021-06-17 23:11:33
523
原创 shell 中获取字符串长度
在 Shell 中获取字符串长度很简单,具体方法如下:${#string_name}string_name 表示字符串名字。
2021-02-22 18:19:21
671
转载 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
1026
转载 taglist属性设置
配置 介绍常用的taglist配置选项,你可以根据自己的习惯进行配置: - Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用此选项设置一下;- 如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;- 设置Tlist_Sor...
2018-08-07 12:15:56
1209
转载 VIM关于winmanager中FileExplorer窗口大小的问题
Vim时,用winmanager时,FileExplorer窗口经常会自动变小,有时甚至会被Taglist窗口压缩得看不见。可以通过如下设置解决 设置taglistbuffer的最高限制: let g:bufExplorerMaxHeight=30 如果有minibuffer插件还需要设置:let g:miniBufExplorerMoreThanOne=0 这...
2018-08-07 09:56:46
673
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
7421
原创 删除一个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
4732
原创 修改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
1528
原创 Nano编辑器
1.在Linux操作系统中,有很多的文本编辑器,最为重要的就是vi文本编辑器,下面来介绍一个简单的nano文本编辑器。2.nano的使用简单,我们可以直接加上文件名就能够打开一个旧文件或新文件,我们可以打开一个旧文件编辑它,也可以打开一个新文件,即不管这个文件存不存在都是可以打开的!(1).下面,我们在终端输入命令nano xg.txt后,如下图所示:从上图可以看到,第一行是在声明nano的版...
2018-03-20 11:19:35
412
原创 修改git默认的编辑器
git默认的编辑器为nano,不常用,需要修改为vim,方法如下:打开.git/config文件,在core中添加 editor=vim即可。或者运行命令 git config –global core.editor vim 修改更加方便。...
2018-03-20 11:17:25
34334
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
2844
原创 git config 查看配置信息
config 配置指令1git config config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system-》global-》local 底层配置会覆盖顶层配置 分别使用--system/global/local 可以定位到配置文件
2018-01-16 10:54:38
120464
原创 git创建新分支时提示refname ambiguous
在使用git创建分支的时候,出现了一下面的问题,报错:warning: refname 'version_13_10_10' is ambiguous. 竞然说改名模糊,于是换个别的名字,newbranch也不行,查了下,说需要改名字,即需要把这个名字改掉,才能再创建分支,改了名字之后,果然是可以的,改名如下:git branch -m 旧名字 新名字
2018-01-10 13:42:01
25482
1
转载 surfaceflinger和Vsync
android44中的实现整体流程HWComposer对象的建立EventControlThread闸刀的建立DispSync和DispSyncThreadDispSyncSource和EventThread完整走一遍android 4.1一个很大的更新是Project
2018-01-10 10:30:18
996
原创 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
797
转载 BufferQueue
1.BufferQueue内部原理BufferQueue是IGraphicBufferProducer服务器端的实现;所以BufferQueue会重载IGraphicBufferProducer接口中的各个虚函数queueBuffer,requesBuffer,dequeueBuffer等,该类内部还有一个mSlots[NUM_BUFFER_SLOTS];1.1 mSl
2018-01-09 15:00:30
787
原创 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
2099
原创 VSync信号的虚拟化
Android 4.1(Jelly Bean)引入了Vsync(Vertical Syncronization)用于渲染同步,使得App UI和SurfaceFlinger可以按硬件产生的VSync节奏来进行工作。 图1 VSync模型
2018-01-08 16:06:53
1022
原创 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
453
转载 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
343
转载 VIM之高亮光标所在的行列
基本设置设置高亮行和列有两种方式进行设置:set cursorcolumnset cursorline" orset cucset cul按 Ctrl+C 复制代码我建议使用第一种方式,这样可以看到配置就能知道是干什么用的了,同时再加上注释,因为随着配置越来越多,最后自己可能都忘了这些配置是用来干嘛的了。美化我们现在已经能快速的分别光标所在的位置了,但是离我们最终需
2017-12-15 11:27:25
7319
1
原创 vim之spellchecking
vim中内置了拼写检查功能,在终端中使用简单的命令就可以开启和关闭拼写检查功能。如果单词拼写错误,单词下面会有红色波浪线打开拼写检查::set spell关闭拼写检查::set nospell
2017-12-15 11:20:16
682
原创 vim设置配色方案
1、在.vim目录下新建一个叫 colors 的目录,用于存放配色方案文件xxxx.vim。2、下载配色方案,并放到新建的colors目录。3、在.vimrc中设置配色方案: colorscheme xxxx
2017-12-15 10:25:35
648
转载 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
284
转载 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
2097
原创 像素与毫米的转换
(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
6414
转载 vim关闭子窗口
:qall -- 关闭所有窗口,退出vim。:wall -- 保存所有修改过的窗口。:only -- 只保留当前窗口,关闭其它窗口。(CTRL-W o):close -- 关闭当前窗口,CTRL-W c能实现同样的功能。 (象 :q :x同样工作 )
2017-12-12 09:35:14
4949
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
438
转载 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
2050
原创 CtrlP命令
COMMANDS *ctrlp-commands* *:CtrlP*:CtrlP [starting-directory] Open Ctr
2017-12-07 10:46:19
1018
转载 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
2606
转载 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
563
原创 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
2421
原创 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
1643
转载 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
537
原创 input子系统框架
一、输入子系统框架输入子系统由核心层(Input Core)、驱动层和事件处理层(Event Handler)三部份组成,如下图所示,一个输入事件通过 Driver -> InputCore ->Eventhandler -> userspace 的顺序到达用户空间传给应用程序。设备驱动层:将底层的...
2017-11-29 19:22:21
2238
原创 evdev事件处理器数据处理过程
在事件处理层()中结构体evdev_client定义了一个环形缓冲区(circular buffer),其原理是用数组的方式实现了一个先进先出的循环队列(circular queue),用以缓存内核驱动上报给用户层的input_event事件。struct evdev_client { unsignedint head;
2017-11-29 10:11:02
878
原创 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
474
转载 字符设备文件的打开
打开字符设备文件,还是通过 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
583
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人