Android端有没有什么可以比较方便阅读Linux源码的工具

Android端有没有什么可以比较方便阅读Linux源码的工具,第1张

1. ctags

ctags应该是几个里面最古老的一个了,当然也是获得支持最多的一个,vim默认就支持ctags产生的tag数据库,不过原来的ctags名符其实, 只支持C语言,且分析不够细腻。其新版本名为exuberant ctags,但是它已经远远超出了它名字的范畴,支持包括C语言在内的33种编程语言,准确度上也不错,并且它的开发仍在如火如荼地进行着,前途无量啊!

配合vim使用,基本上能满足用户的要求。

常用命令:

建立数据库命令:

exuberant-ctags

在vim编辑器中浏览:

:ta x

跳转到符号x的定义处,如果有多个符号,直接跳转到第一处

:ts x

列出符号x的定义

:tj x

可以看做上面两个命令的合并,如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择。

Ctrl+]

跳转到当前光标下符号的定义处,和ta类似。

Ctrl+t

跳转到上一个符号定义处,和上面的配合基本上就能自由跳转了。

另外两个:tn, :tp是在符号的多个定义之间跳转

美中不足,只能查找符号的定义,不能实现交叉引用查询等其它功能。

2. Cscope

相比ctags的只能查找符号的定义,cscope则显得更加丰富,虽然他支持C语言,但是它除了能查找函数的定义,还能查找函数在哪里被调用过等,所以能在一定程度上弥补ctags的不足。

常用命令:

建立数据库的命令:

cscope和vim配合使用:

不再重复vim文档了,自己通过命令

:help cscope

去详细学习吧。

比较遗憾的是,cscope的最后一次更新是在2003年,这个项目似乎也是被人抛弃了,希望以后能被人收养,或者和其它项目合并。

3. Global

Global是GNU出品的交叉索引工具,支持C, C++, Yacc, Java 和PHP4五种语言,命令行下表现不错,但是和vim配合使用,就不如前面两个更加亲切了。其特色在于分析得很细腻,我所研究过的,暂时只能 soucenav能超过它。能生成交叉索引的web页,很适合用来做程序的文档。数据库是从berkeley BD 3上改过来的。但和我的要需求却有比较大的差距。因为它只有一个WEB的前端,在功能上,他现有的前端也只实现符号查询和交叉引用查询。

需要修改 Linux 内核源码中的一个控制 log buffer size 的宏:CONFIG_LOG_BUF_SHIFT,buffer size 是 2 ^ shift,加大这个就可以。

一、配置

$ make menuconfig

General setup

(18)Kernel log buffer size (16 =>64KB,17 =>128KB)

二、源码

kernel/printk.c

#define __LOG_BUF_LEN (1 <<CONFIG_LOG_BUF_SHIFT)

static char __log_buf[__LOG_BUF_LEN]

可以看到,是已经在编译时定死的一块静态空间,不能动态调整了。对于内核日志,唯一可以调整的在:/proc/sys/kernel/printk*

三、限制

init/Kconfig

config LOG_BUF_SHIFT

int "Kernel log buffer size (16 =>64KB, 17 =>128KB)"

range 12 21

default 17

help

Select kernel log buffer size as a power of 2.

Examples:

17 =>128 KB

16 =>64 KB

15 =>32 KB

14 =>16 KB

13 => 8 KB

12 => 4 KB

可以看到 shift 最大值限制到了 21,也就是:2 M

$ echo "(2^21)/1024/1024" | bc

2

如果再要加大,只能改源码了。

开机logo主要与kernel/drivers/video/logo下的logo_linux_clut224.ppm有关。

现kernel源码内一般以提供厂商的logo为主。

我们需要替换的文件也就是该ppm文件。

这里直接提供png转ppm的sh脚本。前提是必须安装了以下工具(pngtopnm,pnmquant,pnmtoplainpnm)

./png2ppm.sh XX.png

用生成的同名ppm文件替换logo_linux_clut224.ppm。

同时删除kernel/drivers/video/logo下的logo_linux_clut224.c和logo_linux_clut224.o

Android开机动画主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播放一张张的图片。、

这个一般flash制作或者选择交给美工制作了。图片张数尽量不要太多。

关键:图片一定要按顺序命名。

重点在于desc.txt文件。

其中1188 624代表分辨率,表示帧动画以这个分辨率显示。分辨率不是越高越好,容易造成开机卡顿,不流畅。

25表示的是帧数,就是每秒播放的图片数量。

p1(代表着播放一次) 0(空指令)part0 */这句指令就代表这part0文件夹内的图片只按名称顺序播放一次

p0(重复播放)0 (空指令)part1 */这一句指令代表着part1文件夹内的图片会循环反复播放

打包要用zip格式,而不是rar格式。另外压缩的时候压缩方式要选择存储。将压缩包名修改为bootanimation.zip。

1)可直接将生成的bootanimation.zip放入设备/system/meida目录下重启验证开机动画效果。

2)源码上可直接将bootanimation.zip拷贝至/out/target/product/rk3288/system/media目录下,最终打包进成型固件中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6182733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存