#include #include #include #ifdef YAFFS2_DEBUG #define PRINTF(fmt,args...) printf (fmt ,##args) #else #define PRINTF(fmt,args...) #endif extern void cmd_yaffs_mount(char *mp); extern void cmd_yaffs_umount(char *mp); extern void cmd_yaffs_read_file(char *fn); extern void cmd_yaffs_write_file(char *fn,char bval,int sizeOfFile); extern void cmd_yaffs_ls(const char *mountpt, int longlist); extern void cmd_yaffs_mwrite_file(char *fn, char *addr, int size); extern void cmd_yaffs_mread_file(char *fn, char *addr); extern void cmd_yaffs_mkdir(const char *dir); extern void cmd_yaffs_rmdir(const char *dir); extern void cmd_yaffs_rm(const char *path); extern void cmd_yaffs_mv(const char *oldPath, const char *newPath); extern int yaffs_DumpDevStruct(const char *path); int do_ymount (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *mtpoint = argv[1]; cmd_yaffs_mount(mtpoint); return(0); } int do_yumount (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *mtpoint = argv[1]; cmd_yaffs_umount(mtpoint); return(0); } int do_yls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *dirname = argv[argc-1]; cmd_yaffs_ls(dirname, (argc>2)?1:0); return(0); } int do_yrd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *filename = argv[1]; printf ("Reading file %s ", filename); cmd_yaffs_read_file(filename); printf ("done\n"); return(0); } int do_ywr (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *filename = argv[1]; ulong value = simple_strtoul(argv[2], NULL, 16); ulong numValues = simple_strtoul(argv[3], NULL, 16); printf ("Writing value (%lx) %lx times to %s... ", value, numValues, filename); cmd_yaffs_write_file(filename,value,numValues); printf ("done\n"); return(0); } int do_yrdm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *filename = argv[1]; ulong addr = simple_strtoul(argv[2], NULL, 16); cmd_yaffs_mread_file(filename, (char *)addr); return(0); } int do_ywrm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *filename = argv[1]; ulong addr = simple_strtoul(argv[2], NULL, 16); ulong size = simple_strtoul(argv[3], NULL, 16); cmd_yaffs_mwrite_file(filename, (char *)addr, size); return(0); } int do_ymkdir (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *dirname = argv[1]; cmd_yaffs_mkdir(dirname); return(0); } int do_yrmdir (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *dirname = argv[1]; cmd_yaffs_rmdir(dirname); return(0); } int do_yrm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *path = argv[1]; cmd_yaffs_rm(path); return(0); } int do_ymv (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *oldPath = argv[1]; char *newPath = argv[2]; cmd_yaffs_mv(newPath, oldPath); return(0); } int do_ydump (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { char *dirname = argv[1]; if (yaffs_DumpDevStruct(dirname) != 0) printf("yaffs_DumpDevStruct returning error when dumping path: , %s\n", dirname); return 0; } U_BOOT_CMD( ymount, 3, 0, do_ymount, "mount yaffs", "" ); U_BOOT_CMD( yumount, 3, 0, do_yumount, "unmount yaffs", "" ); U_BOOT_CMD( yls, 4, 0, do_yls, "yaffs ls", "[-l] name" ); U_BOOT_CMD( yrd, 2, 0, do_yrd, "read file from yaffs", "filename" ); U_BOOT_CMD( ywr, 4, 0, do_ywr, "write file to yaffs", "filename value num_vlues" ); U_BOOT_CMD( yrdm, 3, 0, do_yrdm, "read file to memory from yaffs", "filename offset" ); U_BOOT_CMD( ywrm, 4, 0, do_ywrm, "write file from memory to yaffs", "filename offset size" ); U_BOOT_CMD( ymkdir, 2, 0, do_ymkdir, "YAFFS mkdir", "dirname" ); U_BOOT_CMD( yrmdir, 2, 0, do_yrmdir, "YAFFS rmdir", "dirname" ); U_BOOT_CMD( yrm, 2, 0, do_yrm, "YAFFS rm", "path" ); U_BOOT_CMD( ymv, 4, 0, do_ymv, "YAFFS mv", "oldPath newPath" ); U_BOOT_CMD( ydump, 2, 0, do_ydump, "YAFFS device struct", "dirname" );