简介
Valgrind
是构建动态分析工具的框架,Valgrind
工具可以自动检测许多内存管理和线程错误,并详细介绍您的程序,还可以使用Valgrind
构建新工具。
官网:http://valgrind.org/
valgrind的使用:http://valgrind.org/docs/manual/manual.html
下载地址:git clone git://sourceware.org/git/valgrind.git
thinking all the time
Valgrind
是构建动态分析工具的框架,Valgrind
工具可以自动检测许多内存管理和线程错误,并详细介绍您的程序,还可以使用Valgrind
构建新工具。
官网:http://valgrind.org/
valgrind的使用:http://valgrind.org/docs/manual/manual.html
下载地址:git clone git://sourceware.org/git/valgrind.git
在Linux Benchmark Suite Homepage网站上列举了诸多Linux性能测试工具,包括CPU/RAM/ROM/Cache/net等性能测试。iozone
工具我们在前面的文章中已经介绍和使用过了。今天,我们主要来玩一下关于RAM
的读写性能测试。
以下内容根据wowo的文章进行整理学习,多数内容拷贝自wowo的文章,在适当的地方添加自己的理解,在此非常感谢wowo的大神们。
在README
文件中的Board Initialisation Flow
章节有关于板级初始化流程的说明,如下:
整个u-boot的流程都按照下面的规定走:
1 | Board Initialisation Flow: |
Android编译环境,lunch
的时候会进行product和variant的选择,比如说lunch xxx-eng
得到的结果如下:
1 | victor@victor-HP:~/master$ lunch xxx-eng |
因此我们可以取得几个环境变量,TARGET_BUILD_VARIANT=eng
和TARGET_PRODUCT=xxx
,输入env
命令就可以查看当前系统当前shell下的环境变量。我们想根据TARGET_BUILD_VARIANT
的值为eng
或者user
来选择在uboot或kernel中开关某个功能。
解决思路:
在lunch
后我们可以获得TARGET_BUILD_VARIANT
的值,判断其为eng
或者user
,然后相应的export
出一个环境变量,最后在uboot或kernel中的Makefile
中判断环境变量传递相应的宏。
git config --global commit.template template.file
来配置特定的commit log,template.file
为模板。scripts/checkpatch.pl [patch or source file]
来检查格式是否正确。linux kernel的commit log建议使用如下模板:
1 | Short (50 chars or less) summary of changes |
参考资料:
如何写好 Git commit log?
git-commit-messages-50-72-formatting
Documentation/process/submitting-patches.rst
提交Linux内核Patch
像linux kernel一样管理你的项目
A Note About Git Commit Messages
本文主要讲述使用iozone
、dd/cp/rm
命令、fio
、flashbench
进行eMMC读写性能和稳定性测试。读写性能主要是通过iozone
测试,稳定性主要是通过长时间随机读写进行测试。
1 | #git clone git@192.168.1.3:knl/kernel-imx6.git |
git clean -f
: 删除 untracked files;git clean -fd
: 连untracked的目录也一起删掉;git clean -dxf
: 连gitignore的untrack文件和目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)。1 | #gitdir=$(git rev-parse --git-dir); scp -p -P 29418 user-name@192.168.1.74:hooks/commit-msg ${gitdir}/hooks/ |
在Android的开发过程中,要将Android移植到自己的平台并将所有关于Android.mk
字符串重命名为Mydroid.mk
。
1 | # sed -i s/"Android.mk"/"Mydroid.mk"/g `grep -rl "Android.mk" ./` |
首先grep
当前目录下包含Android.mk
字符串的文件,然后输入给sed
进行替换。注意包住grep
命令的是\`
(TAB键上面的字符,不包括\
),而不是’
(单引号)。 可在grep
命令后面加上–exclude_dir=".git"
排除对.git/
目录下文件的替换。
man xxx
将Android项目中所有文件夹下名字为Androd.mk
的文件重命名为Mydroid.mk
。前面的是替换字符串。
1 | # find ./ -name "Android.mk" | xargs rename "s/Android.mk/Mydroid.mk/g" |
假设本地一份Android的source code在A(192.168.1.2)电脑上(~/work/A_Android),要将其拷贝到远程同一局域网内的B电脑(192.168.1.3 用户名为:xxx)的目录(~/work/B_Android)下:
1 | # scp -r ~/work/A_Android xxx@192.168.1.3:~/work/B_Android |