summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorguozhanxin <[email protected]>2019-06-19 17:17:44 +0800
committerguozhanxin <[email protected]>2019-06-19 17:21:43 +0800
commitb2dedae40da20baecb62425dfde33f05518adc32 (patch)
tree31a2fe4552fba855f88867608db141bebed65547 /components/drivers
parentc421757cc4fbe787345acfa1366df9d992f3f197 (diff)
[driver][mtd_nand] Add debug command to MSH.|向 MSH 添加调试命令。
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/mtd/mtd_nand.c88
1 files changed, 81 insertions, 7 deletions
diff --git a/components/drivers/mtd/mtd_nand.c b/components/drivers/mtd/mtd_nand.c
index ffcb398aa9..ae5aa9c172 100644
--- a/components/drivers/mtd/mtd_nand.c
+++ b/components/drivers/mtd/mtd_nand.c
@@ -131,7 +131,6 @@ int mtd_nandid(const char *name)
return rt_mtd_nand_read_id(nand);
}
-FINSH_FUNCTION_EXPORT_ALIAS(mtd_nandid, nand_id, read ID - nandid(name));
int mtd_nand_read(const char *name, int block, int page)
{
@@ -169,7 +168,6 @@ int mtd_nand_read(const char *name, int block, int page)
rt_free(page_ptr);
return 0;
}
-FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_read, nand_read, read page in nand - nand_read(name, block, page));
int mtd_nand_readoob(const char *name, int block, int page)
{
@@ -199,7 +197,6 @@ int mtd_nand_readoob(const char *name, int block, int page)
rt_free(oob_ptr);
return 0;
}
-FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_readoob, nand_readoob, read spare data in nand - nand_readoob(name, block, page));
int mtd_nand_write(const char *name, int block, int page)
{
@@ -247,7 +244,6 @@ int mtd_nand_write(const char *name, int block, int page)
rt_free(page_ptr);
return 0;
}
-FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_write, nand_write, write dump data to nand - nand_write(name, block, page));
int mtd_nand_erase(const char *name, int block)
{
@@ -261,7 +257,6 @@ int mtd_nand_erase(const char *name, int block)
return rt_mtd_nand_erase_block(nand, block);
}
-FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_erase, nand_erase, nand_erase(name, block));
int mtd_nand_erase_all(const char *name)
{
@@ -282,7 +277,86 @@ int mtd_nand_erase_all(const char *name)
return 0;
}
+
+#ifdef FINSH_USING_MSH
+static void mtd_nand(int argc, char **argv)
+{
+ /* If the number of arguments less than 2 */
+ if (argc < 3)
+ {
+help:
+ rt_kprintf("\n");
+ rt_kprintf("mtd_nand [OPTION] [PARAM ...]\n");
+ rt_kprintf(" id <name> Get nandid by given name\n");
+ rt_kprintf(" read <name> <bn> <pn> Read data on page <pn> of block <bn> of device <name>\n");
+ rt_kprintf(" readoob <name> <bn> <pn> Read oob on page <pn> of block <bn> of device <name>\n");
+ rt_kprintf(" write <name> <bn> <pn> Run write test on page <pn> of block <bn> of device <name>\n");
+ rt_kprintf(" erase <name> <bn> Erase on block <bn> of device <name>\n");
+ rt_kprintf(" eraseall <name> Erase all block on device <name>\n");
+ return ;
+ }
+ else if (!strcmp(argv[1], "id"))
+ {
+ mtd_nandid(argv[2]);
+ }
+ else if (!strcmp(argv[1], "read"))
+ {
+ if (argc < 5)
+ {
+ rt_kprintf("The input parameters are too few!\n");
+ goto help;
+ }
+ mtd_nand_read(argv[2], atoi(argv[3]), atoi(argv[4]));
+ }
+ else if (!strcmp(argv[1], "readoob"))
+ {
+ if (argc < 5)
+ {
+ rt_kprintf("The input parameters are too few!\n");
+ goto help;
+ }
+ mtd_nand_readoob(argv[2], atoi(argv[3]), atoi(argv[4]));
+ }
+ else if (!strcmp(argv[1], "write"))
+ {
+ if (argc < 5)
+ {
+ rt_kprintf("The input parameters are too few!\n");
+ goto help;
+ }
+ mtd_nand_write(argv[2], atoi(argv[3]), atoi(argv[4]));
+ }
+ else if (!strcmp(argv[1], "erase"))
+ {
+ if (argc < 4)
+ {
+ rt_kprintf("The input parameters are too few!\n");
+ goto help;
+ }
+ mtd_nand_erase(argv[2], atoi(argv[3]));
+ }
+ else if (!strcmp(argv[1], "eraseall"))
+ {
+ mtd_nand_erase_all(argv[2]);
+ }
+ else
+ {
+ rt_kprintf("Input parameters are not supported!\n");
+ goto help;
+ }
+}
+MSH_CMD_EXPORT(mtd_nand, MTD nand device test function);
+#endif /* FINSH_USING_MSH */
+
+#ifndef FINSH_USING_MSH_ONLY
+FINSH_FUNCTION_EXPORT_ALIAS(mtd_nandid, nand_id, read ID - nandid(name));
+FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_read, nand_read, read page in nand - nand_read(name, block, page));
+FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_readoob, nand_readoob, read spare data in nand - nand_readoob(name, block, page));
+FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_write, nand_write, write dump data to nand - nand_write(name, block, page));
+FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_erase, nand_erase, nand_erase(name, block));
FINSH_FUNCTION_EXPORT_ALIAS(mtd_nand_erase_all, nand_erase_all, erase all of nand device - nand_erase_all(name, block));
-#endif
+#endif /* FINSH_USING_MSH_ONLY */
-#endif
+#endif /* defined(RT_MTD_NAND_DEBUG) && defined(RT_USING_FINSH) */
+
+#endif /* RT_USING_MTD_NAND */