📄 dm642main.c
字号:
/********************************************************************/
/* Copyright 2004 by SEED Incorporated. */
/* All rights reserved. Property of SEED Incorporated. */
/* Restricted rights to use, duplicate or disclose this code are */
/* granted through contract. */
/* */
/********************************************************************/
/*
*---------dm642main.c---------
* This example uses a timer to read and write the ESAM.
*/
#include <stdio.h>
#include <csl.h>
#include <std.h>
#include <csl_emifa.h>
#include <csl_irq.h>
#include <csl_chip.h>
#include <csl_timer.h>
#include "seeddm642.h"
#include "gzip.h"
#pragma DATA_SECTION(fin, "extern_fin");
unsigned char fin[71418];
int fin_index=0;
int fin_left ;
#pragma DATA_SECTION(fout, "extern_fout");
unsigned char fout[512*1024];
int fout_index=0;
int fout_left;
/*
int decompress=1;
int part_nb=0;
int method = 8;
int level = 6;
long bytes_in;
long bytes_out;
long total_in = 0;
long total_out = 0;
unsigned insize=0;
unsigned inptr=0;
unsigned outcnt=0; */
long header_bytes=0;
int ascii = 0; /* convert end-of-lines to local OS conventions */
int to_stdout = 0; /* output to stdout (-c) */
int decompress = 0; /* decompress (-d) */
int force = 0; /* don't ask questions, compress links (-f) */
int no_name = -1; /* don't save or restore the original file name */
int no_time = -1; /* don't save or restore the original file time */
int recursive = 0; /* recurse through directories (-r) */
int list = 0; /* list the file contents (-l) */
int verbose = 0; /* be verbose (-v) */
int quiet = 0; /* be very quiet (-q) */
int do_lzw = 0; /* generate output compatible with old compress (-Z) */
int test = 0; /* test .gz file integrity */
int foreground; /* set if program run in foreground */
char *progname; /* program name */
//int maxbits = BITS; /* max bits per code for LZW */
int method = DEFLATED;/* compression method */
int level = 6; /* compression level */
int exit_code = OK; /* program exit code */
int save_orig_name; /* set if original name must be saved */
int last_member; /* set for .zip and .Z files */
int part_nb; /* number of parts in .gz file */
long time_stamp; /* original time stamp (modification time) */
long ifile_size; /* input file size, -1 for devices (debug only) */
char *env; /* contents of GZIP env variable */
char **args = NULL; /* argv pointer if GZIP env variable defined */
//char z_suffix[MAX_SUFFIX+1]; /* default suffix (can be set with --suffix) */
int z_len; /* strlen(z_suffix) */
long bytes_in; /* number of input bytes */
long bytes_out; /* number of output bytes */
long total_in = 0; /* input bytes for all files */
long total_out = 0; /* output bytes for all files */
int remove_ofname = 0; /* remove output file on error */
//struct stat istat; /* status for input file */
int ifd; /* input file descriptor */
int ofd; /* output file descriptor */
unsigned insize; /* valid bytes in inbuf */
unsigned inptr; /* index of next byte to be processed in inbuf */
unsigned outcnt; /* bytes in output buffer */
#pragma DATA_SECTION(inbuf, "extern_inbuf");
unsigned char inbuf[INBUFSIZ +INBUF_EXTRA];
#pragma DATA_SECTION(outbuf, "extern_outbuf");
unsigned char outbuf[OUTBUFSIZ+OUTBUF_EXTRA];
#pragma DATA_SECTION(d_buf, "extern_dbuf");
unsigned short d_buf[DIST_BUFSIZE];
#pragma DATA_SECTION(window, "extern_window");
unsigned char window[2L*WSIZE];
extern Start_SlaveSerial();
void clear_bufs();
void main()
{
CSL_init();
memcpy(fin,(char*)0x9006e906,71481);
memset(fout,0,512*1024);
// decompress = 1;
fin_left = 71418;
clear_bufs();
part_nb = 0;
method = get_method(); /* updates ofname if original given */
unzip();
//////
GPIO_RSET(GPGC,0x0);
GPIO_RSET(GPEN,0x610a);
GPIO_RSET(GPDIR,0x210a);
GPIO_RSET(GPVAL,0x0000);
Start_SlaveSerial();
}
int get_method(in)
int in; /* input file descriptor */
{
uch flags; /* compression flags */
char magic[2]; /* magic header */
ulg stamp; /* time stamp */
char c;
magic[0] = (char)get_byte();
magic[1] = (char)get_byte();
method = -1; /* unknown yet */
part_nb++; /* number of parts in gzip file */
header_bytes = 0;
// last_member = RECORD_IO;
if (memcmp(magic, GZIP_MAGIC, 2) == 0
|| memcmp(magic, OLD_GZIP_MAGIC, 2) == 0) {
method = (int)get_byte();
flags = (uch)get_byte();
stamp = (ulg)get_byte();
stamp |= ((ulg)get_byte()) << 8;
stamp |= ((ulg)get_byte()) << 16;
stamp |= ((ulg)get_byte()) << 24;
(void)get_byte(); /* Ignore extra flags for the moment */
(void)get_byte(); /* Ignore OS type for the moment */
if ((flags & CONTINUATION) != 0) {
unsigned part = (unsigned)get_byte();
part |= ((unsigned)get_byte())<<8;
}
if ((flags & EXTRA_FIELD) != 0) {
unsigned len = (unsigned)get_byte();
len |= ((unsigned)get_byte())<<8;
while (len--) (void)get_byte();
}
if ((flags & ORIG_NAME) != 0) {
do {c=get_byte();} while (c != 0);
}
if ((flags & COMMENT) != 0) {
while (get_char() != 0) /* null */ ;
}
if (part_nb == 1) {
header_bytes = inptr + 2*4; /* include crc and size */
}
}
return method;
}
void clear_bufs()
{
outcnt = 0;
insize = inptr = 0;
bytes_in = bytes_out = 0L;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -