简介
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 |