rename flash to flash_nrf5x
This commit is contained in:
		
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							@@ -121,7 +121,7 @@ endif
 | 
			
		||||
# src
 | 
			
		||||
C_SOURCE_FILES += $(SRC_PATH)/main.c
 | 
			
		||||
C_SOURCE_FILES += $(SRC_PATH)/boards.c
 | 
			
		||||
C_SOURCE_FILES += $(SRC_PATH)/flash.c
 | 
			
		||||
C_SOURCE_FILES += $(SRC_PATH)/flash_nrf5x.c
 | 
			
		||||
C_SOURCE_FILES += $(SRC_PATH)/dfu_ble_svc.c
 | 
			
		||||
C_SOURCE_FILES += $(SRC_PATH)/dfu_init.c
 | 
			
		||||
 | 
			
		||||
@@ -250,7 +250,7 @@ CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
 | 
			
		||||
 | 
			
		||||
# keep every function in separate section. This will allow linker to dump unused functions
 | 
			
		||||
CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
 | 
			
		||||
CFLAGS += -fno-builtin --short-enums
 | 
			
		||||
CFLAGS += -fno-builtin --short-enums -fstack-usage
 | 
			
		||||
 | 
			
		||||
# Defined Symbol (MACROS)
 | 
			
		||||
CFLAGS += -DMK_BOOTLOADER_VERSION=0x0$(SD_VER1)0$(SD_VER2)0$(SD_VER3)0$(SD_VER4)UL
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								src/flash.c
									
									
									
									
									
								
							
							
						
						
									
										85
									
								
								src/flash.c
									
									
									
									
									
								
							@@ -1,85 +0,0 @@
 | 
			
		||||
/**************************************************************************/
 | 
			
		||||
/*!
 | 
			
		||||
    @file     flash.c
 | 
			
		||||
    @author   hathach (tinyusb.org)
 | 
			
		||||
 | 
			
		||||
    @section LICENSE
 | 
			
		||||
 | 
			
		||||
    Software License Agreement (BSD License)
 | 
			
		||||
 | 
			
		||||
    Copyright (c) 2018, Adafruit Industries (adafruit.com)
 | 
			
		||||
    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 holders 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 ''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 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.
 | 
			
		||||
*/
 | 
			
		||||
/**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "flash.h"
 | 
			
		||||
#include "boards.h"
 | 
			
		||||
 | 
			
		||||
#include "nrf_sdm.h"
 | 
			
		||||
 | 
			
		||||
#define FLASH_PAGE_SIZE    4096
 | 
			
		||||
 | 
			
		||||
#define FLASH_CACHE_INVALID_ADDR 0xffffffff
 | 
			
		||||
 | 
			
		||||
static uint32_t _fl_addr = FLASH_CACHE_INVALID_ADDR;
 | 
			
		||||
static uint8_t _fl_buf[FLASH_PAGE_SIZE] __attribute__((aligned(4)));
 | 
			
		||||
 | 
			
		||||
void flash_flush(void)
 | 
			
		||||
{
 | 
			
		||||
  if ( _fl_addr == FLASH_CACHE_INVALID_ADDR ) return;
 | 
			
		||||
 | 
			
		||||
  if ( memcmp(_fl_buf, (void *) _fl_addr, FLASH_PAGE_SIZE) != 0 )
 | 
			
		||||
  {
 | 
			
		||||
    nrf_nvmc_page_erase(_fl_addr);
 | 
			
		||||
    nrf_nvmc_write_words(_fl_addr, (uint32_t *) _fl_buf, FLASH_PAGE_SIZE / sizeof(uint32_t));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  _fl_addr = FLASH_CACHE_INVALID_ADDR;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void flash_write (uint32_t dst, void const *src, int len)
 | 
			
		||||
{
 | 
			
		||||
  uint32_t newAddr = dst & ~(FLASH_PAGE_SIZE - 1);
 | 
			
		||||
 | 
			
		||||
  if ( newAddr != _fl_addr )
 | 
			
		||||
  {
 | 
			
		||||
    flash_flush();
 | 
			
		||||
    _fl_addr = newAddr;
 | 
			
		||||
    memcpy(_fl_buf, (void *) newAddr, FLASH_PAGE_SIZE);
 | 
			
		||||
  }
 | 
			
		||||
  memcpy(_fl_buf + (dst & (FLASH_PAGE_SIZE - 1)), src, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void flash_erase(uint32_t addr, uint32_t bytes)
 | 
			
		||||
{
 | 
			
		||||
  uint32_t page_count = bytes/FLASH_PAGE_SIZE;
 | 
			
		||||
  if ( bytes%FLASH_PAGE_SIZE ) page_count++;
 | 
			
		||||
 | 
			
		||||
  for(uint32_t i=0; i<page_count; i++)
 | 
			
		||||
  {
 | 
			
		||||
    nrf_nvmc_page_erase(addr + i*FLASH_PAGE_SIZE);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								src/flash.h
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								src/flash.h
									
									
									
									
									
								
							@@ -1,58 +0,0 @@
 | 
			
		||||
/**************************************************************************/
 | 
			
		||||
/*!
 | 
			
		||||
    @file     flash.h
 | 
			
		||||
    @author   hathach (tinyusb.org)
 | 
			
		||||
 | 
			
		||||
    @section LICENSE
 | 
			
		||||
 | 
			
		||||
    Software License Agreement (BSD License)
 | 
			
		||||
 | 
			
		||||
    Copyright (c) 2018, Adafruit Industries (adafruit.com)
 | 
			
		||||
    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 holders 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 ''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 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 FLASH_H_
 | 
			
		||||
#define FLASH_H_
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
 | 
			
		||||
#include "nrf_nvmc.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//void flash_erase(uint32_t page_addr);
 | 
			
		||||
void flash_write(uint32_t dst, const void *src, int len);
 | 
			
		||||
void flash_flush(void);
 | 
			
		||||
void flash_erase(uint32_t addr, uint32_t bytes);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* FLASH_H_ */
 | 
			
		||||
							
								
								
									
										89
									
								
								src/flash_nrf5x.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/flash_nrf5x.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
			
		||||
/**************************************************************************/
 | 
			
		||||
/*!
 | 
			
		||||
 @file     flash_nrf5x.c
 | 
			
		||||
 @author   hathach (tinyusb.org)
 | 
			
		||||
 | 
			
		||||
 @section LICENSE
 | 
			
		||||
 | 
			
		||||
 Software License Agreement (BSD License)
 | 
			
		||||
 | 
			
		||||
 Copyright (c) 2018, Adafruit Industries (adafruit.com)
 | 
			
		||||
 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 holders 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 ''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 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.
 | 
			
		||||
*/
 | 
			
		||||
/**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "flash_nrf5x.h"
 | 
			
		||||
#include "boards.h"
 | 
			
		||||
 | 
			
		||||
#include "nrf_sdm.h"
 | 
			
		||||
 | 
			
		||||
#define FLASH_PAGE_SIZE    4096
 | 
			
		||||
 | 
			
		||||
#define FLASH_CACHE_INVALID_ADDR 0xffffffff
 | 
			
		||||
 | 
			
		||||
static uint32_t _fl_addr = FLASH_CACHE_INVALID_ADDR;
 | 
			
		||||
static uint8_t _fl_buf[FLASH_PAGE_SIZE] __attribute__((aligned(4)));
 | 
			
		||||
 | 
			
		||||
void flash_flush(void)
 | 
			
		||||
{
 | 
			
		||||
  if ( _fl_addr == FLASH_CACHE_INVALID_ADDR ) return;
 | 
			
		||||
 | 
			
		||||
  if ( memcmp(_fl_buf, (void *) _fl_addr, FLASH_PAGE_SIZE) != 0 )
 | 
			
		||||
  {
 | 
			
		||||
    // nrf_nvmc_page_erase(_fl_addr);
 | 
			
		||||
    //nrf_nvmc_write_words(_fl_addr, (uint32_t *) _fl_buf, FLASH_PAGE_SIZE/4);
 | 
			
		||||
 | 
			
		||||
    sd_flash_page_erase(_fl_addr/FLASH_PAGE_SIZE);
 | 
			
		||||
    sd_flash_write((uint32_t*) _fl_addr, (uint32_t *) _fl_buf, FLASH_PAGE_SIZE/4);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  _fl_addr = FLASH_CACHE_INVALID_ADDR;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void flash_write (uint32_t dst, void const *src, int len)
 | 
			
		||||
{
 | 
			
		||||
  uint32_t newAddr = dst & ~(FLASH_PAGE_SIZE - 1);
 | 
			
		||||
 | 
			
		||||
  if ( newAddr != _fl_addr )
 | 
			
		||||
  {
 | 
			
		||||
    flash_flush();
 | 
			
		||||
    _fl_addr = newAddr;
 | 
			
		||||
    memcpy(_fl_buf, (void *) newAddr, FLASH_PAGE_SIZE);
 | 
			
		||||
  }
 | 
			
		||||
  memcpy(_fl_buf + (dst & (FLASH_PAGE_SIZE - 1)), src, len);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void flash_erase(uint32_t addr, uint32_t bytes)
 | 
			
		||||
{
 | 
			
		||||
  uint32_t page_count = bytes/FLASH_PAGE_SIZE;
 | 
			
		||||
  if ( bytes%FLASH_PAGE_SIZE ) page_count++;
 | 
			
		||||
 | 
			
		||||
  for(uint32_t i=0; i<page_count; i++)
 | 
			
		||||
  {
 | 
			
		||||
    nrf_nvmc_page_erase(addr + i*FLASH_PAGE_SIZE);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								src/flash_nrf5x.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/flash_nrf5x.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
/**************************************************************************/
 | 
			
		||||
/*!
 | 
			
		||||
 @file     flash_nrf5x.h
 | 
			
		||||
 @author   hathach (tinyusb.org)
 | 
			
		||||
 | 
			
		||||
 @section LICENSE
 | 
			
		||||
 | 
			
		||||
 Software License Agreement (BSD License)
 | 
			
		||||
 | 
			
		||||
 Copyright (c) 2018, Adafruit Industries (adafruit.com)
 | 
			
		||||
 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 holders 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 ''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 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 FLASH_NRF5X_H_
 | 
			
		||||
#define FLASH_NRF5X_H_
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
 | 
			
		||||
#include "nrf_nvmc.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//void flash_erase(uint32_t page_addr);
 | 
			
		||||
void flash_write (uint32_t dst, void const *src, int len);
 | 
			
		||||
void flash_flush(void);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* FLASH_NRF5X_H_ */
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "nrf.h"
 | 
			
		||||
#include "flash.h"
 | 
			
		||||
#include "flash_nrf5x.h"
 | 
			
		||||
 | 
			
		||||
static __INLINE uint16_t pstorage_flash_page_size()
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -95,8 +95,9 @@
 | 
			
		||||
        <file file_name="../boards/pca10059.h" />
 | 
			
		||||
      </folder>
 | 
			
		||||
      <file file_name="../dfu_init.c" />
 | 
			
		||||
      <file file_name="../flash.c" />
 | 
			
		||||
      <file file_name="../boards.c" />
 | 
			
		||||
      <file file_name="../flash_nrf5x.h" />
 | 
			
		||||
      <file file_name="../flash_nrf5x.c" />
 | 
			
		||||
    </folder>
 | 
			
		||||
    <configuration Name="Debug Single" gcc_optimization_level="Debug" />
 | 
			
		||||
    <configuration
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
 | 
			
		||||
#include "uf2.h"
 | 
			
		||||
#include "flash.h"
 | 
			
		||||
#include "flash_nrf5x.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "boards.h"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user