rename flash to flash_nrf5x
This commit is contained in:
		
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @@ -121,7 +121,7 @@ endif | |||||||
| # src | # src | ||||||
| C_SOURCE_FILES += $(SRC_PATH)/main.c | C_SOURCE_FILES += $(SRC_PATH)/main.c | ||||||
| C_SOURCE_FILES += $(SRC_PATH)/boards.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_ble_svc.c | ||||||
| C_SOURCE_FILES += $(SRC_PATH)/dfu_init.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 | # keep every function in separate section. This will allow linker to dump unused functions | ||||||
| CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing | CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing | ||||||
| CFLAGS += -fno-builtin --short-enums | CFLAGS += -fno-builtin --short-enums -fstack-usage | ||||||
|  |  | ||||||
| # Defined Symbol (MACROS) | # Defined Symbol (MACROS) | ||||||
| CFLAGS += -DMK_BOOTLOADER_VERSION=0x0$(SD_VER1)0$(SD_VER2)0$(SD_VER3)0$(SD_VER4)UL | 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 <stdint.h> | ||||||
| #include "nrf.h" | #include "nrf.h" | ||||||
| #include "flash.h" | #include "flash_nrf5x.h" | ||||||
|  |  | ||||||
| static __INLINE uint16_t pstorage_flash_page_size() | static __INLINE uint16_t pstorage_flash_page_size() | ||||||
| { | { | ||||||
|   | |||||||
| @@ -95,8 +95,9 @@ | |||||||
|         <file file_name="../boards/pca10059.h" /> |         <file file_name="../boards/pca10059.h" /> | ||||||
|       </folder> |       </folder> | ||||||
|       <file file_name="../dfu_init.c" /> |       <file file_name="../dfu_init.c" /> | ||||||
|       <file file_name="../flash.c" /> |  | ||||||
|       <file file_name="../boards.c" /> |       <file file_name="../boards.c" /> | ||||||
|  |       <file file_name="../flash_nrf5x.h" /> | ||||||
|  |       <file file_name="../flash_nrf5x.c" /> | ||||||
|     </folder> |     </folder> | ||||||
|     <configuration Name="Debug Single" gcc_optimization_level="Debug" /> |     <configuration Name="Debug Single" gcc_optimization_level="Debug" /> | ||||||
|     <configuration |     <configuration | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
|  |  | ||||||
| #include "uf2.h" | #include "uf2.h" | ||||||
| #include "flash.h" | #include "flash_nrf5x.h" | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  |  | ||||||
| #include "boards.h" | #include "boards.h" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user