Restructure libs source to support multi platform
[fw/stlink] / example / libstm32l_discovery / src / stm32l1xx_flash_ramfunc.c
diff --git a/example/libstm32l_discovery/src/stm32l1xx_flash_ramfunc.c b/example/libstm32l_discovery/src/stm32l1xx_flash_ramfunc.c
deleted file mode 100644 (file)
index aefaf96..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-/**\r
-  ******************************************************************************\r
-  * @file    stm32l1xx_flash_ramfunc.c\r
-  * @author  MCD Application Team\r
-  * @version V1.0.0\r
-  * @date    31-December-2010\r
-  * @brief   This file provides all the Flash firmware functions which should be\r
-  *          executed from the internal SRAM. This file should be placed in \r
-  *          internal SRAM. \r
-  *          Other FLASH memory functions that can be used from the FLASH are \r
-  *          defined in the "stm32l1xx_flash.c" file. \r
-  *  @verbatim   \r
-  *    \r
-  *          ARM Compiler\r
-  *          ------------\r
-  *          RAM functions are defined using the toolchain options. \r
-  *          Functions that are be executed in RAM should reside in a separate\r
-  *          source module. Using the 'Options for File' dialog you can simply change\r
-  *          the 'Code / Const' area of a module to a memory space in physical RAM.\r
-  *          Available memory areas are declared in the 'Target' tab of the \r
-  *          'Options for Target' dialog.\r
-  *          \r
-  *          ICCARM Compiler\r
-  *          ---------------\r
-  *          RAM functions are defined using a specific toolchain keyword "__ramfunc".  \r
-  *          \r
-  *          GNU Compiler\r
-  *          ------------\r
-  *          RAM functions are defined using a specific toolchain attribute\r
-  *          "__attribute__((section(".data")))".\r
-  *          \r
-  *          TASKING Compiler\r
-  *          ----------------\r
-  *          RAM functions are defined using a specific toolchain pragma. This \r
-  *          pragma is defined inside this file.  \r
-  *          \r
-  *  @endverbatim     \r
-  *\r
-  ******************************************************************************\r
-  * @attention\r
-  *\r
-  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
-  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
-  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
-  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
-  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
-  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
-  *\r
-  * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
-  ******************************************************************************  \r
-  */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32l1xx_flash.h"\r
-\r
-/** @addtogroup STM32L1xx_StdPeriph_Driver\r
-  * @{\r
-  */\r
-\r
-/** @defgroup FLASH \r
-  * @brief FLASH driver modules\r
-  * @{\r
-  */ \r
-\r
-/* Private typedef -----------------------------------------------------------*/\r
-/* Private define ------------------------------------------------------------*/\r
-/* Private macro -------------------------------------------------------------*/\r
-/* Private variables ---------------------------------------------------------*/\r
-/* Private function prototypes -----------------------------------------------*/\r
-static __RAM_FUNC GetStatus(void);\r
-static __RAM_FUNC WaitForLastOperation(uint32_t Timeout);\r
-\r
-/* Private functions ---------------------------------------------------------*/\r
\r
-/** @defgroup FLASH_Private_Functions\r
-  * @{\r
-  */ \r
-\r
-/** @addtogroup FLASH_Group1\r
- *\r
-@verbatim  \r
-@endverbatim\r
-  * @{\r
-  */  \r
-#if defined (  __TASKING__  )\r
-#pragma section_code_init on\r
-#endif\r
-\r
-/**\r
-  * @brief  Enable or disable the power down mode during RUN mode.\r
-  * @note: This function can be used only when the user code is running from Internal SRAM\r
-  * @param  NewState: new state of the power down mode during RUN mode.\r
-  *   This parameter can be: ENABLE or DISABLE.\r
-  * @retval None\r
-  */\r
-__RAM_FUNC FLASH_RUNPowerDownCmd(FunctionalState NewState)\r
-{\r
-  FLASH_Status status = FLASH_COMPLETE;\r
\r
-  if (NewState != DISABLE)\r
-  {\r
-     /* Unlock the RUN_PD bit */\r
-     FLASH->PDKEYR = FLASH_PDKEY1;\r
-     FLASH->PDKEYR = FLASH_PDKEY2;\r
-     \r
-     /* Set the RUN_PD bit in  FLASH_ACR register to put Flash in power down mode */\r
-     FLASH->ACR |= (uint32_t)FLASH_ACR_RUN_PD;\r
-\r
-     if((FLASH->ACR & FLASH_ACR_RUN_PD) != FLASH_ACR_RUN_PD)\r
-     {\r
-       status = FLASH_ERROR_PROGRAM;\r
-     }\r
-  }\r
-  else\r
-  {\r
-    /* Clear the RUN_PD bit in  FLASH_ACR register to put Flash in idle  mode */\r
-    FLASH->ACR &= (uint32_t)(~(uint32_t)FLASH_ACR_RUN_PD);\r
-  }\r
-\r
-  /* Return the Write Status */\r
-  return status;  \r
-}\r
-\r
-/**\r
-  * @}\r
-  */\r
-\r
-/** @addtogroup FLASH_Group2\r
- *\r
-@verbatim  \r
-@endverbatim\r
-  * @{\r
-  */\r
-\r
-/**\r
-  * @brief  Programs a half page in program memory.\r
-  * @param  Address: specifies the address to be written.\r
-  * @param  pBuffer: pointer to the buffer  containing the data to be  written to \r
-  *         the half page.\r
-  * @note   - To correctly run this function, the FLASH_Unlock() function\r
-  *           must be called before.\r
-  *         - Call the FLASH_Lock() to disable the flash memory access  \r
-  *          (recommended to protect the FLASH memory against possible unwanted operation)\r
-  * @note   Half page write is possible only from SRAM.\r
-  * @note   If there are more than 32 words to write, after 32 words another \r
-  *         Half Page programming operation starts and has to be finished.\r
-  * @note   A half page is written to the program memory only if the first \r
-  *         address to load is the start address of a half page (multiple of 128 \r
-  *         bytes) and the 31 remaining words to load are in the same half page.\r
-  * @note   During the Program memory half page write all read operations are \r
-  *         forbidden (this includes DMA read operations and debugger read \r
-  *         operations such as breakpoints, periodic updates, etc.)\r
-  * @note   If a PGAERR is set during a Program memory half page write, the \r
-  *         complete write operation is aborted. Software should then reset the \r
-  *         FPRG and PROG/DATA bits and restart the write operation from the \r
-  *         beginning.                             \r
-  * @retval FLASH Status: The returned value can be:  \r
-  *   FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. \r
-  */\r
-__RAM_FUNC FLASH_ProgramHalfPage(uint32_t Address, uint32_t* pBuffer)\r
-{\r
-  uint32_t count = 0; \r
-   \r
-  FLASH_Status status = FLASH_COMPLETE;\r
-\r
-  /* Wait for last operation to be completed */\r
-  status = WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);\r
-  \r
-  if(status == FLASH_COMPLETE)\r
-  {\r
-    /* if the previous operation is completed, proceed to program the new  \r
-    half page */\r
-    FLASH->PECR |= FLASH_PECR_FPRG;\r
-    FLASH->PECR |= FLASH_PECR_PROG;\r
-    \r
-    /* Write one half page directly with 32 different words */\r
-    while(count < 32)\r
-    {\r
-      *(__IO uint32_t*) (Address + (4 * count)) = *(pBuffer++);\r
-      count ++;  \r
-    }\r
-    /* Wait for last operation to be completed */\r
-    status = WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);\r
\r
-    /* if the write operation is completed, disable the PROG and FPRG bits */\r
-    FLASH->PECR &= (uint32_t)(~FLASH_PECR_PROG);\r
-    FLASH->PECR &= (uint32_t)(~FLASH_PECR_FPRG);\r
-  }\r
-  /* Return the Write Status */\r
-  return status;\r
-}\r
-\r
-/**\r
-  * @}\r
-  */\r
-\r
-/** @addtogroup FLASH_Group3\r
- *\r
-@verbatim  \r
-@endverbatim\r
-  * @{\r
-  */\r
-\r
-/**\r
-  * @brief  Erase a double word in data memory.\r
-  * @param  Address: specifies the address to be erased\r
-  * @note   - To correctly run this function, the DATA_EEPROM_Unlock() function\r
-  *           must be called before.\r
-  *         - Call the DATA_EEPROM_Lock() to he data EEPROM access\r
-  *           and Flash program erase control register access(recommended to protect \r
-  *           the DATA_EEPROM against possible unwanted operation)   \r
-  * @note   Data memory double word erase is possible only from SRAM.\r
-  * @note   A double word is erased to the data memory only if the first address \r
-  *         to load is the start address of a double word (multiple of 8 bytes)  \r
-  * @note   During the Data memory double word erase, all read operations are \r
-  *         forbidden (this includes DMA read operations and debugger read \r
-  *         operations such as breakpoints, periodic updates, etc.)  \r
-  * @retval FLASH Status: The returned value can be: \r
-  *   FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.\r
-  */\r
-\r
-__RAM_FUNC DATA_EEPROM_EraseDoubleWord(uint32_t Address)\r
-{\r
-  FLASH_Status status = FLASH_COMPLETE;\r
-    \r
-  /* Wait for last operation to be completed */\r
-  status = WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);\r
-  \r
-  if(status == FLASH_COMPLETE)\r
-  {\r
-    /* If the previous operation is completed, proceed to erase the next double word */\r
-    /* Set the ERASE bit */\r
-    FLASH->PECR |= FLASH_PECR_ERASE;\r
-\r
-    /* Set DATA bit */\r
-    FLASH->PECR |= FLASH_PECR_DATA;\r
-   \r
-    /* Write 00000000h to the 2 words to erase */\r
-    *(__IO uint64_t *)Address = 0x00000000;\r
\r
-    /* Wait for last operation to be completed */\r
-    status = WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);\r
-    \r
-    /* If the erase operation is completed, disable the ERASE and DATA bits */\r
-    FLASH->PECR &= (uint32_t)(~FLASH_PECR_ERASE);\r
-    FLASH->PECR &= (uint32_t)(~FLASH_PECR_DATA);\r
-  }  \r
-  /* Return the erase status */\r
-  return status;\r
-}\r
-\r
-/**\r
-  * @brief  Write a double word in data memory without erase.\r
-  * @param  Address: specifies the address to be written.\r
-  * @param  Data: specifies the data to be written.\r
-  * @note   - To correctly run this function, the DATA_EEPROM_Unlock() function\r
-  *           must be called before.\r
-  *         - Call the DATA_EEPROM_Lock() to he data EEPROM access\r
-  *           and Flash program erase control register access(recommended to protect \r
-  *           the DATA_EEPROM against possible unwanted operation)   \r
-  * @note   Data memory double word write is possible only from SRAM.\r
-  * @note   A data memory double word is written to the data memory only if the \r
-  *         first address to load is the start address of a double word (multiple \r
-  *         of double word).  \r
-  * @note   During the Data memory double word write, all read operations are \r
-  *         forbidden (this includes DMA read operations and debugger read \r
-  *         operations such as breakpoints, periodic updates, etc.)    \r
-  * @retval FLASH Status: The returned value can be: \r
-  *   FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. \r
-  */ \r
-__RAM_FUNC DATA_EEPROM_ProgramDoubleWord(uint32_t Address, uint64_t Data)\r
-{\r
-  FLASH_Status status = FLASH_COMPLETE;\r
-    \r
-  /* Wait for last operation to be completed */\r
-  status = WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);\r
-  \r
-  if(status == FLASH_COMPLETE)\r
-  {\r
-    /* If the previous operation is completed, proceed to program the new data*/\r
-    FLASH->PECR |= FLASH_PECR_FPRG;\r
-    FLASH->PECR |= FLASH_PECR_DATA;\r
-    \r
-    /* Write the 2 words */  \r
-     *(__IO uint32_t *)Address = (uint32_t) Data;\r
-     Address += 4;\r
-     *(__IO uint32_t *)Address = (uint32_t) (Data >> 32);\r
-    \r
-    /* Wait for last operation to be completed */\r
-    status = WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);\r
-    \r
-    /* If the write operation is completed, disable the FPRG and DATA bits */\r
-    FLASH->PECR &= (uint32_t)(~FLASH_PECR_FPRG);\r
-    FLASH->PECR &= (uint32_t)(~FLASH_PECR_DATA);     \r
-  }\r
-  /* Return the Write Status */\r
-  return status;\r
-}\r
-\r
-/**\r
-  * @}\r
-  */\r
-\r
-/**\r
-  * @brief  Returns the FLASH Status.\r
-  * @param  None\r
-  * @retval FLASH Status: The returned value can be: FLASH_BUSY, \r
-  *   FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP or FLASH_COMPLETE\r
-  */\r
-static __RAM_FUNC GetStatus(void)\r
-{\r
-  FLASH_Status FLASHstatus = FLASH_COMPLETE;\r
-  \r
-  if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY) \r
-  {\r
-    FLASHstatus = FLASH_BUSY;\r
-  }\r
-  else \r
-  {  \r
-    if((FLASH->SR & (uint32_t)FLASH_FLAG_WRPERR)!= (uint32_t)0x00)\r
-    { \r
-      FLASHstatus = FLASH_ERROR_WRP;\r
-    }\r
-    else \r
-    {\r
-      if((FLASH->SR & (uint32_t)0xFEF0) != (uint32_t)0x00)\r
-      {\r
-        FLASHstatus = FLASH_ERROR_PROGRAM; \r
-      }\r
-      else\r
-      {\r
-        FLASHstatus = FLASH_COMPLETE;\r
-      }\r
-    }\r
-  }\r
-  /* Return the FLASH Status */\r
-  return FLASHstatus;\r
-}\r
-\r
-/**\r
-  * @brief  Waits for a FLASH operation to complete or a TIMEOUT to occur.\r
-  * @param  Timeout: FLASH programming Timeout\r
-  * @retval FLASH Status: The returned value can be: FLASH_BUSY, \r
-  *   FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_COMPLETE or \r
-  *   FLASH_TIMEOUT.\r
-  */\r
-static __RAM_FUNC  WaitForLastOperation(uint32_t Timeout)\r
-{ \r
-  FLASH_Status status = FLASH_COMPLETE;\r
-   \r
-  /* Check for the FLASH Status */\r
-  status = GetStatus();\r
-  \r
-  /* Wait for a FLASH operation to complete or a TIMEOUT to occur */\r
-  while((status == FLASH_BUSY) && (Timeout != 0x00))\r
-  {\r
-    status = GetStatus();\r
-    Timeout--;\r
-  }\r
-  \r
-  if(Timeout == 0x00 )\r
-  {\r
-    status = FLASH_TIMEOUT;\r
-  }\r
-  /* Return the operation status */\r
-  return status;\r
-}\r
-\r
-#if defined (  __TASKING__  )\r
-#pragma section_code_init restore\r
-#endif\r
-\r
-/**\r
-  * @}\r
-  */\r
-   \r
-  /**\r
-  * @}\r
-  */ \r
-\r
-/**\r
-  * @}\r
-  */ \r
-\r
-/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r