aboutsummaryrefslogtreecommitdiffstats
path: root/ChibiOS_16.1.5/community/os/various/memtest.h
diff options
context:
space:
mode:
Diffstat (limited to 'ChibiOS_16.1.5/community/os/various/memtest.h')
-rw-r--r--ChibiOS_16.1.5/community/os/various/memtest.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/ChibiOS_16.1.5/community/os/various/memtest.h b/ChibiOS_16.1.5/community/os/various/memtest.h
new file mode 100644
index 0000000..9c31b54
--- /dev/null
+++ b/ChibiOS_16.1.5/community/os/various/memtest.h
@@ -0,0 +1,90 @@
+/*
+ ChibiOS/RT - Copyright (C) 2013-2014 Uladzimir Pylinsky aka barthess
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef MEMTEST_H_
+#define MEMTEST_H_
+
+/*
+ * Memtest types
+ */
+#define MEMTEST_WALKING_ONE (1 << 0)
+#define MEMTEST_WALKING_ZERO (1 << 1)
+#define MEMTEST_OWN_ADDRESS (1 << 2)
+#define MEMTEST_MOVING_INVERSION_ZERO (1 << 3)
+#define MEMTEST_MOVING_INVERSION_55AA (1 << 4)
+#define MEMTEST_MOVING_INVERSION_RAND (1 << 5)
+
+/*
+ * combined types for convenient
+ */
+#define MEMTEST_RUN_ALL (MEMTEST_WALKING_ONE | \
+ MEMTEST_WALKING_ZERO | \
+ MEMTEST_OWN_ADDRESS | \
+ MEMTEST_MOVING_INVERSION_ZERO | \
+ MEMTEST_MOVING_INVERSION_55AA | \
+ MEMTEST_MOVING_INVERSION_RAND)
+
+/*
+ * Memtest data widths
+ */
+#define MEMTEST_WIDTH_8 (1 << 0)
+#define MEMTEST_WIDTH_16 (1 << 1)
+#define MEMTEST_WIDTH_32 (1 << 2)
+#define MEMTEST_WIDTH_64 (1 << 3)
+
+typedef struct memtest_t memtest_t;
+typedef uint32_t testtype;
+
+/*
+ * Error call back.
+ */
+typedef void (*memtestecb_t)(memtest_t *testp, testtype type, size_t index,
+ size_t current_width, uint32_t got, uint32_t expect);
+
+/*
+ *
+ */
+struct memtest_t {
+ /*
+ * Pointer to the test area start. Must be word aligned.
+ */
+ void *start;
+ /*
+ * Test area size in bytes.
+ */
+ size_t size;
+ /*
+ * Allowable data widths mask.
+ */
+ uint32_t width_mask;
+ /*
+ * Error callback pointer. Set to NULL if unused.
+ */
+ memtestecb_t errcb;
+};
+
+/*
+ *
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void memtest_run(memtest_t *testp, uint32_t testmask);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MEMTEST_H_ */