Hi there,
I compiled a QSPI test program on board nrf52840dk.
The SDK version is 1.9.1.
Everything works fine.
I would like to upgrade with SDK 2.2.x but I have several errors in compiling.
How to deal with migration?
Thank you
CONFIG:
CONFIG_NORDIC_QSPI_NOR=y CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 CONFIG_DEBUG=y CONFIG_FLASH=y CONFIG_FLASH_MAP=y CONFIG_FLASH_PAGE_LAYOUT=y #CONFIG_PRINTK=y CONFIG_LOG=y
OVERLAY:
#include <nordic/nrf52840_qiaa.dtsi>
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
tx-pin = <6>;
rx-pin = <8>;
rts-pin = <5>;
cts-pin = <7>;
};
// &spi2 {
// compatible = "nordic,nrf-spi";
// status = "disabled";
// sck-pin = <19>;
// mosi-pin = <20>;
// miso-pin = <21>;
// };
&qspi {
status = "okay";
sck-pin = <19>;
io-pins = <20>, <21>;
csn-pins = <17>;
mx25r64: mx25r6435f@0 {
compatible = "nordic,qspi-nor";
reg = <0>;
quad-enable-requirements = "NONE";
/* MX24R64 supports only pp and pp4io */
writeoc = "pp";
/* MX24R64 supports all readoc options */
readoc = "fastread";
sck-frequency = <8000000>;
label = "MX25R64";
jedec-id = [ c2 28 17 ];
sfdp-bfp = [ e5 20 f1 ff ff ff ff 03 44 eb 08 6b 08 3b 04 bb ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52 10 d8 00 ff 23 72 f5 00 82 ed 04 cc 44 83 68 44 30 b0 30 b0 f7 c4 d5 5c 00 be 29 ff f0 d0 ff ff ];
size = <67108864>;
has-dpd;
t-enter-dpd = <10000>;
t-exit-dpd = <35000>;
};
};
MAIN:
#include <zephyr.h>
#include <drivers/flash.h>
#include <device.h>
#include <devicetree.h>
#include <stdio.h>
#include <string.h>
#include <logging/log.h>
#define LOG_MODULE_NAME main
LOG_MODULE_REGISTER(LOG_MODULE_NAME);
#define VERSIONE "1.0.0"
#if (CONFIG_NORDIC_QSPI_NOR - 0) || \
DT_NODE_HAS_STATUS(DT_INST(0, nordic_qspi_nor), okay)
#define FLASH_DEVICE DT_INST(0, nordic_qspi_nor)
#if DT_NODE_HAS_STATUS(FLASH_DEVICE, okay)
#define FLASH_DEVICE_LABEL DT_LABEL(FLASH_DEVICE)
#define FLASH_NAME "NORDIC QSPI-NOR"
#else
#error "Your device tree has no enabled nodes with compatible "nordic,qspi_nor""
#define FLASH_DEVICE_LABEL "<none>"
#endif ///< #if DT_NODE_HAS_STATUS(FLASH_DEVICE, okay)
#else
#error Unsupported flash driver
#endif
#define FLASH_TEST_REGION_OFFSET 0xff000
#define FLASH_SECTOR_SIZE 4096
const struct device *flash_dev;
/* testMx25r64 */
void main(void)
{
const uint8_t expected[] = {0x55, 0xaa, 0x66, 0x99, 0x00, 0x01, 0x02, 0x03};
const size_t len = sizeof(expected);
uint8_t buf[sizeof(expected)];
// struct device *flash_dev;
int rc;
LOG_INF("" FLASH_NAME " SPI flash testing\n");
printk("==================================\n");
flash_dev = device_get_binding(FLASH_DEVICE_LABEL);
if (!flash_dev)
{
printk("SPI flash driver %s was not found!\n",
FLASH_DEVICE_LABEL);
return;
}
/* La protezione da scrittura deve essere disabilitata prima di ogni scrittura o
* cancellazione, poiché il componente flash attiva la protezione da scrittura
* automaticamente dopo il completamento della scrittura e della cancellazione
* operazioni. (deprecata)
*/
printk("\nTest 1: Flash erase\n");
// flash_write_protection_set(flash_dev, false);
rc = flash_erase(flash_dev, FLASH_TEST_REGION_OFFSET,
FLASH_SECTOR_SIZE);
if (rc != 0)
{
printk("Flash erase failed! %d\n", rc);
}
else
{
printk("Flash erase succeeded!\n");
}
printk("\nTest 2: Flash write\n");
// flash_write_protection_set(flash_dev, false);
printk("Attempting to write %u bytes\n", len);
rc = flash_write(flash_dev, FLASH_TEST_REGION_OFFSET, expected, len);
if (rc != 0)
{
printk("Flash write failed! %d\n", rc);
return;
}
memset(buf, 0, len);
rc = flash_read(flash_dev, FLASH_TEST_REGION_OFFSET, buf, len);
if (rc != 0)
{
printk("Flash read failed! %d\n", rc);
return;
}
if (memcmp(expected, buf, len) == 0)
{
printk("\nData read matches data written. Good!!\n");
}
else
{
const uint8_t *wp = expected;
const uint8_t *rp = buf;
const uint8_t *rpe = rp + len;
printk("Data read does not match data written!!\n");
while (rp < rpe)
{
printk("%08x wrote %02x read %02x %s\n",
(uint32_t)(FLASH_TEST_REGION_OFFSET + (rp - buf)),
*wp, *rp, (*rp == *wp) ? "match" : "MISMATCH");
++rp;
++wp;
}
}
LOG_HEXDUMP_INF(buf, len, "");
}