From 06423cab58569ef01eb526e5f0d2f5c0c8917aa0 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Tue, 23 Nov 2021 20:13:52 +0000 Subject: x1000-installer: Initial commit of new framework This is a new flash installer framework for the X1000 targets. A bunch of this code is *UNTESTED* but there is an external test harness which allows the library to be built and tested on a PC. Once tests are written and the bugs are ironed out this framework will replace the existing installer code. New features: - Update tarballs are MD5-checksummed to guarantee integrity. - The flash map is no longer fixed -- updates are self describing and carry a map file which specifies the areas to update. - Can take full or partial backups with checksums computed on the fly. - Supports an additional verification mode which reads back data after writing to ensure the flash contents were not silently corrupted. Change-Id: I29a89190c7ff566019f6a844ad0571f01fb7192f --- lib/x1000-installer/test_lib/core_alloc.c | 65 +++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 lib/x1000-installer/test_lib/core_alloc.c (limited to 'lib/x1000-installer/test_lib/core_alloc.c') diff --git a/lib/x1000-installer/test_lib/core_alloc.c b/lib/x1000-installer/test_lib/core_alloc.c new file mode 100644 index 0000000000..5d4edb03f7 --- /dev/null +++ b/lib/x1000-installer/test_lib/core_alloc.c @@ -0,0 +1,65 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2021 Aidan MacDonald + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include "core_alloc.h" +#include + +#define N_POINTERS 100 + +static void* pointers[N_POINTERS]; + +int core_alloc(const char* name, size_t size) +{ + (void)name; + + void* mem = malloc(size); + if(!mem) + return -1; + + for(int i = 0; i < N_POINTERS; ++i) { + if(pointers[i]) + continue; + + pointers[i] = mem; + return i + 1; + } + + free(mem); + return -1; +} + +int core_free(int handle) +{ + if(handle > 0) { + free(pointers[handle-1]); + pointers[handle-1] = NULL; + } + + return 0; +} + +void* core_get_data(int handle) +{ + if(handle > 0) + return pointers[handle-1]; + + return NULL; +} -- cgit v1.2.3