嵌入式系统里是否使用非解压内核

本文探讨了在嵌入式系统中选择压缩内核(zImage)还是非压缩内核(Image)的问题,并通过两个实际案例分析了不同存储介质对启动时间的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rel="File-List" href="file:///C:%5CDOCUME%7E1%5Czjujoe%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">

嵌入式系统里是否使用非解压内核

作者: zjujoe 转载请注明出处

Emailzjujoe@yahoo.com

BLOGhttp://blog.youkuaiyun.com/zjujoe

 

2.6 内核中, 执行 make 命令会在 arch/arm/boot 下生成两个内核: 非解压版本 Image 以及压缩版本 zImage

kernel>ls -l arch/arm/boot/*Image

-rwxr-xr-x 1 zjujoe zjujoe 2787720 2008-10-21 15:46 arch/arm/boot/Image

-rwxr-xr-x 1 zjujoe zjujoe 1340208 2008-10-22 15:06 arch/arm/boot/zImage

这两个版本的大小相差大概1 倍, 到底应该使用哪个版本呢? 从节约 flash 的角度出发, 应该使用压缩内核 zImage, 但是现在 flash 越来越便宜,使用非压缩内核 Image 有时能够加快系统装载速度。 下面两个例子通过测试装载时间来研究一下这个问题。

 

实例1:研究 nand 下是否应该使用非解压缩内核

压缩前的内核 -rwxrwxr-x  1 zjujoe zjujoe 2943128 Feb  1 09:07 arch/arm/boot/Image

压缩后的内核 -rwxrwxr-x  1 zjujoe zjujoe 1420196 Feb  1 09:07 arch/arm/boot/zImage

 

经测量装载zImage 需要 505 mS, 装载Image需要1066mS, zImage 启动到startkernel 函数时间为 1021mS

 

所以以该 nand 的装载内核速度( 2.68M /S), 装载非解压缩内核是没有意义的。进一步, 对于慢速设备(比如nand), 我们应该尽量使用压缩的内核。

 

实例2:研究 onenand 下是否应该使用非解压缩内核

压缩前的内核 -rwxr-xr-x 1 zjujoe zjujoe 2671768 2008-10-28 15:50 arch/arm/boot/Image

压缩后的内核 -rwxr-xr-x 1 zjujoe zjujoe 1288660 2008-10-28 15:50 arch/arm/boot/zImage

 

经测量装载 zImage 需要 306 mS, 装载 Image 需要449mS,  zImage 启动到 startkernel 函数时间为750mS. Image 启动到 startkernel 函数时间为473mS

 

所以以该 onenand 的装载内核速度( 6.99M /S), 应该使用非解压缩内核, 可以缩短启动时间 300mS 左右。进一步, 对于快速设备(比如onenand/mdoc/nor), 我们应该使用非压缩内核(不考虑 flash 空间成本的前提下)。

 

总结

当然, 到底是否使用压缩功能, 要依靠测试数据。不同的CPU, 不同的系统总线,不同类型的 flash 都会有不同的速度,甚至也有可能同一个硬件, 速度优化前使用压缩内核快, 而速度优化后就应该使用非压缩内核了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值