This repository has been archived on 2023-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
bl_mcu_sdk/examples/bflog/main.c
2022-10-29 16:12:43 +08:00

105 lines
2.8 KiB
C

#include "bflb_mtimer.h"
#include "board.h"
#include "ff.h"
#include "log.h"
FATFS fs;
__attribute((aligned(8))) static uint32_t workbuf[4096];
MKFS_PARM fs_para = {
.fmt = FM_FAT32, /* Format option (FM_FAT, FM_FAT32, FM_EXFAT and FM_SFD) */
.n_fat = 1, /* Number of FATs */
.align = 0, /* Data area alignment (sector) */
.n_root = 1, /* Number of root directory entries */
.au_size = 512 * 32, /* Cluster size (byte) */
};
void filesystem_init(void)
{
FRESULT ret;
board_sdh_gpio_init();
extern void fatfs_sdh_driver_register(void);
fatfs_sdh_driver_register();
ret = f_mount(&fs, "sd:/", 1);
if (ret == FR_NO_FILESYSTEM) {
LOG_W("No filesystem yet, try to be formatted...\r\n");
ret = f_mkfs("sd:/", &fs_para, workbuf, sizeof(workbuf));
if (ret != FR_OK) {
LOG_F("fail to make filesystem\r\n");
_CALL_ERROR();
}
if (ret == FR_OK) {
LOG_I("done with formatting.\r\n");
LOG_I("first start to unmount.\r\n");
ret = f_mount(NULL, "sd:/", 1);
LOG_I("then start to remount.\r\n");
}
} else if (ret != FR_OK) {
LOG_F("fail to mount filesystem,error= %d\r\n", ret);
LOG_F("SD card might fail to initialise.\r\n");
_CALL_ERROR();
} else {
LOG_D("Succeed to mount filesystem\r\n");
}
if (ret == FR_OK) {
LOG_I("FileSystem cluster size:%d-sectors (%d-Byte)\r\n", fs.csize, fs.csize * 512);
}
}
static bflog_direct_file_time_t bflog_direct_filetime;
static bflog_direct_file_size_t bflog_direct_filesize;
void bflog_restart(void)
{
void *record = (void *)&__bflog_recorder;
void *direct0 = (void *)&bflog_direct_filetime;
void *direct1 = (void *)&bflog_direct_filesize;
bflog_direct_create(direct0, BFLOG_DIRECT_TYPE_FILE_TIME, BFLOG_DIRECT_COLOR_DISABLE, NULL, NULL);
bflog_direct_init_file_time_s(direct0, "sd:/log/common", 60, 42);
bflog_direct_create(direct1, BFLOG_DIRECT_TYPE_FILE_SIZE, BFLOG_DIRECT_COLOR_DISABLE, NULL, NULL);
bflog_direct_init_file_size_s(direct1, "sd:/log/error", 128 * 1024, 16);
bflog_direct_control_s(direct1, BFLOG_DIRECT_CMD_LEVEL, BFLOG_LEVEL_WARN);
/*!< suspend record */
bflog_suspend_s(record);
bflog_append_s(record, direct0);
bflog_append_s(record, direct1);
bflog_direct_resume_s(direct0);
bflog_direct_resume_s(direct1);
/*!< resume record */
bflog_resume_s(record);
}
int main(void)
{
board_init();
filesystem_init();
bflog_restart();
while (1) {
LOG_F("hello world\r\n");
LOG_E("hello world\r\n");
LOG_W("hello world\r\n");
LOG_I("hello world\r\n");
LOG_D("hello world\r\n");
LOG_T("hello world\r\n");
bflb_mtimer_delay_ms(200);
}
}