mirror of https://github.com/ARMmbed/mbed-os.git
hal-qspi test: code refactoring
parent
6095ccf1b4
commit
948d1a3013
|
@ -108,10 +108,15 @@
|
||||||
|
|
||||||
|
|
||||||
// single quad enable flag for both dual and quad mode
|
// single quad enable flag for both dual and quad mode
|
||||||
#define QUAD_ENABLE_IMPLEMENTATION() \
|
#define QUAD_ENABLE() \
|
||||||
\
|
\
|
||||||
uint8_t reg_data[QSPI_STATUS_REG_SIZE]; \
|
uint8_t reg_data[QSPI_STATUS_REG_SIZE]; \
|
||||||
\
|
\
|
||||||
|
if (write_enable(qspi) != QSPI_STATUS_OK) { \
|
||||||
|
return QSPI_STATUS_ERROR; \
|
||||||
|
} \
|
||||||
|
WAIT_FOR(WRSR_MAX_TIME, qspi); \
|
||||||
|
\
|
||||||
reg_data[0] = STATUS_BIT_QE; \
|
reg_data[0] = STATUS_BIT_QE; \
|
||||||
qspi.cmd.build(QSPI_CMD_WRSR); \
|
qspi.cmd.build(QSPI_CMD_WRSR); \
|
||||||
\
|
\
|
||||||
|
@ -132,10 +137,15 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define QUAD_DISABLE_IMPLEMENTATION() \
|
#define QUAD_DISABLE() \
|
||||||
\
|
\
|
||||||
uint8_t reg_data[QSPI_STATUS_REG_SIZE]; \
|
uint8_t reg_data[QSPI_STATUS_REG_SIZE]; \
|
||||||
\
|
\
|
||||||
|
if (write_enable(qspi) != QSPI_STATUS_OK) { \
|
||||||
|
return QSPI_STATUS_ERROR; \
|
||||||
|
} \
|
||||||
|
WAIT_FOR(WRSR_MAX_TIME, qspi); \
|
||||||
|
\
|
||||||
reg_data[0] = 0; \
|
reg_data[0] = 0; \
|
||||||
qspi.cmd.build(QSPI_CMD_WRSR); \
|
qspi.cmd.build(QSPI_CMD_WRSR); \
|
||||||
\
|
\
|
||||||
|
@ -156,7 +166,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define FAST_MODE_ENABLE_IMPLEMENTATION() \
|
#define FAST_MODE_ENABLE() \
|
||||||
\
|
\
|
||||||
qspi_status_t ret; \
|
qspi_status_t ret; \
|
||||||
const int32_t reg_size = QSPI_STATUS_REG_SIZE + QSPI_CONFIG_REG_0_SIZE; \
|
const int32_t reg_size = QSPI_STATUS_REG_SIZE + QSPI_CONFIG_REG_0_SIZE; \
|
||||||
|
|
|
@ -71,11 +71,11 @@ uint8_t rx_buf[DATA_SIZE_1024];
|
||||||
|
|
||||||
static void log_data(const char *str, uint8_t *data, uint32_t size)
|
static void log_data(const char *str, uint8_t *data, uint32_t size)
|
||||||
{
|
{
|
||||||
printf("%s: ", str);
|
utest_printf("%s: ", str);
|
||||||
for (uint32_t j = 0; j < size; j++) {
|
for (uint32_t j = 0; j < size; j++) {
|
||||||
printf("%02X ", data[j]);
|
utest_printf("%02X ", data[j]);
|
||||||
}
|
}
|
||||||
printf("\r\n");
|
utest_printf("\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -171,19 +171,19 @@ static void _qspi_write_read_test(Qspi &qspi, qspi_bus_width_t write_inst_width,
|
||||||
if (tx_buf[i] != rx_buf[i]) {
|
if (tx_buf[i] != rx_buf[i]) {
|
||||||
log_data("tx data", tx_buf, data_size);
|
log_data("tx data", tx_buf, data_size);
|
||||||
log_data("rx data", rx_buf, data_size);
|
log_data("rx data", rx_buf, data_size);
|
||||||
printf("erase/write/read time: %d/%d/%d [us]\r\n", erase_time, write_time, read_time);
|
utest_printf("erase/write/read time: %d/%d/%d [us]\r\n", erase_time, write_time, read_time);
|
||||||
TEST_ASSERT_EQUAL(tx_buf[i], rx_buf[i]);
|
TEST_ASSERT_EQUAL(tx_buf[i], rx_buf[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef QSPI_TEST_LOG_FLASH_TIME
|
#ifdef QSPI_TEST_LOG_FLASH_TIME
|
||||||
printf("erase/write/read time: %d/%d/%d [us]\r\n", erase_time, write_time, read_time);
|
utest_printf("erase/write/read time: %d/%d/%d [us]\r\n", erase_time, write_time, read_time);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef QSPI_TEST_LOG_DATA
|
#ifdef QSPI_TEST_LOG_DATA
|
||||||
log_data("tx data", tx_buf, data_size);
|
log_data("tx data", tx_buf, data_size);
|
||||||
log_data("rx data", rx_buf, data_size);
|
log_data("rx data", rx_buf, data_size);
|
||||||
printf("rx/tx data match\r\n");
|
utest_printf("rx/tx data match\r\n");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,9 +222,6 @@ void qspi_write_read_test(void)
|
||||||
|
|
||||||
if (is_dual_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
if (is_dual_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
||||||
is_dual_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
is_dual_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
||||||
ret = write_enable(qspi);
|
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
|
||||||
ret = dual_enable(qspi);
|
ret = dual_enable(qspi);
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
||||||
|
@ -232,9 +229,6 @@ void qspi_write_read_test(void)
|
||||||
|
|
||||||
if (is_quad_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
if (is_quad_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
||||||
is_quad_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
is_quad_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
||||||
ret = write_enable(qspi);
|
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
|
||||||
ret = quad_enable(qspi);
|
ret = quad_enable(qspi);
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
||||||
|
@ -248,10 +242,13 @@ void qspi_write_read_test(void)
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
||||||
|
|
||||||
#ifdef QSPI_TEST_LOG_FLASH_STATUS
|
#ifdef QSPI_TEST_LOG_FLASH_STATUS
|
||||||
printf("Status "); log_register(STATUS_REG, QSPI_STATUS_REG_SIZE, qspi);
|
utest_printf("Status\r\n"); log_register(STATUS_REG, QSPI_STATUS_REG_SIZE, qspi);
|
||||||
printf("Config 0 "); log_register(CONFIG_REG0, QSPI_CONFIG_REG_0_SIZE, qspi);
|
utest_printf("Config 0\r\n"); log_register(CONFIG_REG0, QSPI_CONFIG_REG_0_SIZE, qspi);
|
||||||
#ifdef CONFIG_REG1
|
#ifdef CONFIG_REG1
|
||||||
printf("Config 1 "); log_register(CONFIG_REG1, QSPI_CONFIG_REG_1_SIZE, qspi);
|
utest_printf("Config 1\r\n"); log_register(CONFIG_REG1, QSPI_CONFIG_REG_1_SIZE, qspi);
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_REG2
|
||||||
|
utest_printf("Config 2\r\n"); log_register(CONFIG_REG2, QSPI_CONFIG_REG_2_SIZE, qspi);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -265,9 +262,6 @@ void qspi_write_read_test(void)
|
||||||
|
|
||||||
if (is_dual_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
if (is_dual_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
||||||
is_dual_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
is_dual_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
||||||
ret = write_enable(qspi);
|
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
|
||||||
ret = dual_disable(qspi);
|
ret = dual_disable(qspi);
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
||||||
|
@ -275,9 +269,6 @@ void qspi_write_read_test(void)
|
||||||
|
|
||||||
if (is_quad_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
if (is_quad_cmd(write_inst_width, write_addr_width, write_data_width) ||
|
||||||
is_quad_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
is_quad_cmd(read_inst_width, read_addr_width, read_data_width)) {
|
||||||
ret = write_enable(qspi);
|
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
|
||||||
ret = quad_disable(qspi);
|
ret = quad_disable(qspi);
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
||||||
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
WAIT_FOR(WRSR_MAX_TIME, qspi);
|
||||||
|
@ -321,10 +312,13 @@ void qspi_init_free_test(void)
|
||||||
flash_init(qspi);
|
flash_init(qspi);
|
||||||
|
|
||||||
#ifdef QSPI_TEST_LOG_FLASH_STATUS
|
#ifdef QSPI_TEST_LOG_FLASH_STATUS
|
||||||
printf("Status "); log_register(STATUS_REG, QSPI_STATUS_REG_SIZE, qspi);
|
utest_printf("Status\r\n"); log_register(STATUS_REG, QSPI_STATUS_REG_SIZE, qspi);
|
||||||
printf("Config 0 "); log_register(CONFIG_REG0, QSPI_CONFIG_REG_0_SIZE, qspi);
|
utest_printf("Config 0\r\n"); log_register(CONFIG_REG0, QSPI_CONFIG_REG_0_SIZE, qspi);
|
||||||
#ifdef CONFIG_REG1
|
#ifdef CONFIG_REG1
|
||||||
printf("Config 1 "); log_register(CONFIG_REG1, QSPI_CONFIG_REG_1_SIZE, qspi);
|
utest_printf("Config 1\r\n"); log_register(CONFIG_REG1, QSPI_CONFIG_REG_1_SIZE, qspi);
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_REG2
|
||||||
|
utest_printf("Config 2\r\n"); log_register(CONFIG_REG2, QSPI_CONFIG_REG_2_SIZE, qspi);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -375,7 +369,7 @@ void qspi_frequency_test(void)
|
||||||
|
|
||||||
void qspi_memory_id_test()
|
void qspi_memory_id_test()
|
||||||
{
|
{
|
||||||
printf("*** %s memory config loaded ***\r\n", QSPI_FLASH_CHIP_STRING);
|
utest_printf("*** %s memory config loaded ***\r\n", QSPI_FLASH_CHIP_STRING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "utest/utest.h"
|
||||||
|
|
||||||
#include "hal/qspi_api.h"
|
#include "hal/qspi_api.h"
|
||||||
#include "qspi_test_utils.h"
|
#include "qspi_test_utils.h"
|
||||||
|
@ -166,12 +167,12 @@ void log_register(uint32_t cmd, uint32_t reg_size, Qspi &qspi)
|
||||||
ret = read_register(cmd, reg, reg_size, qspi);
|
ret = read_register(cmd, reg, reg_size, qspi);
|
||||||
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
TEST_ASSERT_EQUAL(QSPI_STATUS_OK, ret);
|
||||||
|
|
||||||
for (int j = 0; j < reg_size; j++) {
|
for (uint32_t j = 0; j < reg_size; j++) {
|
||||||
printf("register byte %d data: ", j);
|
utest_printf("register byte %u data: ", j);
|
||||||
for(int i = 0; i < 8; i++) {
|
for(int i = 0; i < 8; i++) {
|
||||||
printf("%s ", ((reg[j] & (1 << i)) & 0xFF) == 0 ? "0" : "1");
|
utest_printf("%s ", ((reg[j] & (1 << i)) & 0xFF) == 0 ? "0" : "1");
|
||||||
}
|
}
|
||||||
printf("\r\n");
|
utest_printf("\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,36 +184,36 @@ qspi_status_t erase(uint32_t erase_cmd, uint32_t flash_addr, Qspi &qspi)
|
||||||
|
|
||||||
qspi_status_t dual_enable(Qspi &qspi)
|
qspi_status_t dual_enable(Qspi &qspi)
|
||||||
{
|
{
|
||||||
#ifdef DUAL_ENABLE_IMPLEMENTATION
|
#ifdef DUAL_ENABLE
|
||||||
DUAL_ENABLE_IMPLEMENTATION();
|
DUAL_ENABLE();
|
||||||
#else
|
#else
|
||||||
QUAD_ENABLE_IMPLEMENTATION();
|
QUAD_ENABLE();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
qspi_status_t dual_disable(Qspi &qspi)
|
qspi_status_t dual_disable(Qspi &qspi)
|
||||||
{
|
{
|
||||||
#ifdef DUAL_DISABLE_IMPLEMENTATION
|
#ifdef DUAL_DISABLE
|
||||||
DUAL_DISABLE_IMPLEMENTATION();
|
DUAL_DISABLE();
|
||||||
#else
|
#else
|
||||||
QUAD_DISABLE_IMPLEMENTATION();
|
QUAD_DISABLE();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qspi_status_t quad_enable(Qspi &qspi)
|
qspi_status_t quad_enable(Qspi &qspi)
|
||||||
{
|
{
|
||||||
QUAD_ENABLE_IMPLEMENTATION();
|
QUAD_ENABLE();
|
||||||
}
|
}
|
||||||
|
|
||||||
qspi_status_t quad_disable(Qspi &qspi)
|
qspi_status_t quad_disable(Qspi &qspi)
|
||||||
{
|
{
|
||||||
QUAD_DISABLE_IMPLEMENTATION();
|
QUAD_DISABLE();
|
||||||
}
|
}
|
||||||
|
|
||||||
qspi_status_t fast_mode_enable(Qspi &qspi)
|
qspi_status_t fast_mode_enable(Qspi &qspi)
|
||||||
{
|
{
|
||||||
FAST_MODE_ENABLE_IMPLEMENTATION();
|
FAST_MODE_ENABLE();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_dual_cmd(qspi_bus_width_t inst_width, qspi_bus_width_t addr_width, qspi_bus_width_t data_width)
|
bool is_dual_cmd(qspi_bus_width_t inst_width, qspi_bus_width_t addr_width, qspi_bus_width_t data_width)
|
||||||
|
|
Loading…
Reference in New Issue