Skip to content

QSPI SFDP Flash Block Device #8352

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Oct 23, 2018
Merged

QSPI SFDP Flash Block Device #8352

merged 14 commits into from
Oct 23, 2018

Conversation

offirko
Copy link
Contributor

@offirko offirko commented Oct 9, 2018

Description

Quad SPI Block Device for Flash supporting SFDP standard

Pull request type

[ ] Fix
[ ] Refactor
[ ] Target update
[X] Functionality change
[ ] Breaking change

@offirko
Copy link
Contributor Author

offirko commented Oct 9, 2018

@bulislaw , @donatieng , @ARMmbed/mbed-os-maintainers , @dannybenor , @davidsaada .
Please review Quad SPIF Block Device for SFDP Flash

@jeromecoutant
Copy link
Collaborator

I didn't made any code review, but here is new test result:

target platform_name test suite result elapsed_time (sec) copy_method
DISCO_F413ZH-ARM DISCO_F413ZH components-storage-blockdevice-component_qspif-tests-block_device-qspif OK 24.27 default
DISCO_F469NI-ARM DISCO_F469NI components-storage-blockdevice-component_qspif-tests-block_device-qspif OK 23.81 default
DISCO_L475VG_IOT01A-ARM DISCO_L475VG_IOT01A components-storage-blockdevice-component_qspif-tests-block_device-qspif FAIL 16.96 default
DISCO_L476VG-ARM DISCO_L476VG components-storage-blockdevice-component_qspif-tests-block_device-qspif OK 34.73 default

Here is console log for teh failed test :

[1539091007.49][CONN][RXD] >>> Running case #1: 'Testing unaligned erase blocks'...
[1539091007.54][CONN][RXD]
[1539091007.54][CONN][INF] found KV pair in stream: {{__testcase_start;Testing unaligned erase blocks}}, queued...
[1539091007.57][CONN][RXD] Test Unaligned Erase Starts..
[1539091007.60][CONN][RXD] read size: 1bytes (1bytes)
[1539091007.63][CONN][RXD] program size: 1bytes (1bytes)
[1539091007.68][CONN][RXD] erase size: 4kbytes (4096bytes)
[1539091007.71][CONN][RXD] total size: 8Mbytes (8388608bytes)
[1539091007.71][CONN][RXD]
[1539091007.86][CONN][RXD] test  0000000:4096...
[1539091007.86][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing unaligned erase blocks;1;0}}, queued...
[1539091007.91][CONN][RXD] >>> 'Testing unaligned erase blocks': 1 passed, 0 failed
[1539091007.91][CONN][RXD]
[1539091007.97][CONN][RXD] >>> Running case #2: 'Testing read write random blocks'...
[1539091008.04][CONN][RXD]
[1539091008.04][CONN][INF] found KV pair in stream: {{__testcase_start;Testing read write random blocks}}, queued...
[1539091008.08][CONN][RXD] Test Random Program Read Erase Starts..
[1539091008.11][CONN][RXD] read size: 1bytes (1bytes)
[1539091008.14][CONN][RXD] program size: 1bytes (1bytes)
[1539091008.18][CONN][RXD] erase size: 4kbytes (4096bytes)
[1539091008.21][CONN][RXD] total size: 8Mbytes (8388608bytes)
[1539091008.21][CONN][RXD]
[1539091008.39][CONN][RXD] test  00b0000:4096...
[1539091008.44][CONN][RXD]  Assert Failed Buf Read - block:size: b0000:4096
[1539091008.44][CONN][RXD]
[1539091008.49][CONN][RXD]  pos: 2, exp: 89, act: f9, wrt: 89
mbedgt: :86::FAIL: Expected 137 Was 249

[1539091008.52][CONN][RXD] :86::FAIL: Expected 137 Was 249
[1539091008.58][CONN][INF] found KV pair in stream: {{__testcase_finish;Testing read write random blocks;0;1}}, queued...
[1539091008.67][CONN][RXD] >>> 'Testing read write random blocks': 0 passed, 1 failed with reason 'Assertion Failed'

@0xc0170 0xc0170 requested review from bulislaw, donatieng and a team October 9, 2018 14:08
@offirko
Copy link
Contributor Author

offirko commented Oct 9, 2018

@maciejbocianski - Maciej, I'd appreciate your help.
would you be able to run the same test on your L475 as well?
also, do QSPI driver tests pass for L475 ?

@maciejbocianski
Copy link
Contributor

@offirko
tests-mbed_hal-qspi passes on my L475
Will check QSPI BD test now

+-----------------------------+---------------------+---------------------+--------+--------------------+-------------+
| target                      | platform_name       | test suite          | result | elapsed_time (sec) | copy_method |
+-----------------------------+---------------------+---------------------+--------+--------------------+-------------+
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | OK     | 35.42              | default     |
+-----------------------------+---------------------+---------------------+--------+--------------------+-------------+
mbedgt: test suite results: 1 OK
mbedgt: test case report:
+-----------------------------+---------------------+---------------------+-------------------------------------------------------+--------+--------+--------+--------------------+
| target                      | platform_name       | test suite          | test case                                             | passed | failed | result | elapsed_time (sec) |
+-----------------------------+---------------------+---------------------+-------------------------------------------------------+--------+--------+--------+--------------------+
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi frequency setting test                           | 1      | 0      | OK     | 0.38               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi init/free test                                   | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi memory id test                                   | 1      | 0      | OK     | 0.11               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-1)/x1  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-1)/x1  repeat/x4  test | 1      | 0      | OK     | 0.24               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-1)/x4  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.15               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-2)/x1  repeat/x4  test | 1      | 0      | OK     | 0.28               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-2)/x4  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-4)/x1  repeat/x4  test | 1      | 0      | OK     | 0.29               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-1-4)/x4  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-2-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-2-2)/x1  repeat/x4  test | 1      | 0      | OK     | 0.3                |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-2-2)/x4  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-4-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-4-4)/x1  repeat/x4  test | 1      | 0      | OK     | 0.3                |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x1  read(1-4-4)/x4  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x4  read(1-1-1)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x4  read(1-1-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x4  read(1-1-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x4  read(1-2-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-1-1)/x4  read(1-4-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.15               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-1)/x1  repeat/x1  test | 1      | 0      | OK     | 0.15               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-1)/x1  repeat/x4  test | 1      | 0      | OK     | 0.28               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-1)/x4  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-2)/x1  repeat/x4  test | 1      | 0      | OK     | 0.33               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-2)/x4  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-4)/x1  repeat/x4  test | 1      | 0      | OK     | 0.33               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-1-4)/x4  repeat/x1  test | 1      | 0      | OK     | 0.16               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-2-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.16               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-2-2)/x1  repeat/x4  test | 1      | 0      | OK     | 0.32               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-2-2)/x4  repeat/x1  test | 1      | 0      | OK     | 0.15               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-4-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.16               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-4-4)/x1  repeat/x4  test | 1      | 0      | OK     | 0.33               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x1  read(1-4-4)/x4  repeat/x1  test | 1      | 0      | OK     | 0.15               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x4  read(1-1-1)/x1  repeat/x1  test | 1      | 0      | OK     | 0.13               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x4  read(1-1-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x4  read(1-1-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.15               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x4  read(1-2-2)/x1  repeat/x1  test | 1      | 0      | OK     | 0.14               |
| DISCO_L475VG_IOT01A-GCC_ARM | DISCO_L475VG_IOT01A | tests-mbed_hal-qspi | qspi write(1-4-4)/x4  read(1-4-4)/x1  repeat/x1  test | 1      | 0      | OK     | 0.16               |
+-----------------------------+---------------------+---------------------+-------------------------------------------------------+--------+--------+--------+--------------------+

@offirko
Copy link
Contributor Author

offirko commented Oct 10, 2018

DISCO-L475VG-IOT01A removed for now from tests (known limitation)
IOTSTOR-666 issue created:
https://jira.arm.com/browse/IOTSTOR-666

@offirko
Copy link
Contributor Author

offirko commented Oct 14, 2018

DISCO-L475VG-IOT01A returned to tests
IOTSTOR-666 issue resolved
(L475 ultra low power flash chip MX25R6435F requires enable fast mode prior to quad)
https://jira.arm.com/browse/IOTSTOR-666

@NirSonnenschein
Copy link
Contributor

/morph build

@mbed-ci
Copy link

mbed-ci commented Oct 14, 2018

Build : SUCCESS

Build number : 3351
Build artifacts/logs : http://mbed-os.s3-website-eu-west-1.amazonaws.com/?prefix=builds/8352/

Triggering tests

/morph test
/morph export-build
/morph mbed2-build

@mbed-ci
Copy link

mbed-ci commented Oct 14, 2018

@mbed-ci
Copy link

mbed-ci commented Oct 14, 2018

@geky geky requested a review from deepikabhavnani October 15, 2018 18:19
Copy link
Contributor

@geky geky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me from a high-level

Has anything changed between this and https://github.com/ARMmbed/qspif-blockdevice?

### Debugging
Set `MBED_CONF_MBED_TRACE_ENABLE` as true(1) to enable logs.

### Example
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@offirko, Would you be able to add info on QSPI block device to the block device example once this is merged into mbed-os?
https://github.com/ARMmbed/mbed-os-example-blockdevice/blob/master/README.md#changing-the-block-device

This will probably also need a reference page in the docs, but you're probably already aware of that. CC @AnotherButler FYI.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@geky - sure thing, that is the plan

// _devices_mutex is used to lock csel list - only one QSPIFBlockDevice instance per csel is allowed
SingletonPtr<PlatformMutex> QSPIFBlockDevice::_devices_mutex;
int QSPIFBlockDevice::_number_of_active_qspif_flash_csel = 0;
PinName *QSPIFBlockDevice::_active_qspif_flash_csel_arr = generate_initialized_active_qspif_csel_arr();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a SingletonPtr (or function returning a static value). These can be garbage collected by the compiler if the QSPIFBlockDevice is unused. As is, all applications will pay a RAM cost for this array, even if they don't use QSPIFBlockDevice.

This is low priority, since we're currently half-protected by the component mechanism, but this is a defect we should fix at some point.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@geky - interesting, thanks! (with your permission I'll open an issue and update later on?)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me 👍

case 1:
case 2:
tr_debug("_setQPIEnabled - send command 38h");
_qspi_send_general_command(0x38, QSPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will like to see some error handling for calls in _sfdp_set_qpi_enabled like others in this file. Not blocking request though

Copy link
Contributor Author

@offirko offirko Oct 16, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@deepikabhavnani - added error logging, note that even if QPI (4-4-4) fails we do not fail init and use 1-4-4 or 1-1-4 mode

tr_debug("_setQPIEnabled - set config bit 6 and send command 71h");
_qspi_send_general_command(0x65, 0x800003, NULL, 0, (char *)config_reg, 1);
config_reg[0] |= 0x40; //Set Bit 6
_qspi_send_general_command(0x71, 0x800003, NULL, 0, (char *)config_reg, 1);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additionally, not sure why we have so many magic numbers here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SFDP standard finds it hard to cope with the variety of chip instructions .
I only used magic numbers where the standard used magic numbers without any "rational" reasoning.
image

@NirSonnenschein
Copy link
Contributor

/morph build

@mbed-ci
Copy link

mbed-ci commented Oct 21, 2018

Build : SUCCESS

Build number : 3417
Build artifacts/logs : http://mbed-os.s3-website-eu-west-1.amazonaws.com/?prefix=builds/8352/

Triggering tests

/morph test
/morph export-build
/morph mbed2-build

@mbed-ci
Copy link

mbed-ci commented Oct 21, 2018

@mbed-ci
Copy link

mbed-ci commented Oct 21, 2018

@NirSonnenschein
Copy link
Contributor

@ARMmbed/mbed-os-maintainers this PR passed CI and technical review but doesn't have an official Gatekeeper review. Anyone have time to take a look?

@cmonr
Copy link
Contributor

cmonr commented Oct 22, 2018

Will look at and probably merge today.

Copy link
Contributor

@cmonr cmonr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some questions.

/********************************/
/* Different Device Csel Mgmt */
/********************************/
static PinName *generate_initialized_active_qspif_csel_arr()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the idea with this function to deallocate a pin so that it can be used by this class?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea is to allow only a single QSPIFBlockDevice instance per flash chip (you can still have several instances for a target with several QSPI Flash chips). This function allocates a static array of all the QSPI Flash chips (csel-pins) that are currently use a QSPIFBlockDevice instance.

int status = 0;
_devices_mutex->lock();
if (_number_of_active_qspif_flash_csel >= QSPIF_MAX_ACTIVE_FLASH_DEVICES ) {
status = -2;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this exit status correspond with some sort of enum?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does not. It's not exposed and only used internally.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@offirko Thanks for the info. Y'all might want to consider them at some point in the future., but if that's how y'all are doing things now, then that's fine.

#define TEST_ERROR_MASK 16
#define QSPIF_TEST_NUM_OF_THREADS 5

const struct {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a pretty neat structure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree (-: , I inherited it from the original SPIFBlockDevice test code.
I believe the credit goes to @geky

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cmonr - please see my answers above - thanks

@cmonr
Copy link
Contributor

cmonr commented Oct 23, 2018

Thanks for the replies @offirko!

@cmonr cmonr merged commit 41bffe1 into ARMmbed:master Oct 23, 2018
kyle-cypress pushed a commit to kyle-cypress/mbed-os that referenced this pull request Oct 18, 2019
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 ARMmbed#8352.
kyle-cypress pushed a commit to kyle-cypress/mbed-os that referenced this pull request Oct 18, 2019
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 ARMmbed#8352.
kyle-cypress pushed a commit to kyle-cypress/mbed-os that referenced this pull request Nov 7, 2019
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 ARMmbed#8352.
kyle-cypress pushed a commit to kyle-cypress/mbed-os that referenced this pull request Nov 13, 2019
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 ARMmbed#8352.
adbridge pushed a commit that referenced this pull request Nov 19, 2019
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants