From a6d348917dd527f6197d4e0667e7d98fd36c28ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Th=C3=A9baudeau?= Date: Thu, 17 Nov 2016 18:17:58 +0100 Subject: [PATCH] Add FAT example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zoul RE-Mote revision B is supported. Signed-off-by: Benoît Thébaudeau --- examples/fat/Makefile | 12 +++ examples/fat/Makefile.target | 2 + examples/fat/README.md | 6 ++ examples/fat/example-fat.c | 96 +++++++++++++++++++ examples/fat/project-conf.h | 41 ++++++++ .../18-compile-arm-ports/Makefile | 1 + 6 files changed, 158 insertions(+) create mode 100644 examples/fat/Makefile create mode 100644 examples/fat/Makefile.target create mode 100644 examples/fat/README.md create mode 100644 examples/fat/example-fat.c create mode 100644 examples/fat/project-conf.h diff --git a/examples/fat/Makefile b/examples/fat/Makefile new file mode 100644 index 000000000..3f26b002a --- /dev/null +++ b/examples/fat/Makefile @@ -0,0 +1,12 @@ +DEFINES+=PROJECT_CONF_H=\"project-conf.h\" +CONTIKI = ../.. + +all: example-fat + +CONTIKI_WITH_RIME = 1 + +ifeq ($(TARGET), zoul) + BOARD ?= remote-revb +endif + +include $(CONTIKI)/Makefile.include diff --git a/examples/fat/Makefile.target b/examples/fat/Makefile.target new file mode 100644 index 000000000..82d484d42 --- /dev/null +++ b/examples/fat/Makefile.target @@ -0,0 +1,2 @@ +TARGET = zoul +BOARD ?= remote-revb diff --git a/examples/fat/README.md b/examples/fat/README.md new file mode 100644 index 000000000..0dbf399e4 --- /dev/null +++ b/examples/fat/README.md @@ -0,0 +1,6 @@ +FAT File System Example +======================= + +Supported Hardware (tested or known to work) +-------------------------------------------- +* Zoul: RE-Mote revision B diff --git a/examples/fat/example-fat.c b/examples/fat/example-fat.c new file mode 100644 index 000000000..5b064d319 --- /dev/null +++ b/examples/fat/example-fat.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2016, Benoît Thébaudeau + * 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 holder 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 AND CONTRIBUTORS "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 HOLDER OR CONTRIBUTORS 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. + */ +/*---------------------------------------------------------------------------*/ +/** + * \file + * Example demonstrating how to use the FAT file system. + */ +/*---------------------------------------------------------------------------*/ +#include +#include "contiki.h" +#include "ff.h" +/*---------------------------------------------------------------------------*/ +PROCESS(example_fat_process, "FAT example"); +AUTOSTART_PROCESSES(&example_fat_process); +/*---------------------------------------------------------------------------*/ +#define TEST_FILENAME "test.txt" +#define TEST_LINE "Hello world!" +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(example_fat_process, ev, data) +{ + static FATFS FatFs; /* Work area (file system object) for logical drive */ + FIL fil; /* File object */ + char line[82]; /* Line buffer */ + FRESULT fr; /* FatFs return code */ + + PROCESS_BEGIN(); + + printf("FAT example\n"); + + /* Register work area to the default drive */ + f_mount(&FatFs, "", 0); + + printf("Writing \"%s\" to \"%s\"\n", TEST_LINE, TEST_FILENAME); + + /* Create the test file */ + fr = f_open(&fil, TEST_FILENAME, FA_WRITE | FA_CREATE_ALWAYS); + if(fr) { + printf("f_open() error: %d\n", fr); + PROCESS_EXIT(); + } + + /* Write the test line */ + f_printf(&fil, "%s\n", TEST_LINE); + + /* Close the file */ + f_close(&fil); + + printf("Reading back \"%s\":\n\n", TEST_FILENAME); + + /* Open the test file */ + fr = f_open(&fil, TEST_FILENAME, FA_READ); + if(fr) { + printf("f_open() error: %d\n", fr); + PROCESS_EXIT(); + } + + /* Read all the lines and display them */ + while(f_gets(line, sizeof(line), &fil)) { + printf(line); + } + + /* Close the file */ + f_close(&fil); + + printf("\nDone\n"); + + PROCESS_END(); +} diff --git a/examples/fat/project-conf.h b/examples/fat/project-conf.h new file mode 100644 index 000000000..f1e604063 --- /dev/null +++ b/examples/fat/project-conf.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2016, Benoît Thébaudeau + * 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 holder 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 AND CONTRIBUTORS "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 HOLDER OR CONTRIBUTORS 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. + */ +/*---------------------------------------------------------------------------*/ +#ifndef PROJECT_CONF_H_ +#define PROJECT_CONF_H_ +/*---------------------------------------------------------------------------*/ +#if CONTIKI_TARGET_ZOUL +#define RTC_CONF_INIT 1 +#define RTC_CONF_SET_FROM_SYS 1 +#endif + +#endif /* PROJECT_CONF_H_ */ +/*---------------------------------------------------------------------------*/ diff --git a/regression-tests/18-compile-arm-ports/Makefile b/regression-tests/18-compile-arm-ports/Makefile index a7547cd59..a5bbb1e34 100644 --- a/regression-tests/18-compile-arm-ports/Makefile +++ b/regression-tests/18-compile-arm-ports/Makefile @@ -54,6 +54,7 @@ sensniff/ev-aducrf101mkxz \ cfs-coffee/cc2538dk \ cfs-coffee/openmote-cc2538 \ cfs-coffee/zoul \ +fat/zoul:BOARD=remote-revb \ ipv6/rpl-tsch/zoul \ ipv6/rpl-tsch/zoul:MAKE_WITH_ORCHESTRA=1 \ ipv6/rpl-tsch/zoul:MAKE_WITH_SECURITY=1