[feat] add shell filesystem
This commit is contained in:
parent
a2fca7a36d
commit
8aed596527
@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
#include "diskio.h"
|
#include "diskio.h"
|
||||||
#include "bsp_spi_sd.h"
|
#include "bsp_spi_sd.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
const char * FR_Table[]=
|
const char * FR_Table[]=
|
||||||
{
|
{
|
||||||
"FR_OK:成功", /* (0) Succeeded */
|
"FR_OK:成功", /* (0) Succeeded */
|
||||||
@ -108,3 +110,14 @@ void fatfs_sd_driver_register(void)
|
|||||||
pNewDiskioDriver.Translate_Result_Code = Translate_Result_Code;
|
pNewDiskioDriver.Translate_Result_Code = Translate_Result_Code;
|
||||||
disk_driver_callback_init(&pNewDiskioDriver);
|
disk_driver_callback_init(&pNewDiskioDriver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int shellGetcwd(char *path, unsigned int len)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
err = f_getcwd(path, len);
|
||||||
|
if(err)
|
||||||
|
{
|
||||||
|
strcpy(path, "unknow");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
@ -52,13 +52,24 @@ void userShellWrite(char data)
|
|||||||
device_write(uart, 0, (uint8_t *)&data, 1);
|
device_write(uart, 0, (uint8_t *)&data, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SHELL_FS == 1
|
||||||
|
__WEAK__ int shellGetcwd(char *path, unsigned int len)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void shell_init(void)
|
void shell_init(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
shell.write = userShellWrite;
|
shell.write = userShellWrite;
|
||||||
|
#if SHELL_FS == 1
|
||||||
|
shell.getcwd = shellGetcwd;
|
||||||
|
#endif
|
||||||
shellInit(&shell, shellBuffer, 512);
|
shellInit(&shell, shellBuffer, 512);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
void uart0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state)
|
void uart0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state)
|
||||||
{
|
{
|
||||||
if (state == UART_EVENT_RX_FIFO)
|
if (state == UART_EVENT_RX_FIFO)
|
||||||
@ -134,6 +145,12 @@ void bflb_platform_print_set(uint8_t disable)
|
|||||||
{
|
{
|
||||||
uart_dbg_disable=disable;
|
uart_dbg_disable=disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bflb_platform_deinit(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void bflb_platform_dump(uint8_t *data, uint32_t len)
|
void bflb_platform_dump(uint8_t *data, uint32_t len)
|
||||||
{
|
{
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
|
@ -25,8 +25,10 @@
|
|||||||
#define _BFLB_PLATFORM_H
|
#define _BFLB_PLATFORM_H
|
||||||
|
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
//#include "mcu_sdk_version.h"
|
||||||
|
|
||||||
#define MSG(a,...) bflb_platform_printf(a,##__VA_ARGS__)
|
#define MSG(a,...) bflb_platform_printf(a,##__VA_ARGS__)
|
||||||
|
#define MSG_DBG(a,...) bflb_platform_printf(a,##__VA_ARGS__)
|
||||||
#define MSG_ERR(a,...) bflb_platform_printf(a,##__VA_ARGS__)
|
#define MSG_ERR(a,...) bflb_platform_printf(a,##__VA_ARGS__)
|
||||||
#define BL_CASE_FAIL {MSG(" Case Fail\r\n");while(1){bflb_platform_delay_ms(1);}}
|
#define BL_CASE_FAIL {MSG(" Case Fail\r\n");while(1){bflb_platform_delay_ms(1);}}
|
||||||
#define BL_CASE_SUCCESS {MSG(" Case Success\r\n");while(1){bflb_platform_delay_ms(1);}}
|
#define BL_CASE_SUCCESS {MSG(" Case Success\r\n");while(1){bflb_platform_delay_ms(1);}}
|
||||||
@ -78,6 +80,7 @@ void check_failed(uint8_t *file, uint32_t line);
|
|||||||
void bflb_platform_init(uint32_t baudrate);
|
void bflb_platform_init(uint32_t baudrate);
|
||||||
void bflb_platform_printf(char *fmt,...);
|
void bflb_platform_printf(char *fmt,...);
|
||||||
void bflb_platform_dump(uint8_t *data, uint32_t len);
|
void bflb_platform_dump(uint8_t *data, uint32_t len);
|
||||||
|
void bflb_platform_deinit(void);
|
||||||
|
|
||||||
void bflb_platform_init_time(void);
|
void bflb_platform_init_time(void);
|
||||||
void bflb_platform_clear_time(void);
|
void bflb_platform_clear_time(void);
|
||||||
|
@ -326,7 +326,15 @@ static void shellWriteCommandLine(Shell *shell)
|
|||||||
{
|
{
|
||||||
shellWriteString(shell, "\r\n");
|
shellWriteString(shell, "\r\n");
|
||||||
shellWriteString(shell, shell->info.user->data.user.name);
|
shellWriteString(shell, shell->info.user->data.user.name);
|
||||||
shellWriteString(shell, "/> ");
|
#if SHELL_FS == 1
|
||||||
|
char path[SHELL_PRINT_BUFFER];
|
||||||
|
shell->getcwd(path, SHELL_PRINT_BUFFER);
|
||||||
|
shellWriteString(shell, ":/");
|
||||||
|
shellWriteString(shell, path);
|
||||||
|
shellWriteString(shell, "$ ");
|
||||||
|
#else
|
||||||
|
shellWriteString(shell, "/$ ");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1962,7 +1970,7 @@ static unsigned int shellExtParseNumber(char *string)
|
|||||||
if (type == NUM_TYPE_FLOAT && devide != 0)
|
if (type == NUM_TYPE_FLOAT && devide != 0)
|
||||||
{
|
{
|
||||||
valueFloat = (float)valueInt / devide * sign;
|
valueFloat = (float)valueInt / devide * sign;
|
||||||
return (uint32_t)valueFloat;
|
return (unsigned int)valueFloat;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2083,3 +2091,5 @@ int shellExtRun(Shell *shell, ShellCommand *command, int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -316,6 +316,7 @@ typedef struct
|
|||||||
} status;
|
} status;
|
||||||
signed char (*read)(char *); /**< shell读函数 */
|
signed char (*read)(char *); /**< shell读函数 */
|
||||||
void (*write)(const char); /**< shell写函数 */
|
void (*write)(const char); /**< shell写函数 */
|
||||||
|
int (*getcwd)(char *path, unsigned int len);
|
||||||
} Shell;
|
} Shell;
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief 历史命令记录数量
|
* @brief 历史命令记录数量
|
||||||
*/
|
*/
|
||||||
#define SHELL_HISTORY_MAX_NUMBER 30
|
#define SHELL_HISTORY_MAX_NUMBER 5
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 双击间隔(ms)
|
* @brief 双击间隔(ms)
|
||||||
@ -136,4 +136,10 @@
|
|||||||
*/
|
*/
|
||||||
#define SHELL_LOCK_TIMEOUT 0 * 60 * 1000
|
#define SHELL_LOCK_TIMEOUT 0 * 60 * 1000
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief shell是否在命令提示符输出路径,需要引用文件系统
|
||||||
|
*/
|
||||||
|
#define SHELL_FS 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user