board_perf:add kv and vfs for risc-v

board_perf:add kv and vfs for risc-v
This commit is contained in:
Supowang
2022-06-07 17:25:22 +08:00
parent d3ab42b8b8
commit 85f804213f
18 changed files with 1199 additions and 117 deletions

View File

@@ -0,0 +1,126 @@
#include "tos_k.h"
#include "tos_hal.h"
#include "ch32v30x.h"
#include "sdio.h"
__API__ int tos_hal_sd_init(hal_sd_t *sd)
{
(void)sd;
return SD_Init() == SD_OK ? 0 : -1;
}
__API__ int tos_hal_sd_read(hal_sd_t *sd, uint8_t *buf, uint32_t blk_addr, uint32_t blk_num, uint32_t timeout)
{
uint8_t err;
(void)sd;
if (!buf) {
return -1;
}
err = SD_ReadDisk(buf, blk_addr, blk_num);
return err == SD_OK ? 0 : -1;
}
__API__ int tos_hal_sd_write(hal_sd_t *sd, const uint8_t *buf, uint32_t blk_addr, uint32_t blk_num, uint32_t timeout)
{
uint8_t err;
(void)sd;
if (!buf) {
return -1;
}
err = SD_WriteDisk((uint8_t *)buf, blk_addr, blk_num);
return err == SD_OK ? 0 : -1;
}
__API__ int tos_hal_sd_read_dma(hal_sd_t *sd, uint8_t *buf, uint32_t blk_addr, uint32_t blk_num)
{
return -1;
}
__API__ int tos_hal_sd_write_dma(hal_sd_t *sd, const uint8_t *buf, uint32_t blk_addr, uint32_t blk_num)
{
return -1;
}
__API__ int tos_hal_sd_erase(hal_sd_t *sd, uint32_t blk_add_start, uint32_t blk_addr_end)
{
return 0;
}
__API__ int tos_hal_sd_info_get(hal_sd_t *sd, hal_sd_info_t *info)
{
SD_Error err;
SD_CardInfo card_info;
(void)sd;
if (!sd || !info) {
return -1;
}
err = SD_GetCardInfo(&card_info);
if (err != SD_OK) {
return -1;
}
info->card_type = card_info.CardType;
info->blk_num = card_info.CardCapacity / card_info.CardBlockSize;
info->blk_size = card_info.CardBlockSize;
return 0;
}
__API__ int tos_hal_sd_state_get(hal_sd_t *sd, hal_sd_state_t *state)
{
int ret = 0;
SDCardState sd_state;
(void)sd;
if (!sd || !state) {
return -1;
}
sd_state = SD_GetState();
switch (sd_state) {
case SD_CARD_READY:
*state = HAL_SD_STAT_READY;
break;
case SD_CARD_SENDING:
*state = HAL_SD_STAT_PROGRAMMING;
break;
case SD_CARD_RECEIVING:
*state = HAL_SD_STAT_RECEIVING;
break;
case SD_CARD_TRANSFER:
*state = HAL_SD_STAT_TRANSFER;
break;
case SD_CARD_ERROR:
*state = HAL_SD_STAT_ERROR;
break;
default:
ret = -1;
break;
}
return ret;
}
__API__ int tos_hal_sd_deinit(hal_sd_t *sd)
{
(void)sd;
return 0;
}

View File

@@ -40,7 +40,7 @@ __API__ int tos_hal_uart_write(hal_uart_t *uart, const uint8_t *buf, size_t size
for(size_t i=0; i<size; i++) {
USART_SendData(base, buf[i]);
tos_task_delay(1);
while (USART_GetFlagStatus(base, USART_FLAG_TC) != SET);
}
return 0;