项目简介
本项目由两部分组成。一方面是利用Python开发的函数追踪树绘制工具,该工具可解析内核函数的追踪日志,并以层次结构的调用树形式展示函数调用关系,有助于用户分析系统性能问题和调试程序。另一方面是GenericBooter,这是一个适用于Darwin/ARM系统的示例引导加载程序,它能从其他引导加载程序(如Das U-boot)引导,将Mach内核加载到内存、展平设备树并最终把控制权交给内核。
项目的主要特性和功能
函数追踪树绘制工具
- 解析日志:借助正则表达式解析函数追踪日志,提取调用时间、被调用函数和调用者函数信息。
- 构建调用树:在内存里构建表示函数调用关系的树状结构,每个节点包含函数名、调用时间以及父子节点信息。
- 异常处理:遇到无法解析的行或注释行时,抛出异常或跳过处理,保障程序健壮性。
- 输出结果:把构建好的调用树以层次结构形式打印到标准输出。
GenericBooter
- 多硬件支持:支持德州仪器OMAP3系列、AM335x系列以及ARM RealView开发板,且便于添加新的开发板端口。
- 内核加载:将Mach内核加载到内存,展平设备树并传递控制权。
安装使用步骤
函数追踪树绘制工具
用户下载项目源码文件后,若有一个名为trace.log
的函数追踪日志文件,可通过以下两种方式运行工具:
- 直接使用命令行参数指定文件:
python draw_functrace.py trace.log
- 通过管道传递文件内容:
cat trace.log | python draw_functrace.py
GenericBooter
编译要求
需要标准开发库和软件,如ncurses
、gcc
、flex
等,若能编译Linux内核则可编译此引导加载程序。
编译步骤
- 运行
make menuconfig
。 - 使用
arm-none-eabi-
工具链编译:make CROSS_COMPILE=arm-none-eabi-
引导加载程序所需镜像
在images
文件夹中需要3个镜像文件:
- mach_kernel
,以未压缩的Mach - O文件形式包装在魔术字为krnl
的Image3中(Mach.img3)。
- 一个ramdisk,以未压缩的原始HFS(+)卷形式包装在魔术字为rdsk
的Image3中(Ramdisk.img3)。
若使用iOS兼容的设备树,需将设备树以DeviceTree.img3的形式放在指定文件夹中;对于XML设备树也需做相同处理。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】