码迷,mamicode.com
首页 > 其他好文 > 详细

uboot 解压缩

时间:2014-06-17 23:14:07      阅读:525      评论:0      收藏:0      [点我收藏+]

标签:des   style   code   tar   com   文件   

在uboot中进行解压缩是很有用的

uboot中完成delay 用户进行交互的段

if(BootType == ‘3‘) {

      char *argv[3];

      printf("   \n3: System Boot system code via Flash.\n");

。。。。

以下就是要进入kernel拷贝内容了

因为kernel的尺寸比较大   一般会达到3M以上   这样用串口或者网络都会比较耗费时间  也会浪费宝贵的内存

解决方法就是传输和保存都用压缩过的 应用的时候在进行解压

uboot中已经集成了集中常用的解压缩程序,一般常见的gzip  、 bzip 、  lzma  都已经存在。

我们只需要调用就可以了,这里给出一个建立解压缩命令的方法。建立新的命令在签名的博客已经写了 ,这里就直接引用结果了

#include <common.h>
#include <command.h>
    u32 ret_decomps;
#ifdef CONFIG_CMD_DECOMPRESS
do_compress(cmd_tbl_t *cmdtp,int flag,int argc,char *argv[])
{
    u32 destLen = 0,len;
    len = simple_strtoul(argv[1], NULL, 16);
    printf("decompress start");
    //lzmaBuffToBuffDecompress (unsigned char *outStream, SizeT *uncompressedSize, unsigned char *inStream,  SizeT  length)
    ret_decomps = lzmaBuffToBuffDecompress ((char *)0xa2000000, &destLen, (char *)0xa1000000,  len);
    printf("decompress finish");
    return 0;
}
U_BOOT_CMD(

decomps,5,1,do_compress,"decompress test\n","decompress:addr \n"

);
#endif

这里明有一些调试的信息没除去,反正不影响结果。

插一点,开启debug打印的方法

在uboot中可以看到有很多的debug打印信息      

debug ("LZMA: Image address............... 0x%lx\n", inStream);
    debug ("LZMA: Properties address.......... 0x%lx\n", inStream + LZMA_PROPERTIES_OFFSET);
    debug ("LZMA: Uncompressed size address... 0x%lx\n", inStream + LZMA_SIZE_OFFSET);
    debug ("LZMA: Compressed data address..... 0x%lx\n", inStream + LZMA_DATA_OFFSET);
    debug ("LZMA: Destination address......... 0x%lx\n", outStream);

虽然自己也可以用print函数实现 , 但是不如直接打开省事的  。可以在对应的.h文件中增加一个

#define DEBUG

这样上面那些打印就可以打印出来了

下面继续我们命令的部分

这俩要开始增加lzma编译连接在make中的设置,因为默认lzma是不编译链接的。方法就是主目录下的makefile中加

LIBS += lib/lzma/liblzma.a

这样就可以编译连接进去了

然后我们就可以调用解压缩的接口函数进行解压缩操作了


uboot 解压缩,布布扣,bubuko.com

uboot 解压缩

标签:des   style   code   tar   com   文件   

原文地址:http://blog.csdn.net/weiwei_xiaoyu/article/details/31413203

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!