From: Asbjørn Sloth Tønnesen Date: Fri, 14 Jan 2011 00:32:44 +0000 (+0000) Subject: Add lpcrc tool X-Git-Url: http://git.asbjorn.biz/?p=rapper.git;a=commitdiff_plain;h=174cf615316851c4c2bff127afc2ad54070066d1 Add lpcrc tool Signed-off-by: Asbjørn Sloth Tønnesen --- diff --git a/tools/lpcrc/.gitignore b/tools/lpcrc/.gitignore new file mode 100644 index 0000000..3719d13 --- /dev/null +++ b/tools/lpcrc/.gitignore @@ -0,0 +1 @@ +lpcrc diff --git a/tools/lpcrc/Makefile b/tools/lpcrc/Makefile new file mode 100644 index 0000000..6957146 --- /dev/null +++ b/tools/lpcrc/Makefile @@ -0,0 +1,12 @@ +CC = gcc +LD = gcc +LDFLAGS = -Wall -O4 -std=c99 +EXES = lpcrc + +all: $(EXES) + +% : %.c + $(LD) $(LDFLAGS) -o $@ $< + +clean: + rm -f $(EXES) diff --git a/tools/lpcrc/lpcrc.c b/tools/lpcrc/lpcrc.c new file mode 100644 index 0000000..75f7880 --- /dev/null +++ b/tools/lpcrc/lpcrc.c @@ -0,0 +1,87 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2010, Roel Verdult + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holders nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#define BLOCK_COUNT 7 +#define BLOCK_LENGTH 4 +#define BLOCK_TOTAL (BLOCK_COUNT*BLOCK_LENGTH) + +typedef unsigned char byte_t; + +int main(int argc, char *argv[]) +{ + FILE* pf; + byte_t buf[BLOCK_TOTAL]; + uint32_t crc = 0; + uint32_t block; + uint32_t cur_crc = 0; + + // Check for required arguments + if (argc < 2) + { + printf("syntax: lpcrc \n"); + return 1; + } + + // Try to open the supplied firmware + if ((pf = fopen(argv[1],"rb")) == NULL) + { + printf("error: could not open file [%s]\n", argv[1]); + return 1; + } + + // Read out the data blocks used for crc calculation + if (fread(buf,1,BLOCK_TOTAL,pf) != BLOCK_TOTAL) + { + printf("error: could not read required bytes\n"); + fclose(pf); + return 1; + } + + // Compute the crc value + for (block=0; block