Small changes from review of last PR

This commit is contained in:
Gregory Nutt 2017-03-22 15:53:12 -06:00
parent 6710e58a32
commit 947acd6c1a
4 changed files with 24 additions and 32 deletions

View File

@ -2634,10 +2634,12 @@ config STM32_FLASH_PREFETCH
properly and enabling this option may interfere with ADC accuracy. properly and enabling this option may interfere with ADC accuracy.
config STM32_FLASH_WORKAROUND_DATA_CACHE_CORRUPTION_ON_RWW config STM32_FLASH_WORKAROUND_DATA_CACHE_CORRUPTION_ON_RWW
bool "Enable the workaround to fix flash data cache corruption when reading from one flash bank while writing on other flash bank" bool "Workaround for FLASH data cache corruption"
default n default n
---help--- ---help---
See your STM32 errata to check if your STM32 is affected by this problem. Enable the workaround to fix flash data cache corruption when reading
from one flash bank while writing on other flash bank. See your STM32
errata to check if your STM32 is affected by this problem.
choice choice
prompt "JTAG Configuration" prompt "JTAG Configuration"

View File

@ -392,7 +392,6 @@
* Public Functions * Public Functions
************************************************************************************/ ************************************************************************************/
void stm32_flash_initialize(void);
void stm32_flash_lock(void); void stm32_flash_lock(void);
void stm32_flash_unlock(void); void stm32_flash_unlock(void);

View File

@ -48,8 +48,10 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include <nuttx/arch.h> #include <nuttx/arch.h>
#include <errno.h>
#include <stdbool.h> #include <stdbool.h>
#include <semaphore.h>
#include <assert.h>
#include <errno.h>
#include "stm32_flash.h" #include "stm32_flash.h"
#include "stm32_rcc.h" #include "stm32_rcc.h"
@ -82,31 +84,27 @@
#define FLASH_SR_WRITE_PROTECTION_ERROR FLASH_SR_WRPERR #define FLASH_SR_WRITE_PROTECTION_ERROR FLASH_SR_WRPERR
#endif #endif
/************************************************************************************
* Private Data
************************************************************************************/
static sem_t g_sem = SEM_INITIALIZER(1);
/************************************************************************************ /************************************************************************************
* Private Functions * Private Functions
************************************************************************************/ ************************************************************************************/
static sem_t g_sem;
/*
* After all SMT32 boards starts calling stm32_flash_initialize() this can
* be removed.
*/
static bool g_initialized = false;
static void sem_lock(void) static void sem_lock(void)
{ {
if (g_initialized) while (sem_wait(&g_sem) < 0)
{ {
sem_wait(&g_sem); DEBUGASSERT(errno == EINTR);
} }
} }
static void sem_unlock(void) static inline void sem_unlock(void)
{ {
if (g_initialized) sem_post(&g_sem);
{
sem_post(&g_sem);
}
} }
static void flash_unlock(void) static void flash_unlock(void)
@ -137,24 +135,18 @@ static void data_cache_disable(void)
static void data_cache_enable(void) static void data_cache_enable(void)
{ {
/* reset data cache */ /* Reset data cache */
modifyreg32(STM32_FLASH_ACR, 0, FLASH_ACR_DCRST); modifyreg32(STM32_FLASH_ACR, 0, FLASH_ACR_DCRST);
/* enable data cache */ /* Enable data cache */
modifyreg32(STM32_FLASH_ACR, 0, FLASH_ACR_DCEN); modifyreg32(STM32_FLASH_ACR, 0, FLASH_ACR_DCEN);
} }
/************************************************************************************ /************************************************************************************
* Public Functions * Public Functions
************************************************************************************/ ************************************************************************************/
void stm32_flash_initialize(void)
{
g_initialized = true;
/*
* Initialize the semaphore that manages exclusive access flash registers
*/
sem_init(&g_sem, 0, 1);
}
void stm32_flash_unlock(void) void stm32_flash_unlock(void)
{ {
@ -171,7 +163,6 @@ void stm32_flash_lock(void)
} }
#if defined(CONFIG_STM32_STM32F10XX) || defined(CONFIG_STM32_STM32F30XX) #if defined(CONFIG_STM32_STM32F10XX) || defined(CONFIG_STM32_STM32F30XX)
size_t up_progmem_pagesize(size_t page) size_t up_progmem_pagesize(size_t page)
{ {
return STM32_FLASH_PAGESIZE; return STM32_FLASH_PAGESIZE;

View File

@ -63,7 +63,7 @@
* Name: stm32_spidev_initialize * Name: stm32_spidev_initialize
* *
* Description: * Description:
* Called to configure SPI chip select GPIO pins for the stm32f4discovery board. * Called to configure SPI chip select GPIO pins for the Mikroe Clicker2 STM32 board.
* *
************************************************************************************/ ************************************************************************************/