全志平台BSP裁剪(1)kernel裁剪--调试工具和调试信息的裁剪

以下技术在盈鹏飞嵌入式的A40I/T3核心板(CoM-X40I)和主控板(SBC-X40I)上经过验证,欢迎 交流! CoM-X40I核心板和SBC-X40I主板见下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述




概述

1. BSP包裁剪主要包括两个部分

  •      kernel裁剪
  •      rootfs裁剪

2. kernel裁剪涉及的部分主要分为:

  •        调试工具和调试信息的裁剪
  •        File systems 的裁剪
  •        driver的裁剪
  •        杂项优化

在内核目录运行make ARCH=平台 menuconfig,通过配置内核进行裁剪。

调试工具和调试信息的裁剪

kernel 支持了非常多的调试工具,同时也能支持向proc等导出调试信息,这对于开发调试有很多用处,但也大大加大了内核的尺寸,如果一个产品准备量产,为了优化BSP的大小,可以去掉内核的调试工具和调试信息,其中主要涉及到的有General setup 和 kernel hacking 两个配置选项。

 1. General setup

(1)General setup介绍

General setup是代码成熟度配置选项,主要配置编译的工具,编译的优化选项,软件子系统的支持等,

各个选项详细含义,可查看附件一,帖子如下:

BSP裁剪(2)附件一 General setup配置说明_jzwjzw19900922的博客-CSDN博客

详细说明
裁剪选项:General setup作用
<>kernel .config support把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本从内核镜像中提取这些信息
<>Contorl Group support相关子选项
  -->Example debug cgroup subsystem导出cgroups框架的调试信息,仅用于调试目的.
<>Confugure standard kernel features
 -->Load all symbols for debugging/ksymoops
  -->Include all sysmbols in kallsyms在/proc/kallsyms中包含内核知道的所有符号,内核将会增大300K,仅在你确实需要的时候再开启
<>Enable VM event counters for /proc/vmstat"/proc/vmstat"中包含了从内核导出的虚拟内存的各种统计信息.开启此项后可以显示较详细的信息(包含各种事件计数器),关闭此项则仅仅显示内存页计数.主要用于调试和统计
<>Profiling support添加扩展的性能分析支持,可以被OProfile之类的工具使用.仅用于调试目的.
<>KprobesKprobes是一个轻量级的内核调试工具,能在内核运行的几乎任意时间点进行暂停/读取/修改等操作的调试工具.仅供调试使用.
Support initial ramdisks compressed using bzip2支持经过以下压缩后的格式
Support initial ramdisks compressed using LZMA
Support initial ramdisks compressed using XZ
Support initial ramdisks compressed using LZO

  (2) General setup部分调试选项

Kernel .config support

作用:支持通过proc/config.gz接口来查看.config的配置

IRQ subsystem

        --> Expose hardware/virtual IRQ mapping via debugfs

作用:通过defugfs可以查看硬件中断号跟Linux irq 号的对应关系

CPU/Task time and stats accounting

    --> Expose task/process statistics through netlink

作用:通过netlink接口导出tasks/processes的统计信息

Configure standard kernel features

        --> Load all symbols for debugging/ksymoops

作用:让内核打印出符号信息和栈回溯,会让内核增加300k左右字节。

        -->BUG() support

作用:支持BUG和WRAN。

Kernel Performance Events And Counters

        -->Debug:use vmalloc to back perf mmap() buffers

作用:大部分平台调试vmalloc的代码不用需要这个选项。

Enable VM event counters for /proc/vmstat

作用:通过/proc/vmstat可以查看VM event

Kprobes

作用:Kprobes工具支持

另外如cgroup这些功能,如果你的项目不是用到Andriod等庞大的系统,也可以选择裁剪.

2. Kernel hacking

       kernel hacking 主要向开发者提供各种调试工具和调试手段,工具的数量和手段太多,根据具体的作用来裁剪不需要的工具,如果要裁剪到一个最精简的内核,这部分的东西大部分都可以被裁剪。

       详细说明可以查看附件二,地址如下:

       https://blog.csdn.net/jzwjzw19900922/article/details/103822446

     

参考如下:

裁剪选项:kernel hacking作用
[]show timing information on printks在控制台和syslog()系统调用的输出中包含printk()消息的时间戳,以便于直接显示内核启动过程中各步骤所用的时间.注意:无论此项是否开启,时间戳总会被记录在/dev/kmsg中,开启此项仅相当于使用"printk.time=1"内核引导参数.(??什么意思)
[]Enable __deprecated logic 编译时开启"反对使用"逻辑检查,关闭此项将不会显示类似"warning: 'foo' is deprecated (declared at kernel/power/somefile.c:1234)"这样的警告消息.
[]Enable __must_check_ logic 编译时开启"必须检查"逻辑检查,关闭此项将不会显示类似"warning: ignoring return value of 'foo', declared with attribute warn_unused_result"这样的警告消息.
[]Collect scheduler statistics收集调度程序的统计信息,并展示在"/proc/schedstat"文件中.可以用于调试调度程序,或者调整特定的应用程序.不确定的选"N".
[]Collect kernel timers statistics收集内核计时器的统计信息,并展示在"/proc/timer_stats"文件中.使用"echo 1 > /proc/timer_stats"开启统计,使用"echo 0 > /proc/timer_stats"关闭统计.不确定的选"N".
[]Debug slab memory allocations调试slab内存分配器
[]Debug preemptible kernel对内核主动抢占特性进行调试
[]Verbose BUG() reporting (adds 70K)在内核panic时让BUG()函数报告更详细的信息.内核将会增大70-100K
[]Compile the kernel with debug info以调试方式编译内核(gcc -g).仅供内核开发者使用
RCU Debugging
  -->Print additional per-task information for RCU_CPU_STALLDETECTOR打印每个人物附加的信息给RCU检测器,默认选N
Tracers追踪器应该是对开发调试作用的
[]Sample kernel code内核示例代码
[]KGDB: kernel debuggergdb调试工具
[]Early printk将内核日志直接输出到VGA缓冲或串口.这有助于调试那些在控制台尚未完成初始化之前就造成系统崩溃的bug
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值