用户中心

资讯 > 嵌入式系统

VxWorks压缩技术

来源:www.embed-dsp.com2006.10.05阅读 2568

  在嵌入式系统中,我们通常会要求VxWorks文件尽量小,比如通过串口、软盘或tffs加载VxWorks的时候,如果文件太大,可能无法存储www.cechina.cn,或加载失败。下面介绍一种利用Tornado和VxWorks自带的deflate和inflate,对VxWorks文件进行压缩和解压缩的技术。希望对大家有所帮助。
1  使用Tornado创建bootable的project,包括应用程序。对VxWorks进行适当的裁减和配置。
2  如果准备将VxWorks存储于硬盘CONTROL ENGINEERING China版权所有,软盘或tffs上,应该在usrAppInit中使用usrNetEndDevStart和usrNetifConfig启动网络接口。如果存储于tffs上,还要修改usrNetBoot.c中:
if ( (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "scsi", 4) == 0)
|| (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "ide", 3) == 0)
|| (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "ata", 3) == 0)
|| (s

trncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "fd", 2) == 0))
为:
if ( (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "scsi", 4) == 0)
|| (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "ide", 3) == 0)
|| (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "ata", 3) == 0)
|| (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "tffs", 4) == 0)
|| (strncmp (sysBootParams.bootDevCONTROL ENGINEERING China版权所有, "fd", 2) == 0))
3  在dos下运行 tornado/host/x86-win32/bin/torvars。
4  进入VxWorks所在的目录,运行:
deflate VxWorks.z。这里我们默认.z文件是压缩文件。
5  如果准备将VxWorks.z存储于硬盘www.cechina.cn,软盘或tffs上,需要首先创建相应的设备,并用dosFS初始化。如果是通过串口或网络加载VxWorks.zwww.cechina.cn,则需要初始化相应的接口。
6  修改bootConfig.c文件:
a. 在LOCAL STATUS netLoad 函数的 tftpXfer和 ftpXfer这一部分代码结束的地方添加:
if ( strstr(fileName,".z") || strstr(fileName,".Z") )
{       
printf("
file %s is compressed, now begin uncompressing...
",fileName);
if (bootLoadModuleInflate(fd, pEntry) != OK)
    goto readErr;
}
    else if (bootLoadModule (fd, pEntry) != OK)
goto readErr;
  b. 在 LOCAL STATUS tffsLoad 函数的 usrTffsConfig和open这一部分代码结束的地方添加:
    if ( strstr(fileName,".z") || strstr(fileName,".Z") )
    {       
printf("
file %s is compressed, now begin uncompressing...
",fileName);
if (bootLoadModuleInflate(fd, pEntry) != OK)
    goto readErr;
    }
    else if (bootLoadModule (fd, pEntry) != OK)
goto readErr;
  c. 在 LOCAL STATUS bootLoad 函数之前定义函数 bootLoadModuleInflate的原型:
#define DECOMP_BUF_SIZE  (RAM_HIGH_








































版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688