zhaoxingyu12 opened a new pull request, #18024: URL: https://github.com/apache/nuttx/pull/18024
*Note: Please adhere to [Contributing Guidelines](https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md).* ## Summary Originally, the NVS module only supported traditional NOR flash (which requires erase before writing) and did not support RRAM storage device (write without erase). Now, the ZMS module has been added to be compatible with both RRAM and NOR flash devices simultaneously. ## Impact KV read and write functions ## Testing **testcases** ` int print_list(void) { int fd = open("/dev/zms", O_RDONLY); uint8_t buf[255]; struct config_data_s data; int ret; data.configdata = buf; data.len = 255; ret = ioctl(fd, CFGDIOC_FIRSTCONFIG, &data); if (ret < 0) return ret; #ifdef CONFIG_MTD_CONFIG_NAMED syslog(0, "######## key=%s, value=%s", data.name, data.configdata); #else syslog(0, "######## id=%d, instance=%d, value=%s", data.id, data.instance, data.configdata); #endif while (1) { data.configdata = buf; data.len = 255; ret = ioctl(fd, CFGDIOC_NEXTCONFIG, &data); if (ret < 0) { ret = -errno; /* ENOENT is expected when there are no more entries */ if (ret == -ENOENT) ret = 0; break; } #ifdef CONFIG_MTD_CONFIG_NAMED syslog(0, "######## key=%s, value=%s", data.name, data.configdata); #else syslog(0, "######## id=%d, instance=%d, value=%s", data.id, data.instance, data.configdata); #endif } close(fd); return ret; } void test(void) { uint64_t filling_id = 0; struct config_data_s data; int ret; int fd = open("/dev/zms", O_RDWR); while (1) { uint8_t wr_buf[50] = {0}; uint8_t wr_buf1[50] = {0}; snprintf(wr_buf, sizeof(wr_buf), "v----------------------------%llx", filling_id); #ifdef CONFIG_MTD_CONFIG_NAMED char rd_buf[10] = {0}; snprintf(rd_buf, sizeof(rd_buf), "k%llx", filling_id); strlcpy(data.name, rd_buf, sizeof(data.name)); #else data.id = (uint16_t)filling_id; data.instance = (int)filling_id + 1; #endif data.configdata = wr_buf; data.len = sizeof(wr_buf); ret = ioctl(fd, CFGDIOC_SETCONFIG, &data); if (ret != 0) { return; } data.configdata = wr_buf1; ret = ioctl(fd, CFGDIOC_GETCONFIG, &data); if (ret < 0) { assert(0); } if (memcmp(wr_buf, wr_buf1, sizeof(wr_buf)) != 0) { assert(0); } filling_id++; } close(fd); } int main(int argc, FAR char *argv[]) { test(); print_list(); return 0; } ` **test result** [ 3.724800] [core0] ######## key=k28, value=v----------------------------28 [ 3.725400] [core0] ######## key=k27, value=v----------------------------27 [ 3.726000] [core0] ######## key=k26, value=v----------------------------26 [ 3.726600] [core0] ######## key=k25, value=v----------------------------25 [ 3.727100] [core0] ######## key=k24, value=v----------------------------24 [ 3.727700] [core0] ######## key=k23, value=v----------------------------23 [ 3.728300] [core0] ######## key=k22, value=v----------------------------22 [ 3.728800] [core0] ######## key=k21, value=v----------------------------21 [ 3.729400] [core0] ######## key=k20, value=v----------------------------20 [ 3.729900] [core0] ######## key=k1f, value=v----------------------------1f [ 3.730500] [core0] ######## key=k1e, value=v----------------------------1e [ 3.731200] [core0] ######## key=k1d, value=v----------------------------1d [ 3.731800] [core0] ######## key=k1c, value=v----------------------------1c [ 3.732500] [core0] ######## key=k1b, value=v----------------------------1b [ 3.733100] [core0] ######## key=k1a, value=v----------------------------1a [ 3.733700] [core0] ######## key=k19, value=v----------------------------19 [ 3.734300] [core0] ######## key=k18, value=v----------------------------18 [ 3.734800] [core0] ######## key=k17, value=v----------------------------17 [ 3.735400] [core0] ######## key=k16, value=v----------------------------16 [ 3.736100] [core0] ######## key=k15, value=v----------------------------15 [ 3.736700] [core0] ######## key=k14, value=v----------------------------14 [ 3.737300] [core0] ######## key=k13, value=v----------------------------13 [ 3.737700] [core0] ######## key=k12, value=v----------------------------12 [ 3.738200] [core0] ######## key=k11, value=v----------------------------11 [ 3.738700] [core0] ######## key=k10, value=v----------------------------10 [ 3.739100] [core0] ######## key=kf, value=v----------------------------f [ 3.739600] [core0] ######## key=ke, value=v----------------------------e [ 3.740100] [core0] ######## key=kd, value=v----------------------------d [ 3.740600] [core0] ######## key=kc, value=v----------------------------c [ 3.741100] [core0] ######## key=kb, value=v----------------------------b [ 3.741700] [core0] ######## key=ka, value=v----------------------------a [ 3.742100] [core0] ######## key=k9, value=v----------------------------9 [ 3.742600] [core0] ######## key=k8, value=v----------------------------8 [ 3.743100] [core0] ######## key=k7, value=v----------------------------7 [ 3.743500] [core0] ######## key=k6, value=v----------------------------6 [ 3.744000] [core0] ######## key=k5, value=v----------------------------5 [ 3.744500] [core0] ######## key=k4, value=v----------------------------4 [ 3.744900] [core0] ######## key=k3, value=v----------------------------3 [ 3.745400] [core0] ######## key=k2, value=v----------------------------2 [ 3.746000] [core0] ######## key=k1, value=v----------------------------1 [ 3.747300] [core0] ######## key=k0, value=v----------------------------0 [ 3.748300] [core0] ######## key=k29, value=v----------------------------29 [ 3.748700] [core0] ######## key=k2a, value=v----------------------------2a [ 3.749300] [core0] ######## key=k2b, value=v----------------------------2b [ 3.749800] [core0] ######## key=k2c, value=v----------------------------2c [ 3.750300] [core0] ######## key=k2d, value=v----------------------------2d [ 3.751000] [core0] ######## key=k2e, value=v----------------------------2e [ 3.751600] [core0] ######## key=k2f, value=v----------------------------2f [ 3.752200] [core0] ######## key=k30, value=v----------------------------30 [ 3.752700] [core0] ######## key=k31, value=v----------------------------31 [ 3.753300] [core0] ######## key=k32, value=v----------------------------32 [ 3.753800] [core0] ######## key=k33, value=v----------------------------33 [ 3.754300] [core0] ######## key=k34, value=v----------------------------34 [ 3.754900] [core0] ######## key=k35, value=v----------------------------35 [ 3.755400] [core0] ######## key=k36, value=v----------------------------36 [ 3.756100] [core0] ######## key=k37, value=v----------------------------37 [ 3.756600] [core0] ######## key=k38, value=v----------------------------38 [ 3.757200] [core0] ######## key=k39, value=v----------------------------39 [ 3.757700] [core0] ######## key=k3a, value=v----------------------------3a [ 3.758200] [core0] ######## key=k3b, value=v----------------------------3b [ 3.758800] [core0] ######## key=k3c, value=v----------------------------3c [ 3.759300] [core0] ######## key=k3d, value=v----------------------------3d [ 3.759800] [core0] ######## key=k3e, value=v----------------------------3e [ 3.760300] [core0] ######## key=k3f, value=v----------------------------3f [ 3.761100] [core0] ######## key=k40, value=v----------------------------40 [ 3.761700] [core0] ######## key=k41, value=v----------------------------41 [ 3.762200] [core0] ######## key=k42, value=v----------------------------42 [ 3.762700] [core0] ######## key=k43, value=v----------------------------43 [ 3.763200] [core0] ######## key=k44, value=v----------------------------44 [ 3.763800] [core0] ######## key=k45, value=v----------------------------45 [ 3.764300] [core0] ######## key=k46, value=v----------------------------46 [ 3.764800] [core0] ######## key=k47, value=v----------------------------47 [ 3.765400] [core0] ######## key=k48, value=v----------------------------48 [ 3.766000] [core0] ######## key=k49, value=v----------------------------49 [ 3.766600] [core0] ######## key=k4a, value=v----------------------------4a [ 3.767100] [core0] ######## key=k4b, value=v----------------------------4b [ 3.767600] [core0] ######## key=k4c, value=v----------------------------4c [ 3.768200] [core0] ######## key=k4d, value=v----------------------------4d [ 3.768800] [core0] ######## key=k4e, value=v----------------------------4e [ 3.769300] [core0] ######## key=k4f, value=v----------------------------4f [ 3.769900] [core0] ######## key=k50, value=v----------------------------50 [ 3.771100] [core0] ######## key=k51, value=v----------------------------51 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
