diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-05-07 16:59:20 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-05-07 16:59:20 +0000 |
commit | 7bbac15cb60bbcbff692c5edaa8a203c3127e958 (patch) | |
tree | 77b8d55c8bdcf52e6484eec897c9e380eb59a8ef /nuttx/include | |
parent | bbbdceb9d13441f4b96257718ed090b8998759f7 (diff) | |
download | px4-nuttx-7bbac15cb60bbcbff692c5edaa8a203c3127e958.tar.gz px4-nuttx-7bbac15cb60bbcbff692c5edaa8a203c3127e958.tar.bz2 px4-nuttx-7bbac15cb60bbcbff692c5edaa8a203c3127e958.zip |
Add STM32 FLASH driver
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3573 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/include')
-rw-r--r-- | nuttx/include/apps/apps.h | 2 | ||||
-rw-r--r-- | nuttx/include/nuttx/progmem.h | 143 |
2 files changed, 144 insertions, 1 deletions
diff --git a/nuttx/include/apps/apps.h b/nuttx/include/apps/apps.h index 866db8e29..d494500d1 100644 --- a/nuttx/include/apps/apps.h +++ b/nuttx/include/apps/apps.h @@ -139,7 +139,7 @@ EXTERN const char *namedapp_getname(int index); * ****************************************************************************/ -EXTERN int exec_namedapp(FAR const char *appname, FAR const char *argv[]); +EXTERN int exec_namedapp(FAR const char *appname, FAR const char **argv); #undef EXTERN #if defined(__cplusplus) diff --git a/nuttx/include/nuttx/progmem.h b/nuttx/include/nuttx/progmem.h new file mode 100644 index 000000000..e9e05ed2c --- /dev/null +++ b/nuttx/include/nuttx/progmem.h @@ -0,0 +1,143 @@ +/**************************************************************************** + * include/nuttx/progmem.h + * + * Copyright(C) 2011 Uros Platise. All rights reserved. + * Author: Uros Platise <uros.platise@isotel.eu> + * + * 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 NuttX 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 OWNER 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 __INCLUDE_NUTTX_PROGMEM_H +#define __INCLUDE_NUTTX_PROGMEM_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> + +#include <stdint.h> +#include <stdbool.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/* Return number of pages */ + +uint16_t up_progmem_npages(void); + +/* Is program memory uniform or page size differs */ + +bool up_progmem_isuniform(void); + +/* Return page size */ + +uint16_t up_progmem_pagesize(uint16_t page); + +/* Address to page conversion + * \param addr Address without flash offet (aligned to page0) + * \return Page or negative value on error + * + * The following errors are reported (errno is not set!) + * - EFAULT: On invalid address + */ + +int up_progmem_getpage(uint32_t addr); + +/* Erase selected page. + * \return page size or negative value on error + * + * The following errors are reported (errno is not set!) + * - EFAULT: On invalid page + * - EIO: On unsuccessful erase + * - EROFS: On access to write protected area + * - EACCES: Insufficient permissions (read/write protected) + * - EPERM: If operation is not permitted due to some other constraints + * (i.e. some internal block is not running etc.) + */ + +int up_progmem_erasepage(uint16_t page); + +/* Checks whether page is erased + * + * Returns number of bytes written or negative value on error. + * If it returns zero then complete page is empty (erased). + * + * The following errors are reported (errno is not set!) + * - EFAULT: On invalid page + */ + +int up_progmem_ispageerased(uint16_t page); + +/* Program data at given address + * \return bytes written or negative value on error + * \param addr Address without flash offet (aligned to page0) + * \param buf Pointer to buffer + * \param count Number of bytes to write + * + * Note: this function is not limited to single page and nor it requires + * the address be aligned inside the page boundaries. + * + * The following errors are reported (errno is not set!) + * - EINVAL: if count is not aligned with the flash boundaries (i.e. + * some MCU's require per half-word or even word access) + * - EFAULT: On invalid address + * - EIO: On unsuccessful write + * - EROFS: On access to write protected area + * - EACCES: Insufficient permissions (read/write protected) + * - EPERM: If operation is not permitted due to some other constraints + * (i.e. some internal block is not running etc.) + */ + +int up_progmem_write(uint32_t addr, const void *buf, size_t count); + +/* \todo: Define the following functions and their options: + * - up_progmem_protect() + * - up_progmem_unprotect() + */ + +#undef EXTERN +#if defined(__cplusplus) +} +#endif + +#endif /* __INCLUDE_NUTTX_PROGMEM_H */ |