Commit Graph

252 Commits (d36f2aacb29bba80c90a1084e0b0341649dc74c9)

Author SHA1 Message Date
Przemyslaw Stekiel ee5953ad74 Add static pinmap support: SDBlockDevice, kvstore, system storage
This is done in order to enable static pin-map for Mbed Cloud Client Example. This should give extra ROM savings, ~1KB.
2019-12-10 12:26:23 +01:00
Kevin Bracey c67816b5ff Adjust code for MbedCRC changes
* Make mbed_error use bitwise MbedCRC call rather than local
  implementation.
* Remove use of POLY_32BIT_REV_ANSI from LittleFS.
* Move some MbedCRC instances closer to use - construction cost is
  trivial, and visibility aids compiler optimisation.
2019-12-02 14:45:37 +02:00
Martin Kojtal 5f7ecea00b
Revert "MbedCRC and CRC HAL revisions" 2019-11-26 13:45:37 +00:00
Martin Kojtal fd22997b60
Merge pull request #11559 from kjbracey-arm/crc
MbedCRC and CRC HAL revisions
2019-11-13 18:24:04 +01:00
Kevin Bracey 8811972201 Adjust code for MbedCRC changes
* Make mbed_error use bitwise MbedCRC call rather than local
  implementation.
* Remove use of POLY_32BIT_REV_ANSI from LittleFS.
* Move some MbedCRC instances closer to use - construction cost is
  trivial, and visibility aids compiler optimisation.
2019-11-13 14:31:49 +02:00
Kyle Kearney 96cfc7393d Disable attempted 4-byte addressing for some boards
4-byte addressing has been seen to cause failures on NORDIC
boards and with Macronix memories. Suppress the attempt to enable it
on that hardware (via vendor quirks and a target check) until either
the failure cause can be fixed or a more robust suppression mechanism
is implemented.
2019-11-12 12:26:26 -08:00
Kyle Kearney 2526b9fc00 QSPIF: Handle fast mode enable via vendor quirks
Use a vendor id check to only perform this enable on devices which define the
 second configuration register where the fast mode enable bit lives.
Change _enable_fast_mode to use the standard status register reading and writing functions
2019-11-12 12:26:26 -08:00
Kyle Kearney 02dbf68e17 QSPIF: Handle parts with extra config registers
Default to 2 status registers, but update this value if necessary
 during vendor quirk handling for parts (currently only Macronix)
 which have one status register and two control registers. For the
 purposes of QSPIFBlockDevice, these are all considered status
 (or at least "status-like") registers because they are all written
 via the Write Status Register instruction.
Set the custom RDCR instruction for Macronix during quirk handling.
Update reading and writing of status registers to handle a variable
 number of status registers.
2019-11-12 12:26:25 -08:00
Kyle Kearney eb5494e7a9 QSPIF: Centralize handling of vendor quirks
Introduce a separate function for handling alterations to device interaction
which are not covered by the SFDP tables and therefore require checking against
the vendor id.
2019-11-12 12:26:25 -08:00
Kyle Kearney 26314d96c5 Don't clear quad enable when clearing block protection
QSPIFBlockDevice::_clear_block_protection() has logic to retain the
WIP and WEL bits in status register 1, but it failed to account for
the situation where the QE bit is also in status register 1.
In _sfdp_set_quad_enabled, note the status register and bit therein
for the quad enable, so that _clear_block_protection can retain it.
2019-11-12 12:26:25 -08:00
Kyle Kearney d2ef56859c QSPIF: Add back enable_fast_mode
This function writes a "config" register to ensure that the flash part
is in high performance mode, not low-power mode. This is required at
by at least MX25R6435F in order to operate at frequencies > 33MHz
(for reference, DISCO_L475VG_IOT01A runs the QSPI interface at 80 MHz).
The config register that this writes does not appear to be covered by
the SFDP spec (JESD216D.01) so this remains the status quo of
unconditional execution, as has been done on master since #8352.
2019-11-12 12:26:25 -08:00
Kyle Kearney 60e4d14577 Fix Astyle issues 2019-11-12 12:26:25 -08:00
Matthew Macovsky 619c5d9e60 Remove redundant QSPI erase alignment 2019-11-12 12:26:25 -08:00
Matthew Macovsky 2154948791 Update QSPI format after enabling 4-byte addressing 2019-11-12 12:26:25 -08:00
Matthew Macovsky 19330da412 Correct typos and formatting 2019-11-12 12:26:25 -08:00
Matthew Macovsky 91141bb397 Add missing debug prints to command functions 2019-11-12 12:26:25 -08:00
Matthew Macovsky d330deef57 Streamline setting of instruction member variables 2019-11-12 12:26:25 -08:00
Matthew Macovsky 4f01392497 Replace power function with bit shift 2019-11-12 12:26:25 -08:00
Matthew Macovsky 8fd1a502f7 Update SDFP erase detection to properly handle legacy erase instruction 2019-11-12 12:26:25 -08:00
Matthew Macovsky ba412734e1 Move configuration of QSPI format to within commands where it is necessary 2019-11-12 12:26:24 -08:00
Matthew Macovsky 08a0b3daeb Clear block protection on non-SST flash devices 2019-11-12 12:26:24 -08:00
Matthew Macovsky cf9b6d565a Enable 4-byte addressing when supported in accordance with the SFDP standard 2019-11-12 12:26:24 -08:00
Matthew Macovsky 4785e83a31 Update flash device reset to conform to SFDP standard 2019-11-12 12:26:24 -08:00
Matthew Macovsky cd78bf9129 Reorder some functions 2019-11-12 12:26:24 -08:00
Matthew Macovsky e2b1ac0972 Update reading/writing of status registers to conform to SFDP standard 2019-11-12 12:26:24 -08:00
RAJKUMAR KANAGARAJ d8e2dd5b47 Incorporated the review comments 2019-11-08 09:50:09 -08:00
RAJKUMAR KANAGARAJ 8ecce14dad Skip Bare metal green tea test for storage related components or the components test cases which is based on RTOS 2019-11-06 04:49:19 -08:00
Seppo Takalo 21987dbefa Remove commented-out code 2019-11-04 16:13:33 +02:00
Seppo Takalo ccb77384f1 Remove linefeeds from debug prints 2019-11-04 16:13:33 +02:00
Seppo Takalo 168b51c415 Add storage related files to baseline unittest.
* Refactor some headers to use relative path from Mbed OS root.
* Refactor some data types to compile on 64bit machines.
* Refactor some debug traces to use mbed_trace.
2019-11-04 16:12:36 +02:00
Martin Kojtal fe12608226
Merge pull request #11444 from jeromecoutant/PR_QSPI_EXTERNAL
QSPI : Define default pins at drivers level
2019-10-21 15:19:08 +02:00
Martin Kojtal 7ba151af99
Merge pull request #11603 from kyle-cypress/pr/qspi-bd-format-error
Report errors returned by _qspi_configure_format
2019-10-18 16:05:49 +02:00
Martin Kojtal b6266b5c01
Merge pull request #11604 from kyle-cypress/pr/qspi-inst-type
Introduce qspi_inst_t type for QSPI instructions
2019-10-18 15:46:03 +02:00
toyowata 5389536953 Add bootloader support for Seeed Arch-MAX 2019-10-17 10:05:03 +09:00
Kyle Kearney 52332f9437 QSPIFBlockDevice: Fix incomplete propagation of qspi_inst_t 2019-10-16 15:31:12 -07:00
Martin Kojtal fa6e01a69f QSPIFBlockDevice: fix type on the namespace mbed 2019-10-16 15:31:12 -07:00
Matthew Macovsky b1916fc498 Introduce qspi_inst_t type for QSPI instructions
Encourage the usage of consistent types (there are currently
 a mix of `int` and `unsigned int` used for qspi instructions)
QSPI commands are limited to 8 bits, to this is a typdef to char
2019-10-16 15:31:11 -07:00
Martin Kojtal 58fe0ba7b0
Merge pull request #11636 from maciejbocianski/fix_EFM32GG11_STK3701_qspi_block_device_config
EFM32GG11_STK3701: add QSPIF component config
2019-10-16 19:12:59 +08:00
jeromecoutant f117d3518d QSPIF frequency setting depends on QSPI memory not target.
This makes new board with the same QSPI memory addition.
2019-10-15 17:36:50 +02:00
jeromecoutant 03837a75b7 QSPIF component should use defined QSPI pins 2019-10-15 17:36:49 +02:00
Kyle Kearney 52cb2c2cfc Avoid stale mutex in QSPIFBlockDevice::read
Update to follow the same `goto exit_point` pattern that is used
by the rest of the functions to avoid leaving the mutex locked
when errors are detected and require the function to abort.
2019-10-14 13:59:47 -07:00
Kyle Kearney 3f20b80859 Reuse existing error for _qspi_configure_format
Use QSPIF_BD_ERROR_DEVICE_ERROR instead of introducing a new error code.
Add tr_error calls whenever _qspi_configure_format fails to aid in debugging.
2019-10-11 14:28:25 -07:00
Kyle Kearney 726a73c048 Report errors returned by _qspi_configure_format
The function returns a qspi_status_t but most usages in QSPIFBlockDevice
assume that it always succeeds.
2019-10-11 14:28:13 -07:00
Anna Bridge 489c30f569
Merge pull request #11297 from kyle-cypress/pr/qspi-dummy-cycles
Differentiate alt and dummy cycles in QSPIF
2019-10-11 14:34:17 +01:00
Anna Bridge 7fb52d9300
Merge pull request #11567 from kyle-cypress/pr-dev/simplify-qspi-params
Simplicy QSPIF target overrides for PSoC6
2019-10-11 12:22:09 +01:00
Maciej Bocianski f6b9d26f4d EFM32GG11_STK3701: add QSPIF component config 2019-10-04 16:37:12 +02:00
Matthew Macovsky 6bba46e48f Differentiate alt and dummy cycles in QSPIF
Propagate separate alt cycle and dummy cycle counts from QSPIFBlockDevice
down to the qspi driver, so that drivers which handle the two separately have
enough information to do so.
2019-09-30 16:17:49 -07:00
Matthew Macovsky baf375f8cb Allow for arbitrary QSPI alt sizes
The QSPI spec allows alt to be any size that is a multiple of the
number of data lines. For example, Micron's N25Q128A uses only a
single alt cycle for all read modes (1, 2, or 4 bits depending on
how many data lines are in use).
2019-09-30 14:45:08 -07:00
Ben Cooke dd778c4126 Add MTS_DRAGONFLY_F413RH platform to mbed-os 2019-09-30 13:50:40 -05:00
Kyle Kearney ea7f6683e4 Simplicy QSPIF target overrides for PSoC6
All current PSoC 6 targets support the same QSPI frequency and minimum
program size. So specify a single entry rather than duplicating for
each device.
2019-09-25 14:53:54 -07:00
Veijo Pesonen 6e26b74fdb Adds missing include required by fixed-width format specifiers 2019-09-05 13:20:11 +03:00
Martin Kojtal c74d67ed52
Merge pull request #10711 from geky/add-i2cee-driver
Add i2cee-driver to components
2019-08-30 17:04:01 +02:00
Kyle Kearney 1facc76d22 Specify QSPI frequency for more Cypress targets
Provide values for CY8CKIT_062S2_43012 and CYW943012P6EVB_01
2019-08-28 17:56:27 -07:00
Michal Paszta 5a9183c549 storage: fix potential memory corruption and check return values 2019-08-21 09:26:35 +03:00
Martin Kojtal 101ae73b87
Merge pull request #11063 from linlingao/f_cc3220sf_launchxl
Add CC3220SF_Launchxl to Mbed OS
2019-08-19 12:08:11 +02:00
Pavel Slama 4974c86b54 astyle fix bracket 2019-08-13 21:48:18 +02:00
Pavel Slama 7b0a8f23a2 atyle format 2019-08-13 21:42:10 +02:00
Michal Paszta 73b122b2c4 Coverity and compilation warnings fixes 2019-08-07 10:30:52 +03:00
Pavel Slama 7ff5a45a24 replace wait with rtos sleep 2019-08-06 15:57:16 +02:00
Michal Paszta 1fe59b70e3 Bring back SPIF module-specific debug logs
The logs are switched off by default and can be enabled with a
module-specific compile switch in mbed_app.json.

Logs brought back from PR #10501
2019-08-06 10:53:36 +03:00
int_szyk ae6f8be146 Newline at the end of files 2019-08-01 08:44:58 +02:00
int_szyk 8b68a1ea58 Updated testcases 2019-07-31 10:46:38 +02:00
Lin Gao e74fbcd79e Add CC3220SF_Launchxl to Mbed OS 2019-07-17 13:19:32 -05:00
Kevin Bracey a522dcfa0a Replace deprecated wait calls 2019-07-15 10:13:50 +03:00
Kevin Bracey fc8e8f67c6 Deprecate wait/wait_ms APIs 2019-07-15 10:13:50 +03:00
Martin Kojtal 149d53cc89
Merge pull request #10619 from jamesbeyond/fm-iap
Fastmodel: enable flashIAP and kvstore
2019-07-02 14:23:00 +01:00
Anna Bridge 61881e81fd
Merge pull request #10756 from martinichka/feature-correct-trace-level-storage-spif
Cleaned up trace log SPIF Block Device
2019-06-19 12:29:39 +01:00
Christopher Haster b0d36ebfc1 Remove mbed.h includes from I2CEEBlockDevice 2019-06-13 11:33:14 -05:00
Marten Lootsma 8a328ddc86 Changed to one more info to debug 2019-06-08 08:17:56 +02:00
Marten Lootsma e0ad71554b Fixed astyle error and removed duplicated comment 2019-06-08 07:32:10 +02:00
Qinghao Shi 7a1aafaf40 FastModel: change FVP_MPS2_M3 to FVP_MPS2 enable the MPS2 Family 2019-06-06 18:54:58 +01:00
Qinghao Shi 2e4329192e FastModel: enable FLASHIAP componment 2019-06-06 18:52:30 +01:00
Marten Lootsma aed0d054d7 Added support for SPIF of size bigger than 16Mbyte
- checks if size is bigger than 16Mbyte
- changes to 4 byte address mode of neccessary
2019-06-06 16:01:40 +02:00
Marten Lootsma ed36cc4e06 Add trace logging with size of block device 2019-06-04 16:03:56 +02:00
Marten Lootsma 5484f585a6 Cleaned up SPIF trace log.
- Test most SPIF log to DEBUG level.
- Removed DEBUG/ERROR/INFO tags.
- Removed not needed line endings.
2019-06-04 16:03:56 +02:00
Martin Kojtal 4f6035e6b1
Merge pull request #10501 from davidsaada/david_spif_driver_unlog
Remove excessive info and debug prints in SPIF driver
2019-06-03 08:33:19 +01:00
Christopher Haster 51dd44337b Add 'components/storage/blockdevice/COMPONENT_I2CEE/' from commit 'd92806c11e0e05280c08db0b3ed6459b2d8dea2c'
git-subtree-dir: components/storage/blockdevice/COMPONENT_I2CEE
git-subtree-mainline: 9cc1caa031
git-subtree-split: d92806c11e
2019-05-29 19:34:16 -05:00
Chris Snow 157debffa6 Change erase size to pages to reduce memory usage 2019-05-15 16:23:16 -06:00
Martin Kojtal 3ea1c56124
Merge pull request #10147 from kjbracey-arm/atomic_bitwise
Assembler atomics
2019-05-13 14:18:05 +01:00
Anna Bridge 97e1c9cbaf
Merge pull request #10287 from linlingao/pr10177
Enable MTS_DRAGONFLY_F411RE to register with Pelion
2019-05-10 16:21:46 +01:00
Lin Gao 438a52f15a Fix handoff issue from the bootloader to the application on MTS_DRAGONFLY_F411RE 2019-05-02 11:25:19 -05:00
Ben Cooke 3d68a53b81 Correct the default pins for the spi flash for the mts dragonfly - on behalf of Ben C. 2019-05-02 11:25:19 -05:00
Ryan Morse a8570ffe6c Added support for QSPI to Cypress Boards 2019-05-01 07:09:58 -07:00
David Saada f73544ed7e Remove excessive info and debug prints in SPIF driver. 2019-04-28 12:27:47 +03:00
Kevin Bracey 87396e0bf6 Assembler atomics
Reimplement atomic code in inline assembly. This can improve
optimisation, and avoids potential architectural problems with using
LDREX/STREX intrinsics.

API further extended:
* Bitwise operations (fetch_and/fetch_or/fetch_xor)
* fetch_add and fetch_sub (like incr/decr, but returning old value -
  aligning with C++11)
* compare_exchange_weak
* Explicit memory order specification
* Basic freestanding template overloads for C++

This gives our existing C implementation essentially all the functionality
needed by C++11.

An actual Atomic<T> template based upon these C functions could follow.
2019-04-26 13:12:35 +03:00
Martin Kojtal 6081727cbf
Merge pull request #10115 from enebular/raven
Uhuru RAVEN: Adding platform HAL
2019-04-04 11:05:23 +02:00
Martin Kojtal 040388370f
Merge pull request #10171 from offirko/offir_qspi_bus_mask_fix
Fix QSPIF Bus mode mask and quad enable write SR size
2019-04-01 11:17:23 +02:00
Offir Kochalsky 15fdb6ea7e
Update QSPIFBlockDevice.cpp 2019-03-29 17:37:00 +03:00
offirko e8e0fb4fdf If QER is undefined: do nothing but log warning and continue 2019-03-28 10:18:16 +02:00
jk 23cb826314 Add definition of RAVEN 2019-03-27 17:02:55 +09:00
Ari Parkkila a6c44f87b0 SPIF: Fix SPI_FREQ for MTB_ADV_WISE_1570 2019-03-21 01:11:40 -07:00
offirko 1a4c11e3b5 Fixed Bus Mode bit mask to select best mode.
When setting Quad Enable, either SR1, SR2 or CR setup is required.
Either way register size is up to 2 bytes.
2019-03-20 15:24:46 +02:00
offirko ce5194f2f8 Fix Bus mode mask and status register write size in
some modes in quad enable
2019-03-20 14:27:49 +02:00
Amir Cohen 4d6240d26e Add flashiap block device comment 2019-03-18 14:34:00 +02:00
Amir Cohen 7fac0722a4 Fix functionality for FlashIAPBD & SlicingBD
Due to discovery of inconsistent sector sizes in devices storage the is_valid_erase function was adjusted,
For FlashIAPBD the 'code size' was included to the calculation, preventing faulty "virtual" addresses calculation.
For SlicingBD the same error was fixed and in all 3 validation functions that sent addresses for validation and program/read/erase
different addresses.
2019-03-14 17:46:10 +02:00
Kevin Bracey c368021e37 SPIFBlockDevice.h: include SingletonPtr.h
SPIFBlockDevice was using SingletonPtr without an include,
and only getting it via SPI.h.

Spotted while changing SPI to not use SingletonPtr - now
abandoned, but still this shouldn't have been relying on it.
2019-03-01 14:33:33 +02:00
Amir Cohen 5c7f6cb755 Merge SPIF & QSPIF components test to general block device tests
The SPIF and QPIF components tests are fully merged into general block device tests and were deleted
2019-02-26 10:28:45 -06:00
Deepika d2e11966fc Revert "rand() by default does increment of 1, randomizing more"
This reverts commit f7a6d254f6.
2019-02-26 09:21:19 -06:00
Deepika f7a6d254f6 rand() by default does increment of 1, randomizing more
Random number generation in case of IAR 8, requires TLS support.
Thread local storage is not part of Mbed OS, test is updated to have random
numbers sparse, but in future random number creation should be moved to main
thread, or use some other logic for randomization instead of rand() call.
2019-02-22 16:44:54 -06:00
offirko be1c887477 Ensure unique block address for multi threaded test.
The addresses dont have to change each run, just be unique.
Because address seeds repeat themselves each run, rand() will
produce repeating results that should not collide between
different threads.
2019-02-11 14:41:41 +02:00