立即注册
查看: 1003|回复: 4

[海思技术资料] 海思Hi3516A/Hi3516D系统小型化说明

已绑定手机
已实名认证
发表于 2021-8-2 10:47:41 | 显示全部楼层 |阅读模式 来自 广东省深圳市
在保证系统性能和业务运行要求的前提下,为满足系统小型化要求,hi3516A 的内核和文件系统需要做适当的裁减。参考 Hi3516A 的业务需求,Hi3516A 发布包给出了一套通用的小型化配置文件。本文首先介绍了如何使用这些配置文件编译小型化版本镜像文件;部分用户可能不会直接使用这套默认配置文件,而是根据其需求自行裁剪。有鉴于此,本文还介绍了 Hi3516A 内核和文件系统裁剪的一般方法。

1、使用小型化配置文件制作内核及文件系统
1.1 编译小型化版本的内核
如果要单独编译小型化版本,请使用配置文件 hi3516a_mini_defconfig。具体操作:
进入 Hi3516A 内核源代码目录
cp arch/arm/configs/hi3516a_mini_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage

1.2 在 Hi3516A 发布包中制作小型化版本的文件系统
-创建根文件系统根目录下的子目录和文件
进入 osdrv 目录,执行如下操作:
tar xzf rootfs_scripts/rootfs.tgz -C pub/
在根文件系统中创建相应的库文件
tar xzf opensource/toolchain/arm-hisiv300-linux/runtime_lib/a7_softfp_neonvfpv4/lib.tgz -C pub/rootfs

-编译 busybox
config_v300_softfp_neon 如果需要裁剪参考 2.3.1
进入 osdrv/opensource 目录,执行如下操作:
tar xzf busybox/busybox-1.20.2.tgz -C busybox
find busybox/busybox-1.20.2 | xargs touch
cp busybox/busybox-1.20.2/config_v300_softfp_neon busybox/ busybox-1.20.2/.config
cd busybox/busybox-1.20.2/
make
cd ../../
......

2、Uboot、内核及文件系统裁剪的一般方法
用户如果觉得发布包中给出的小型化配置不适合自己的业务需求,可以在发布包中的全规格配置文件的基础上,按照下文给出的裁剪方法,根据自己的实际需要,自行裁剪。
2.1 uboot 裁剪
uboot 的裁剪主要从两方面下手:一是裁剪 uboot 代码本身的尺寸,二是将环境变量的起始地址提前。裁剪前,uboot 代码和环境变量在 SPI flash 中共占用 1MB 空间。其中,前 512KB 的空间用于存放 uboot 二进制文件,后面 512KB 的空间用于存放环境变量。裁剪后,uboot 代码和环境变量在 SPI flash 中共占用 512KB 空间,其中,前 256KB 的空间用于存放 uboot 二进制文件,后面 256KB 用于存放环境变量。修改文件如下:
在配置文件 hi3516a.h 中,修改如下代码:
-去掉宏定义#define CONFIG_ENV_IS_IN_NAND
-将宏定义#define CONFIG_ENV_OFFSET 的值由 0x80000 改为 0x40000
注意:因为 uboot 二进制文件的大小不超过 256KB,所以把环境变量存放位置从 512KB 调整到 256KB,这样就可以节省 256KB。

2.2 内核裁减
内核的裁减主要有两个思路:一是通过控制内核的编译过程,让更少的代码编译进内核,以减少内核目标二进制文件的体积;二是通过使用更高压缩率的压缩方法,让内核镜像文件更小。
内核源代码中除了系统运行所必须的核心代码之外,还包含了各种各样的外部设备驱动、文件系统,以及一些跟某种特性相关的代码。而这些代码,在我们的业务环境中,并不都是必须的。我们将这些不必要的内容,通过配置选项进行筛选。
进入内核源代码目录,运行如下命令,打开内核配置菜单,并对菜单上的选项进行配置:
$ cp arch/arm/configs/hi3516a_full_defconfig .config
$ make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig

2.2.1 一些目前还处在开发或者完善过程中的模块
这部分代码还没有通过全面测试,稳定性无法保证,用户也很少会使用,在系统的资源有限的情况下,除非有明确的需求,否则都可以去掉。
General setup --->
[ ] Prompt for development and/or incomplete code/drivers
去掉这个选项,那些目前还甚少被使用的、处在开发完善阶段的代码就不会被编译进内核,也不会在内核配置菜单中出现。关闭这个选项,可能减少 85K(gzip)空间。
Device Drivers --->
[ ] Staging drivers --->
这个选项提供了一些内核编制以外的驱动,这部分代码放在这里,更多原因是因为想吸引更多用户去了解和使用它。但这些代码没有经过广泛测试,相关接口未来可能还会改变。可以关闭这个选项。

2.2.2 一些特殊功能和特性的支持
1.POSIX 标准的异步 I/O 操作支持这主要看用户是否使用了 aio_read 之类的函数。POSIX 标准的异步 I/O 有别于linux 原生的 I/O 接口。linux 原生代码认为,io 的读操作是同步的,写操作是异步的。也就是说读取某 io 的数据,必须等待数据由 io 传送到 buffer 之后才读完成返回。在有些情况下,更高性能的做法是希望读操作发起之后,线程立即返回,去做其他与 buffer 无关的事情。直到 buffer 数据准备好,才处理读结果。于是就有了 aio 接口支持。用户通常都只是使用 linux 原生的 I/O 接口,可以将该选项关闭。
General setup --->
[ ] Enable AIO support
2.系统的 extended profiling(剖面)的支持
profiling(剖面图)是一个工具来扫描、统计和测评计算机性能的工具。对多数用户
而言,可以关闭该选项。
General setup --->
[ ] Profiling support
......

更多详细内容请下载附件查看
游客,如果您要查看本帖隐藏内容请回复
已绑定手机
发表于 2023-1-10 10:30:25 | 显示全部楼层 来自 四川省成都市
:D:D:D:D:D
已绑定手机
已实名认证
发表于 2023-4-18 17:04:58 | 显示全部楼层 来自 广东省珠海市
谢谢,非常感谢支持
已绑定手机
发表于 2023-11-13 12:07:50 | 显示全部楼层 来自 亚太地区
已阅,顶一下
已绑定手机
发表于 2024-2-29 17:29:48 | 显示全部楼层 来自 广东省广州市
谢谢,非常感谢支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
微信客服扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表