ko/lib /裁剪介绍


1. 相关文件介绍

表1-1:So文件介绍

名称 大小(KB) 用途 是否必须
lib/ld-uClibc-1.0.31.so        20.9 toolchain 使用的标准库 YES
lib/libncurses.so.6.0          183.3 toolchain 使用的标准库 YES
lib/libstdc++.so.6.0.20        619.5 toolchain 使用的标准库 如果应用没有使用C++,则不需要
lib/libthread_db-1.0.31.so     17.1 toolchain 使用的标准库 NO
lib/libgcc_s.so.1              93.6 toolchain 使用的标准库 YES
lib/libuClibc-1.0.31.so    349.9 toolchain 使用的标准库 YES
lib/libatomic.so.1.1.0         13.3 toolchain 使用的标准库 YES
lib/libAEC_LINUX.so            65.8 audio算法库:回音消除 NO
lib/libAED_LINUX.so            112.1 audio算法库:babycry,高分贝检测 NO
lib/libAPC_LINUX.so            90.7 audio算法库:EQ,NR,HPF,AGC 如果没有使用audio功能,则不需要
lib/libBF_LINUX.so             70.9 audio算法库:波束成型。 NO
lib/libMD_LINUX.so             442.4 运行检测算法 NO
lib/libOD_LINUX.so             430.4 遮挡检测算法 NO
lib/libSRC_LINUX.so            30.0 audio算法库:重采样。 NO
lib/libSSL_LINUX.so            30.2 audio算法库:声源定位。 NO
lib/libVG_LINUX.so             69.7 虚拟围栏检测算法 NO
lib/libcam_fs_wrapper.so       5.4  sys模块与linux API的中间层 YES
lib/libcam_os_wrapper.so       33.8 sys模块与linux API的中间层 YES
lib/libcus3a.so                17.4 AF、 AE、 AWB接口 YES
lib/libg711.so                 5.4  音频编码库 NO
lib/libg726.so                 9.2  音频编码库 NO
lib/libispalgo.so              225.2 提供isp高级功能,如AF、 AE、 AWB YES
lib/libmi_ai.so                251.2 audio 输入相关库 如果没有使用audio功能,则不需要
lib/libmi_ao.so                82.9 audio 输出相关库 如果没有使用audio功能,则不需要
lib/libmi_common.so            41.7 MI必备基础库 YES
lib/libmi_divp.so              5.3  多媒体模块和 DIVP函数的接口 YES
lib/libmi_iqserver.so          66.4 与iqtool工具通讯,提供网络调试iq的功能,对接ISP模块 NO
lib/libmi_iqserver_pretzel.so  42.0 与iqtool工具通讯,非335 337平台 NO
lib/libmi_isp.so               42.4 ISP函数接口封装库 YES
lib/libmi_isp_pretzel.so       38.0 ISP函数接口封装库,非335 337平台 NO
lib/libmi_ive.so               454.6 提供硬件算子的使用 如果没有使用IVE算子和SIGMASTAR MD 、OD、 VG算法,则不需要
lib/libmi_ldc.so               9.4  镜头畸变校正的函数接口,335 337无此功能 NO
lib/libmi_rgn.so               9.4  OSD函数接口 YES
lib/libmi_sed.so               13.3 smart encoder NO
lib/libmi_sensor.so            9.3  多媒体模块 SENSOR函数接口 YES
lib/libmi_shadow.so            13.4 提供VDF对接接口 如果使用SIGMASTAR的MD OD VG算法,则需要
lib/libmi_sys.so               17.4 MI层 必备基础库,负责搭建基础mi框架,提供buf管理 YES
lib/libmi_vdf.so               85.6 提供视频算法功能,包括移动监测,遮挡检测,虚拟围栏等 如果使用SIGMASTAR的MD OD VG算法,则需要
lib/libmi_venc.so              25.4 多媒体模块 VENC函数接口,提供视频解码功能 YES
lib/libmi_vif.so               9.3  多媒体模块 VIF函数接口 YES
lib/libmi_vpe.so               13.4 多媒体模块 VPE函数接口 YES
4166KB

表1-2:Ko文件介绍

名称 大小(KB) 用途 是否必须
/config/modules/4.9.84/SC4238_MIPI.ko  19.9  SC4238 sensor 驱动 NO
/config/modules/4.9.84/imx291_MIPI.ko  10.3  imx291 sensor 驱动 NO
/config/modules/4.9.84/imx307_MIPI.ko  19.6  imx307 sensor 驱动 NO
/config/modules/4.9.84/mhal.ko         1228.8    多媒体层的底层实现 YES
/config/modules/4.9.84/mi_ai.ko        170.1 Audio 采集模块的实现 如果没有使用audio功能,则不需要
/config/modules/4.9.84/mi_ao.ko        91.9  Audio 输出模块的实现 如果没有使用audio功能,则不需要
/config/modules/4.9.84/mi_common.ko    9.7   mi 必备基础库的实现 YES
/config/modules/4.9.84/mi_divp.ko      52.8  多媒体 DIVP模块的实现 YES
/config/modules/4.9.84/mi_ldc.ko       7.6   镜头畸变校正的实现,335 337无此功能 NO
/config/modules/4.9.84/mi_rgn.ko       92.1  OSD模块的实现 YES
/config/modules/4.9.84/mi_sensor.ko    29.6  多媒体 SENSOR模块的实现 YES
/config/modules/4.9.84/mi_shadow.ko    46.8  vdf对接接口的实现 如果使用SIGMASTAR的MD OD VG算法,则需要
/config/modules/4.9.84/mi_sys.ko 
需要配合config_tool和 mmap.ini所在路径添加指定参数
414.4 MI层 必备基础库的实现,负责搭建基础mi框架,提供buf管理 YES
/config/modules/4.9.84/mi_venc.ko 
需要配合chagall.bin固件所在路径添加指定参数  
165.0 多媒体 VENC模块的实现 YES
/config/modules/4.9.84/mi_vif.ko       40.7  多媒体 VIF模块的实现 YES
/config/modules/4.9.84/mi_vpe.ko       143.9 多媒体 VPE模块的实现 YES
/config/modules/4.9.84/mmc_block.ko    28.9  SD卡相关驱动,mmc 基础驱动 NO
/config/modules/4.9.84/mmc_core.ko     95.2  SD卡相关驱动,mmc 基础驱动 NO
/config/modules/4.9.84/ms_notify.ko    4.1   netlink,运行mixer才需要加载 NO
/config/modules/4.9.84/msdos.ko        9.8   MSDOS 文件系统 NO
/config/modules/4.9.84/nfs.ko          123.0 nfs网络文件系统 NO
/config/modules/4.9.84/nfsv2.ko        16.9  nfs网络文件系统 NO
/config/modules/4.9.84/nls_utf8.ko     3.6   utf8 字体驱动 NO
/config/modules/4.9.84/ntfs.ko         87.0  NTFS 文件系统驱动 NO
/config/modules/4.9.84/sc4236_MIPI.ko  12.7  SC4236 sensor驱动 NO
/config/modules/4.9.84/scsi_mod.ko     118.2 USB 和 SD卡需要驱动 NO
/config/modules/4.9.84/sd_mod.ko       30.5  SD卡相关驱动,scsi 接口磁盘支持 NO
/config/modules/4.9.84/sunrpc.ko       173.6 用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用 NO
/config/modules/4.9.84/usb-common.ko   5.5   usb 基础驱动 NO
/config/modules/4.9.84/usb-storage.ko  68.4  usb 盘驱动 (依赖usb基础驱动) NO
/config/modules/4.9.84/usbcore.ko      144.3 usb host 基础驱动 NO
/config/modules/4.9.84/cifs.ko         202.6 CIFS 文件系统驱动 NO
/config/modules/4.9.84/ehci-hcd.ko     40.5  usb2.0 host控制器驱动 NO
/config/modules/4.9.84/fat.ko          53.0  fat 文件系统 NO
/config/modules/4.9.84/grace.ko        5.4   nfs网络文件系统 NO
/config/modules/4.9.84/lockd.ko        49.1  Mount nfs 所需要驱动 NO
/config/modules/4.9.84/kdrv_sdmmc.ko   30.7  sd 卡驱动 NO
/config/modules/4.9.84/vfat.ko         11.5  vfat 文件系统(u 盘或者SD卡) NO

表1-3:其他部分

工具及配置文件 大小 用途 是否必须
config_tool 和 mmap.ini insmod mi_sys.ko的时候,驱动调用config_tool解析mmap.ini分硬件分配buffer。默认位于/config目录下,更换位置时需要在insmod mi_sys.ko之后加default_config_path='/new/path' YES
isp_api.xml 连接iqtool生成软件界面项目。更换路径时需要应用在iqserver_open 之前调用mi_iqserver.h的 MI_S32 MI_IQSERVER_SetDataPath(char* path) NO
iqfile0.bin -> imx307_iqfile.bin ISP启动(应用运行)时会到/config/iqfile目录下读取名为iqfilex.bin的iq file(x表示isp channel),图像的基础效果一般是软链接指向实际的iq file。如果该文件更换位置,需要在应用运行前执行 echo isproot /new/path > /dev/ispmid YES
chagall.bin HW encoder fireware。默认位于/config/fw_path/chagall.bin,更换位置时需要在insmod mi_venc.ko之后加fw_path=/new/path/chagall.bin YES
  1. Initial RAM filesystem and RAM disk //for ramdisk, 如果不需要可删除;

  2. General

    1. Kprobes // kernel 内添加钩子函数(断点)

    2. Kernel performance events and counters // perf 等,用于kernel hacking

  3. Network

    1. The IPv6 protocol

    2. Wireless

    3. 其他部分视用户需求而定

  4. Device 相关

    1. Serial ATA and Parallel ATA drivers

    2. MMC/SD/SDIO card support

    3. Staging drivers

    4. USB host

      1. Ehci //2.0

      2. Uhci //3.0

    5. USB device:

      1. UVC 相关;

      2. Webcam 相关;

    6. File systems

      1. NFS //used for debug;

      2. CIFS //used for debug

      3. JFFS2 // 权限W/R

      4. UBIFS // 权限W/R  

      5. FAT/NTFS //windos fs

  5. Kernel hacking

    1. Tracers //ftrace 等

    2. KGDB: kernel debugger //gdb

    3. Debug Lockups and Hangs //debug mutex and so on.

    4. Debug Lockups and Hangs

    5. DEBUG_INFO //debug info, 删除后不便于debug

    6. KALLSYMS // kernel symbol 等,删除后不便于debug

  6. Device Drivers

    1. Multimedia support // usb cam 相关的设定

    2. Input device support

      1. Mouse interface

      2. Keyboards

      3. Mice

      4. Touchscreens

  7. SStar SoC platform drivers // 根据用户需求

    1. SStar SATA HOST //sata 等

    2. SStar SD/MMC Card Interface Support

  8. 其他:建议使用用户的config 来check


2. BUSYBOX 编译与配置


2.1. 使用默认配置编译

  1. prepare

    wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2

    tar -xvf wget busybox-1.31.1.tar.bz2
    
    cd busybox-1.31.1
    
  2. make

    make defconfig (默认使用共享库模式进行编译, CONFIG_STATIC -> N)
    
    make -j4 CROSS_COMPILE=arm-none-linux-gnueabi-
    

2.2. BUSYBOX 裁剪

根据busybox 主选项进行分类。

表2-1:setting

配置选项 占用空间 (Bytes) 功能描述
CONFIG_DESKTOP 8K 开启一些非必要的配置以兼容桌面系统
CONFIG_INCLUDE_SUSv2 --- 开启UNIX 98支持
CONFIG_SHOW_USAGE 7K applets 帮助信息
CONFIG_FEATURE_UTMP 用于记录当前登录用户, who功能会使用到
CONFIG_FEATURE_PIDFILE pid文件生成路径
CONFIG_FEATURE_SUID 开启root权限管理
CONFIG_STACK_OPTIMIZATION_386 i386架构stack-boundary=2
CONFIG_FLOAT_DURATION 使applets支持浮点, 例如:sleep N.NNN
CONFIG_FEATURE_NON_POSIX_CP Non-POSIX标准cp命令

Applets

按照 Applets 显示顺序进行排序:

下列为busybox工具的支持配置, 可以根据需要选择是否开启:

  1. Archival Utilities

    各类压缩格式以及压缩工具的配置

  2. Coreutils

    系统常用工具的配置

  3. Console Utilities

    控制台工具配置

  4. Debian Utilities

    Debian 系统工具

  5. klibc-utils

    klibc 工具,包括minips(ps), nuke(rm -rf) , resume, run-init

  6. Editors

    编辑工具, 包括sed, awk, vi等

  7. Finding Utilities

    find, grep, xargs 等工具功能的配置

  8. Init Utilities

    系统初始化工具, 包括reboot, poweroff,halt等

  9. Login/Password Management Utilities

    登录以及密码管理工具

  10. Linux Ext2 FS Progs

    Ext2 文件系统管理相关工具

  11. Linux Module Utilities

    linux 模块管理, insmod/rmmod/modprobe等

  12. Linux System Utilities

    linux 系统管理工具

  13. Miscellaneous Utilities

    杂项类工具

  14. Networking Utilities

    网络管理工具, 可配置Ipv4/ipv6支持,以及tftp, telnetd等工具的支持

  15. Print Utilities

    打印机工具,包括lpd/lpr/lpq 工具

  16. Mail Utilities

    邮件相关工具

  17. Process Utilities

    进程管理工具, 包括free, kill, top, watch等

  18. Runit Utilities

    runit 套件的支持,

  19. Shells

    包括ash, 以及hush两种shell的支持

  20. System Logging Utilities

    系统log工具的支持,