Commit Graph

151 Commits (28cdb37058864c3336005a68e446a23f3fafb37c)

Author SHA1 Message Date
Lingkai Dong b829645cc1 BlockDevice design doc: TDBStore no longer requires flash simulation 2020-12-11 14:56:40 +00:00
Lingkai Dong bfbc18860b KVStore general_tests_phase_1/2: flash simulation no longer required 2020-12-11 14:56:40 +00:00
Lingkai Dong 2064adee7c TDBStore Doxygen: flash characteristics no longer required 2020-12-11 14:56:39 +00:00
Lingkai Dong cfedf1b027 TDBStore whitebox test: flash simulation no longer required 2020-12-11 14:56:39 +00:00
Lingkai Dong 2d8a566718 SecureStore whitebox test: flash simulation no longer required 2020-12-11 14:56:39 +00:00
Lingkai Dong 5880a39f1f TDBStore design doc: flash simulation no longer required 2020-12-11 14:56:38 +00:00
Lingkai Dong 15e582fc27 TDBStore unit test: flash simulation no longer required 2020-12-11 14:56:36 +00:00
Lingkai Dong 3786d3958d kv_config: TDBStore doesn't require flash simulation anymore 2020-12-11 14:55:16 +00:00
Anna Bridge 9f18c445ee
Merge pull request #13908 from LDong-Arm/kvstore_libraries
Restructure KVStore to one library per store type
2020-12-11 13:41:16 +00:00
Martin Kojtal be295e42a4
Merge pull request #13917 from LDong-Arm/move_SFDP
Move SFDP to blockdevice
2020-12-10 13:03:23 +00:00
Lingkai Dong 479b704542 "kvstore_global_api" requires "kvstore" for backward compatibility
PR #13908 replaces the umbrella library for all KVStore from
"kvstore_global_api" to "kvstore". Now "kvstore_global_api"
still exists but is restricted to the global API part only.

By adding "kvstore" as a dependency of "kvstore_global_api",
existing bare metal projects (e.g. mbed-bootloader) that use
the latter library name to pull in the KVStore prototype class
will continue to work.
2020-12-09 17:26:32 +00:00
Lingkai Dong 170c07ccdf KVStore: drop './' from CMake paths 2020-12-09 17:26:32 +00:00
Lingkai Dong 34bbcbff92 Fix astyle in KVStore unit tests 2020-12-09 17:26:32 +00:00
Lingkai Dong 0f5957df14 CMake fix: location of MBED_CONF_FILESYSTEM_PRESENT=1 2020-12-09 17:20:43 +00:00
Lingkai Dong 0c33db04d5 KVStore: componentize CMake definitions into sub-components 2020-12-09 17:20:43 +00:00
Lingkai Dong 26acbd141a Relocate kvstore Greentea tests into each store type's path 2020-12-09 17:20:43 +00:00
Lingkai Dong 8c1dd01066 Relocate kvstore unit tests into each store type's path 2020-12-09 17:20:42 +00:00
Lingkai Dong b3c13bbea9 Update UNITTEST for kvstore 2020-12-09 17:20:42 +00:00
Lingkai Dong 8ba64c4139 Update include paths 2020-12-09 17:20:42 +00:00
Lingkai Dong e27a6e0fa6 Create a kvstore_global_api for the global API and KVMap 2020-12-09 17:20:42 +00:00
Lingkai Dong c2d6e9146c Turn TDBStore and FileSystemStore into standalone libraries 2020-12-09 17:20:42 +00:00
Lingkai Dong 562b31ccd3 Move SFDP unit tests 2020-12-07 12:05:07 +00:00
Lingkai Dong a4907e89df Bring in TDBStore UNITTESTS improvements from PR #13731
Co-authored-by: Seppo Takalo <seppo.takalo@arm.com>
2020-12-02 14:57:43 +00:00
Lingkai Dong fd5b2c569d Avoid force-casting inputs when calling std::min() 2020-12-02 14:57:43 +00:00
Lingkai Dong cf977b7aae TDBStore: the work buffer is at least the program size or 64 bytes
Previously, we always set the work buffer to 64 bytes, without
checking it was no less the actual program size. But we can't
simply switch to use the program size for the work buffer,
because if it's too small (e.g. 1 byte in some cases), we
will not be able to read the status header (24 bytes), and
small buffers means more underlying write operations and
lower efficiency.

This PR changes the work buffer size to be the program size,
or 64 bytes as an absolute minimum like before.
2020-12-02 14:57:43 +00:00
Lingkai Dong ece756c0c4 TDBStore: pad record header to whole program size before storing it
Previously, when writing a record header into a TDBStore, we
took the pointer to the record_header_t variable as the input,
but used a program-aligned chunk size which is larger.
As a result, garbage from the stack memory gets written.

This commit fixes that by buffering the record header.

Co-authored-by: Seppo Takalo <seppo.takalo@arm.com>
2020-12-02 14:57:22 +00:00
Lingkai Dong 23702ff2b3 Update include paths to SFDP.h 2020-11-26 17:31:31 +00:00
Lingkai Dong 5d2fbdc11e Move SFDP into blockdevice where it belongs to 2020-11-26 17:31:31 +00:00
Martin Kojtal aea691a67a
Merge pull request #13960 from harmut01/2260_erase_size_const
Add const keyword to get_erase_size declaration
2020-11-26 15:54:07 +00:00
Martin Kojtal 61e4b55a22
Merge pull request #13947 from LDong-Arm/erase_algorithm_fix
Fix erase type determination for [Q/O/]BlockDevice::erase()
2020-11-26 15:53:03 +00:00
Lingkai Dong c41f7cb864 Fix integer type warnings in SFDP and *SPIFBlockDevice 2020-11-26 10:28:58 +00:00
Martin Kojtal 66ca70af94
Merge pull request #13949 from LDong-Arm/fat_filesystem_test_fix
Fix mbed::Dir type handling in fat_filesystem
2020-11-25 14:38:18 +00:00
Harrison Mutai 9857a4d63b Add const keyword to get_erase_size declaration
Add const to function declaration. Const objects cannot access const
safe functions, a compiler error is thrown if one tries to do so. This
helps ensure that the object calling the method will not be modified.
This is espescially desirable in functions where all we need to do is
query existing data and not make any alterations.
2020-11-25 13:09:06 +00:00
Lingkai Dong 04915198d4 Fix mbed::Dir type handling in fat_filesystem
Full credits to @kjbracey-arm for the fix.

Co-authored-by: Kevin Bracey <kevin.bracey@arm.com>
2020-11-24 17:00:20 +00:00
Martin Kojtal 2f709cc13f
Merge pull request #13896 from jeromecoutant/PR_OSPI
STM32 OSPI support
2020-11-24 13:53:30 +00:00
Martin Kojtal 57bbb4739b
Merge pull request #13085 from pea-pod/remove-deprecated-mbed-assert
Change MBED_STATIC_ASSERTs version for built-in
2020-11-24 13:38:07 +00:00
Lingkai Dong 7525134532 [Q/O/]SPIFBlockDevice: remove logic for unaligned erase, as alignment is checked
[Q/O/SPIFBlockDevice::erase() begin with an alignment check,
after which unaligned erases should not happen or be allowed.

If the erase address is not aligned to the value returned by
sfdp_iterate_next_largest_erase_type(), it indicates an
internal error in erase table parsing which should not be
hidden.
2020-11-23 15:55:24 +00:00
Lingkai Dong 13c5b64e16 general_tests_phase_2: SecureStore's underlying TDBStore must be large enough
The test case set_add_data_set_key_value_five_Kbytes stores
5KB of value, and to allow for overheads, we allocate at least
8KB per area of TDBStore (so 16KB for two areas of a whole
TDBStore).
2020-11-12 16:46:03 +00:00
Lingkai Dong 76cf78d654 general_block_device: optimize test_contiguous_erase_write_read() buffer size for large-sector flashes 2020-11-12 14:36:55 +00:00
Lingkai Dong 4a47709cb0 Fix OSPIFBlockDevice program size
From the datasheet of the only OctaSPI flash we currently support
(http://www.mt-system.ru/sites/default/files/docs/Macronix/mx25lm51245g_3v_512mb_v0.01.pdf):

After program/erase command is issued, auto program/erase
algorithms which program/erase and verify the specified page
or sector/block locations will be executed. Program command is
executed on byte basis, or page (256 bytes) basis, or word basis.
Erase command is executed on sector (4K-byte), or block (64K-byte),
or whole chip basis.

So the minimum write size is one byte.
2020-11-12 14:36:55 +00:00
Lingkai Dong 9f3ada3131 Fix printing of contiguous_erase_size 2020-11-12 14:36:55 +00:00
Lingkai Dong c61445a787 QSPIFBlockDevice: fix misconception in minimum program size
Prior to this PR, the minimum program size (QSPI_MIN_PROG_SIZE) of
QSPIFBlockDevice was 256 by default and 512 for some targets.
Those values were in fact page sizes, not program sizes.

Here's an explanation:
* Most QSPI flashes can be programmed to a granularity of a
  single byte or a few bytes - no need to be a whole page.
  This should be the value of QSPI_MIN_PROG_SIZE. Applications
  need to align buffer sizes to this granularity when
  programming QSPI flashes.
* Each sending of the underlying QSPI program signal requires
  destination bytes to be located within the same page.
  If a QSPIFBlockDevice::program() call crosses page boundaries,
  this function breaks down the operation into multiple chunks,
  so it's not a concern for the application.

So this PR changes the default program size to 1 (byte), and
for targets with a 4-byte (1-word) read size it overrides the
program size.

Note: No config is needed for the page size, as it comes from
the SFDP table parsed during initialisation.
2020-11-12 14:36:55 +00:00
Martin Kojtal 65097e1c07
Merge pull request #13878 from evedon/blockdevice-library
Add missing blockdevice mbed_lib.json
2020-11-12 08:44:48 +00:00
jeromecoutant 4cf3a7f0f2 OSPIF: dummy cycles update 2020-11-10 18:38:21 +01:00
Hugues Kamba bf84a5b329 CMake: Rename CMake targets
* mbed-os renamed mbed-core
* mbed-os-<COMPONENT> renamed mbed-<COMPONENT>
2020-11-06 17:25:22 +00:00
Martin Kojtal 8529e88e61 cmake: fix present inclusion
We use only _PRESENT macros for components if they are enabled. Use the same in
the mbed.h file or anywhere else.
2020-11-06 17:25:21 +00:00
Hugues Kamba fa98689639 CMake: Componentize Mbed OS into multiple CMake targets (#13732)
Aside from the core mbed-os CMake target, a number of targets have been created so they can optionally be included by application executables that require them using `target_link_libraries()`.

Co-authored-by: Martin Kojtal <martin.kojtal@arm.com>
Co-authored-by: Rajkumar Kanagaraj <rajkumar.kanagaraj@arm.com>
2020-11-06 17:25:21 +00:00
Martin Kojtal 5a1d64aae5 CMake: Fix blockdevice components source and include paths
This file paths were updated on master and this was broken after
rebasing.
2020-11-06 17:25:19 +00:00
Martin Kojtal 14c6af1558 cmake: fix sd component recent dir structure 2020-11-06 17:25:19 +00:00
Hugues Kamba f12f9adbed CMake: Fix failures due to device_key and storage dirs move 2020-11-06 17:25:19 +00:00
Hugues Kamba 396ddc7a4d CMake: Fix build due to system_storage and netsocket dir move in master 2020-11-06 17:25:17 +00:00
Hugues Kamba bd45acba8c CMake: Fix failure due to kvstore and cellular dirs changes 2020-11-06 17:25:16 +00:00
Hugues Kamba b78ef7ac08 CMake: Fix CI error due to dir restruct of rtos and storage dirs 2020-11-06 17:25:16 +00:00
Hugues Kamba a08be8c8a0 CMake: Add support for storage dir 2020-11-06 17:25:15 +00:00
Martin Kojtal 77638f9b72
Merge pull request #13698 from boraozgen/bugfix/spif-read-dummy-bytes
Fix SPIF read dummy cycles not being reset
2020-11-05 15:44:00 +00:00
Evelyne Donnaes f4b7f44d93 Added missing blockdevice mbed_lib.json 2020-11-02 16:35:26 +00:00
pea-pod 507181d262 Change MBED_STATIC_ASSERTs version for built-in 2020-10-27 08:30:40 -05:00
Harrison Mutai 6bfe651aad Remove erroneous character from SPDX identifer
Erroneous '/' was appended to start of comment. This was causing CMake
warning during complition. Removes character from affected files.
2020-10-23 15:08:58 +01:00
Harrison Mutai 4fad1112e5 Add SPDX license identifier to Arm files
Add license identifier to files which Arm owns the copyright to,
and contain either BSD-3 or Apache-2.0 licenses. This is to address
license errors raised by scancode analysis.
2020-10-15 10:47:27 +01:00
Bora Özgen ad9385ce2b Fix SFDP read dummy cycles not being reset 2020-10-02 15:02:00 +02:00
Martin Kojtal 21652971a5
Merge pull request #12644 from macronix/macronix_ospi
Add OSPI driver to support the Octa mode of Macronix octaflash MX25LM51245G
2020-09-30 16:07:20 +01:00
Martin Kojtal a02ea2f43a
Merge pull request #13623 from rajkan01/refactor_docs
Refactor mbed-os design docs
2020-09-21 16:28:13 +01:00
Rajkumar Kanagaraj f79e2791bf Refactor storage docs 2020-09-17 16:07:22 +01:00
Martin Kojtal 33a538ab6c
Merge pull request #13593 from LDong-Arm/platform_storage_default_requirements
STM32F: skip LittleFileSystem default instance and TDBStore tests
2020-09-17 15:21:40 +01:00
rogeryou 48524f25ae add opsi driver 2020-09-16 11:27:23 +08:00
Lingkai Dong 8910ec6db2 kvstore general_tests_phase_1/2 tests: Skip TDBStore if FlashIAP sector size is non-uniform
By default TDBStore requires blocks to have the same size.
2020-09-11 10:12:58 +01:00
Lingkai Dong 577d450c7b PlatformStorage: skip LittleFileSystem on internal flash with non-uniform sectors 2020-09-11 09:58:22 +01:00
Martin Kojtal 6bfd89e656
Merge pull request #13196 from gbrtth/musca_s1_support_mbed6
Add ARM_MUSCA_S1 as a new target platform
2020-09-10 16:53:14 +01:00
Gabor Toth bdf2306f16 Add platform support to Musca S1
Change-Id: Iebdd4bc402446caba6b7bd894eddb0a85ed884d8
Signed-off-by: Mark Horvath <mark.horvath@arm.com>
Signed-off-by: Gabor Toth <gabor.toth@arm.com>
2020-09-10 14:53:41 +02:00
Jaeden Amero 39e69d328d Use boot stack size from config system
To allow overriding of the boot stack size from the Mbed configuration
system, consistently use MBED_CONF_TARGET_BOOT_STACK_SIZE rather than
MBED_BOOT_STACK_SIZE.

Fixes #10319
2020-09-10 10:08:38 +01:00
Martin Kojtal bb618d04cb
Merge pull request #13484 from jeromecoutant/PR_KVSTORE_TESTS
KVSTORE tests: move directories
2020-09-09 09:50:38 +01:00
Martin Kojtal 9767ae8c18
Merge pull request #13552 from LDong-Arm/general_block_device_test_fix
general_block_device test: support non-uniform erase sizes
2020-09-07 13:22:40 +01:00
Martin Kojtal 41f2ee54f9
Merge pull request #13430 from LDong-Arm/refactor_frameworks
Relocated libraries in features/frameworks
2020-09-07 09:10:56 +01:00
Lingkai Dong 3b9335055b general_block_device test: allocate buffers enough for the largest sector
Previously we get the common erase size of the whole flash, which
may or may not exists if there are multiple regions. In this case
the size returned is zero and the test fails.

Fix this by allocating read and write buffers that are large enough
for all sectors. The test itself already supports non-uniform
erase sizes, and the erase size at any address can be smaller
than our buffers.
2020-09-04 16:05:10 +01:00
Lingkai Dong feb1023849 test_program_read_small_data_sizes: get erase size specific to the sector we use
The test case only uses one specific sector, but the erase size
is obtained for the whole block device instead. This doesn't work
if different regions of the flash don't have a common erase size.

Fix the issue by getting the erase size at the address we use.
2020-09-04 16:02:53 +01:00
cyliangtw 1651aa9bc6 Set M252 Flash internal size as 8KB for kv store 2020-09-02 20:21:29 +08:00
Lingkai Dong a88438ce04 Move mbed-trace into platform 2020-09-02 12:30:59 +01:00
jeromecoutant ff76c0193a KVSTORE tests: move directories to make shorter test name
This allows compilation in Windows environment with name length constraint
2020-08-27 10:57:20 +02:00
Anna Bridge 4ba1a5433f
Merge pull request #13433 from LDong-Arm/refactor_device_key
Refactor device_key
2020-08-24 12:56:10 +01:00
Lingkai Dong 61fd872cc3 QSPIF: options to preset reset sequence for legacy SFDP
The first revision (1.0) of SFDP (ref: JESD216) does not include
fields for software reset support. It's only been added in the
second revision (1.5) (ref: JESD216A).

Some Mbed OS targets such as DISCO_F746NG include flashes with
legacy SFDP, thus we add an option to preset the reset mode.
2020-08-21 11:37:47 +01:00
Rajkumar Kanagaraj ef18003588 Rename to more readable include header directory component name 2020-08-18 13:10:50 +01:00
Rajkumar Kanagaraj bf58572c4d Refactor storage COMPONENT_xx directory 2020-08-17 16:44:05 +01:00
Lingkai Dong 3681a874e6 Restruture device_key
Restructure device_key to have
* include/device_key - header
* source - source file
* tests/TESTS - Greentea test
2020-08-14 17:31:11 +01:00
Raymond Ngun 1be0b1f297 CYTFM_064B0S2_4343W: Inital creation of PSA target
Target is similar to CY8CKIT_064B0S2_4343W but with PSA
and TFM enabled.

Signed-off-by: Raymond Ngun <raymond.ngun@cypress.com>
2020-08-07 08:02:01 -07:00
Rajkumar Kanagaraj 8a0ba8f0c2 Refactor storage/system_storage directory 2020-07-23 08:30:49 -07:00
Martin Kojtal 1d9c13ed5b
Merge pull request #13307 from rajkan01/storage_kv_dir_resturcture
Restructure storage kvstore directory
2020-07-23 15:59:07 +01:00
Rajkumar Kanagaraj ca84e11a22 Fix CI build issue with GCC_ARM and ARMC6 toolchain 2020-07-22 10:23:12 -07:00
Robert Walton 5bdd6abeaf Remove doubly defined symbol from mbed_lib.json 2020-07-22 10:02:53 +01:00
Rajkumar Kanagaraj d956116c36 Update greentea config, header reference 2020-07-20 07:33:52 -07:00
Rajkumar Kanagaraj bb14b9ff8f move greentea and UNITTESTS closure to library 2020-07-20 07:28:53 -07:00
Rajkumar Kanagaraj 72b4a14536 Refactor sub-directories - securestore, direct_access_devicekey, conf 2020-07-20 07:28:53 -07:00
Rajkumar Kanagaraj d05d3471fe Refactore storage/kvstore directory 2020-07-20 07:28:53 -07:00
Rajkumar Kanagaraj 51247d0c4c Update header path reference 2020-07-17 12:42:11 -07:00
Rajkumar Kanagaraj 41f0796484 Move greentea test closure to library 2020-07-17 12:42:11 -07:00
Rajkumar Kanagaraj b340492142 Refactor storage/filesystem directory 2020-07-17 12:42:11 -07:00
Rajkumar Kanagaraj d47689be8e Move storgae unittests 2020-07-17 03:10:58 -07:00
Rajkumar Kanagaraj 9aec1012a0 Move storgae greentea test 2020-07-17 03:10:58 -07:00
Rajkumar Kanagaraj e92efbd800 Update the header file reference 2020-07-17 03:10:58 -07:00
Rajkumar Kanagaraj 036831e172 Refactor storage/blockdevice directory 2020-07-17 03:10:58 -07:00
Rajkumar Kanagaraj 3f080dfd65 update the path in license, readme markdown, astyleignore 2020-07-13 05:24:45 -07:00