forked from xuos/xiuos
Merge branch 'prepare_for_master' of https://git.trustie.net/xuos/xiuos into develop
This commit is contained in:
@@ -222,6 +222,9 @@ void InitBoardHardware(void)
|
||||
DmacInit();
|
||||
#endif
|
||||
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
/* initalize interrupt */
|
||||
InitHwinterrupt();
|
||||
#ifdef BSP_USING_UART
|
||||
@@ -239,8 +242,7 @@ void InitBoardHardware(void)
|
||||
#ifdef ARCH_SMP
|
||||
EnableHwclintIpi();
|
||||
#endif
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
|
||||
#ifdef KERNEL_COMPONENTS_INIT
|
||||
for(i = 0; _board_init[i].fn != NONE; i++) {
|
||||
|
||||
@@ -34,6 +34,8 @@ void InitBoardHardware()
|
||||
{
|
||||
extern int InitHwUart(void);
|
||||
InitHwUart();
|
||||
InstallConsole(SERIAL_BUS_NAME_1, SERIAL_DRV_NAME_1, SERIAL_DEVICE_NAME_1);
|
||||
|
||||
InitBoardMemory((void*)LM3S_SRAM_START, (void*)LM3S_SRAM_END);
|
||||
|
||||
InstallConsole(SERIAL_BUS_NAME_1, SERIAL_DRV_NAME_1, SERIAL_DEVICE_NAME_1);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ void InitBoardHardware()
|
||||
{
|
||||
extern int InitHwUart(void);
|
||||
InitHwUart();
|
||||
InstallConsole(SERIAL_BUS_NAME_1, SERIAL_DRV_NAME_1, SERIAL_DEVICE_NAME_1);
|
||||
InitBoardMemory((void*)LM3S_SRAM_START, (void*)LM3S_SRAM_END);
|
||||
|
||||
InitBoardMemory((void*)LM3S_SRAM_START, (void*)LM3S_SRAM_END);
|
||||
InstallConsole(SERIAL_BUS_NAME_1, SERIAL_DRV_NAME_1, SERIAL_DEVICE_NAME_1);
|
||||
}
|
||||
|
||||
@@ -109,6 +109,9 @@ void InitBoardHardware()
|
||||
#ifdef BSP_USING_UART
|
||||
Stm32HwUsartInit();
|
||||
#endif
|
||||
|
||||
InitBoardMemory((void*)MEMORY_START_ADDRESS, (void*)MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_CONSOLE
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
|
||||
@@ -119,7 +122,5 @@ void InitBoardHardware()
|
||||
KPrintf("\nconsole init completed.\n");
|
||||
KPrintf("board initialization......\n");
|
||||
#endif
|
||||
|
||||
InitBoardMemory((void*)MEMORY_START_ADDRESS, (void*)MEMORY_END_ADDRESS);
|
||||
|
||||
}
|
||||
|
||||
@@ -54,6 +54,9 @@ void InitBoardHardware(void)
|
||||
CLINT_MTIMECMP_ADDR = CLINT_MTIME_ADDR + TICK;
|
||||
SET_CSR(mie, MIP_MTIP);
|
||||
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
extern int InitHwUart(void);
|
||||
InitHwUart();
|
||||
InstallConsole(SERIAL_BUS_NAME, SERIAL_DRV_NAME, SERIAL_DEVICE_NAME);
|
||||
@@ -62,8 +65,6 @@ void InitBoardHardware(void)
|
||||
KPrintf("board initialization......\n");
|
||||
|
||||
KPrintf("memory address range: [0x%08x - 0x%08x], size: %d\n", (x_ubase) MEMORY_START_ADDRESS, (x_ubase) MEMORY_END_ADDRESS, MEMORY_SIZE);
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -54,6 +54,9 @@ void InitBoardHardware(void)
|
||||
CLINT_MTIMECMP_ADDR = CLINT_MTIME_ADDR + TICK;
|
||||
SET_CSR(mie, MIP_MTIP);
|
||||
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
extern int InitHwUart(void);
|
||||
InitHwUart();
|
||||
InstallConsole(SERIAL_BUS_NAME, SERIAL_DRV_NAME, SERIAL_DEVICE_NAME);
|
||||
@@ -62,8 +65,6 @@ void InitBoardHardware(void)
|
||||
KPrintf("board initialization......\n");
|
||||
|
||||
KPrintf("memory address range: [0x%08x - 0x%08x], size: %d\n", (x_ubase) MEMORY_START_ADDRESS, (x_ubase) MEMORY_END_ADDRESS, MEMORY_SIZE);
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -153,6 +153,10 @@ void InitBoardHardware(void)
|
||||
#ifdef BSP_USING_UART
|
||||
HwUartInit();
|
||||
#endif
|
||||
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_CONSOLE
|
||||
/* set console device */
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
@@ -165,8 +169,6 @@ void InitBoardHardware(void)
|
||||
#ifdef ARCH_SMP
|
||||
EnableHwclintIpi();
|
||||
#endif
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_COMPONENTS_INIT
|
||||
for(i = 0; _board_init[i].fn != NONE; i++) {
|
||||
|
||||
@@ -202,6 +202,10 @@ void InitBoardHardware(void)
|
||||
#ifdef BSP_USING_UART
|
||||
HwUartInit();
|
||||
#endif
|
||||
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_CONSOLE
|
||||
/* set console device */
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
@@ -214,8 +218,6 @@ void InitBoardHardware(void)
|
||||
#ifdef ARCH_SMP
|
||||
EnableHwclintIpi();
|
||||
#endif
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_COMPONENTS_INIT
|
||||
for(i = 0; _board_init[i].fn != NONE; i++) {
|
||||
|
||||
@@ -146,6 +146,10 @@ void InitBoardHardware(void)
|
||||
#ifdef BSP_USING_UART
|
||||
HwUartInit();
|
||||
#endif
|
||||
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_CONSOLE
|
||||
/* set console device */
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
@@ -158,9 +162,6 @@ void InitBoardHardware(void)
|
||||
#ifdef ARCH_SMP
|
||||
EnableHwclintIpi();
|
||||
#endif
|
||||
/* initialize memory system */
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
|
||||
KPrintf("board init done.\n");
|
||||
KPrintf("start kernel...\n");
|
||||
|
||||
@@ -44,7 +44,6 @@ menu "ok1052-c feature"
|
||||
config MOUNT_SDCARD
|
||||
bool "mount cd card"
|
||||
default n
|
||||
select BSP_USING_SDIO
|
||||
endmenu
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -41,30 +41,6 @@ extern int ExtSramInit(void);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(FS_VFS) && defined(MOUNT_SDCARD)
|
||||
#include <iot-vfs.h>
|
||||
|
||||
// SD card mount flag 1: OK
|
||||
int sd_mount_flag = 0;
|
||||
|
||||
/**
|
||||
* @description: Mount SD card
|
||||
* @return 0
|
||||
*/
|
||||
int MountSDCard(void)
|
||||
{
|
||||
if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, FSTYPE_FATFS, "/") == 0)
|
||||
{
|
||||
sd_mount_flag = 1;
|
||||
KPrintf("sd card mount to '/'");
|
||||
}
|
||||
else
|
||||
KPrintf("sd card mount to '/' failed!");
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
|
||||
#include "fsl_lpi2c.h"
|
||||
#endif /* SDK_I2C_BASED_COMPONENT_USED */
|
||||
|
||||
@@ -99,7 +99,7 @@ void ethernetif_clk_init(void)
|
||||
{
|
||||
const clock_enet_pll_config_t config = {.enableClkOutput = true, .enableClkOutput25M = false, .loopDivider = 1};
|
||||
CLOCK_InitEnetPll(&config);
|
||||
SysTick_Config(USEC_TO_COUNT(1000U, CLOCK_GetFreq(kCLOCK_CoreSysClk)));
|
||||
SysTick_Config(SystemCoreClock / TICK_PER_SECOND);
|
||||
}
|
||||
|
||||
void ethernetif_gpio_init(void)
|
||||
@@ -109,9 +109,7 @@ void ethernetif_gpio_init(void)
|
||||
IOMUXC_EnableMode(IOMUXC_GPR, kIOMUXC_GPR_ENET1TxClkOutputDir, true);
|
||||
|
||||
GPIO_PinInit(GPIO1, 3, &gpio_config);
|
||||
GPIO_PinInit(GPIO1, 10, &gpio_config);
|
||||
/* pull up the ENET_INT before RESET. */
|
||||
GPIO_WritePinOutput(GPIO1, 10, 1);
|
||||
GPIO_WritePinOutput(GPIO1, 3, 0);
|
||||
enet_delay();
|
||||
GPIO_WritePinOutput(GPIO1, 3, 1);
|
||||
|
||||
@@ -27,11 +27,14 @@
|
||||
#include <clock_config.h>
|
||||
#include <fsl_gpio.h>
|
||||
#include <fsl_common.h>
|
||||
#include <connect_gpio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define SD_CARD_STACK_SIZE 2048
|
||||
|
||||
int Imxrt1052HwSdioInit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -10,4 +10,15 @@ if BSP_USING_SDIO
|
||||
config SDIO_DEVICE_NAME
|
||||
string "sdio device name"
|
||||
default "sdio_dev"
|
||||
|
||||
config MOUNT_SDCARD_FS
|
||||
bool "mount cd card file system"
|
||||
default n
|
||||
select MOUNT_SDCARD
|
||||
|
||||
if MOUNT_SDCARD_FS
|
||||
config MOUNT_SDCARD_FS_TYPE
|
||||
int "choose file system type : FATFS(0) LWEXT4(3)"
|
||||
default 0
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -104,9 +104,6 @@ static const sdmmchost_card_switch_voltage_func_t s_sdcard_voltage_switch = {
|
||||
};
|
||||
#endif
|
||||
|
||||
/*! @brief SD card detect flag */
|
||||
static volatile bool s_card_inserted = false;
|
||||
|
||||
/*! @brief Card descriptor. */
|
||||
static sd_card_t g_sd;
|
||||
static int sd_lock = -1;
|
||||
@@ -142,11 +139,6 @@ static void BoardPowerOnSdCard(void)
|
||||
BOARD_USDHC_SDCARD_POWER_CONTROL(1);
|
||||
}
|
||||
|
||||
static void SdcardDetectCallBack(bool is_inserted, void *user_data)
|
||||
{
|
||||
s_card_inserted = is_inserted;
|
||||
}
|
||||
|
||||
static void CardInformationLog(sd_card_t *card)
|
||||
{
|
||||
NULL_PARAM_CHECK(card);
|
||||
@@ -261,6 +253,19 @@ static uint32 SdioWrite(void *dev, struct BusBlockWriteParam *write_param)
|
||||
return write_param->size;
|
||||
}
|
||||
|
||||
static int SdioControl(struct HardwareDev *dev, struct HalDevBlockParam *block_param)
|
||||
{
|
||||
NULL_PARAM_CHECK(dev);
|
||||
|
||||
if (OPER_BLK_GETGEOME == block_param->cmd) {
|
||||
block_param->dev_block.size_perbank = g_sd.blockSize;
|
||||
block_param->dev_block.block_size = g_sd.blockSize;
|
||||
block_param->dev_block.bank_num = g_sd.blockCount;
|
||||
}
|
||||
|
||||
return EOK;
|
||||
}
|
||||
|
||||
static struct SdioDevDone dev_done =
|
||||
{
|
||||
SdioOpen,
|
||||
@@ -269,10 +274,126 @@ static struct SdioDevDone dev_done =
|
||||
SdioRead,
|
||||
};
|
||||
|
||||
#if defined(FS_VFS) && defined(MOUNT_SDCARD_FS)
|
||||
#include <iot-vfs.h>
|
||||
|
||||
int sd_mount_flag = 0;
|
||||
|
||||
/**
|
||||
* @description: Mount SD card
|
||||
* @return 0
|
||||
*/
|
||||
static int MountSDCardFs(enum FilesystemType fs_type)
|
||||
{
|
||||
if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, fs_type, "/") == 0) {
|
||||
sd_mount_flag = 1;
|
||||
KPrintf("Sd card mount to '/'");
|
||||
} else {
|
||||
KPrintf("Sd card mount to '/' failed!");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void SdCardAttach(void)
|
||||
{
|
||||
bool is_read_only;
|
||||
static sd_card_t *card = &g_sd;
|
||||
|
||||
KPrintf("\r\nCard inserted.\r\n");
|
||||
/* reset host once card re-plug in */
|
||||
SD_HostReset(&(card->host));
|
||||
/* power on the card */
|
||||
SD_PowerOnCard(card->host.base, card->usrParam.pwr);
|
||||
KPrintf("Power on done\n");
|
||||
|
||||
/* Init card. */
|
||||
if (SD_CardInit(card)) {
|
||||
KPrintf("\r\nSD card init failed.\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* card information log */
|
||||
CardInformationLog(card);
|
||||
|
||||
/* Check if card is readonly. */
|
||||
is_read_only = SD_CheckReadOnly(card);
|
||||
|
||||
#ifdef MOUNT_SDCARD_FS
|
||||
/*mount file system*/
|
||||
MountSDCardFs(MOUNT_SDCARD_FS_TYPE);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void SdCardDetach(void)
|
||||
{
|
||||
/*unmount file system*/
|
||||
KPrintf("\r\nCard detect extracted.\r\n");
|
||||
|
||||
#ifdef MOUNT_SDCARD_FS
|
||||
UnmountFileSystem("/");
|
||||
#endif
|
||||
}
|
||||
|
||||
static uint8 SdCardReadCd(void)
|
||||
{
|
||||
BusType pin;
|
||||
|
||||
pin = BusFind(PIN_BUS_NAME);
|
||||
|
||||
pin->owner_haldev = BusFindDevice(pin, PIN_DEVICE_NAME);
|
||||
|
||||
struct PinStat PinStat;
|
||||
|
||||
struct BusBlockReadParam read_param;
|
||||
read_param.buffer = (void *)&PinStat;
|
||||
|
||||
PinStat.pin = IMXRT_GET_PIN(2, 28);
|
||||
|
||||
return BusDevReadData(pin->owner_haldev, &read_param);
|
||||
}
|
||||
|
||||
static void SdCardTask(void* parameter)
|
||||
{
|
||||
static int sd_card_status = 0;
|
||||
|
||||
while (1) {
|
||||
if (!SdCardReadCd()) {
|
||||
if (!sd_card_status) {
|
||||
SdCardAttach();
|
||||
sd_card_status = 1;
|
||||
}
|
||||
} else {
|
||||
if (sd_card_status) {
|
||||
SdCardDetach();
|
||||
sd_card_status = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MOUNT_SDCARD
|
||||
int MountSDCard()
|
||||
{
|
||||
int sd_card_task = 0;
|
||||
sd_card_task = KTaskCreate("sd_card", SdCardTask, NONE,
|
||||
SD_CARD_STACK_SIZE, 8);
|
||||
if(sd_card_task < 0) {
|
||||
KPrintf("sd_card_task create failed ...%s %d.\n", __FUNCTION__,__LINE__);
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
StartupKTask(sd_card_task);
|
||||
|
||||
return EOK;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int Imxrt1052HwSdioInit(void)
|
||||
{
|
||||
x_err_t ret = EOK;
|
||||
bool is_read_only;
|
||||
|
||||
static struct SdioBus sdio_bus;
|
||||
static struct SdioDriver sdio_drv;
|
||||
@@ -305,35 +426,6 @@ int Imxrt1052HwSdioInit(void)
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
KPrintf("\r\nPlease insert a card into board.\r\n");
|
||||
|
||||
/* power off card */
|
||||
SD_PowerOffCard(card->host.base, card->usrParam.pwr);
|
||||
|
||||
if (SD_WaitCardDetectStatus(SD_HOST_BASEADDR, &s_sdcard_detect, true) == kStatus_Success) {
|
||||
KPrintf("\r\nCard inserted.\r\n");
|
||||
/* reset host once card re-plug in */
|
||||
SD_HostReset(&(card->host));
|
||||
/* power on the card */
|
||||
SD_PowerOnCard(card->host.base, card->usrParam.pwr);
|
||||
KPrintf("power on done\n");
|
||||
} else {
|
||||
KPrintf("\r\nCard detect fail.\r\n");
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* Init card. */
|
||||
if (SD_CardInit(card)) {
|
||||
KPrintf("\r\nSD card init failed.\r\n");
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* card information log */
|
||||
CardInformationLog(card);
|
||||
|
||||
/* Check if card is readonly. */
|
||||
is_read_only = SD_CheckReadOnly(card);
|
||||
|
||||
ret = SdioBusInit(&sdio_bus, SDIO_BUS_NAME);
|
||||
if (ret != EOK) {
|
||||
KPrintf("Sdio bus init error %d\n", ret);
|
||||
@@ -352,6 +444,7 @@ int Imxrt1052HwSdioInit(void)
|
||||
}
|
||||
|
||||
sdio_dev.dev_done = &dev_done;
|
||||
sdio_dev.haldev.dev_block_control = SdioControl;
|
||||
ret = SdioDeviceRegister(&sdio_dev, SDIO_DEVICE_NAME);
|
||||
if (ret != EOK) {
|
||||
KPrintf("Sdio device register error %d\n", ret);
|
||||
|
||||
@@ -41,11 +41,9 @@ void LPUART1_IRQHandler(int irqn, void *arg)
|
||||
{
|
||||
x_base lock = 0;
|
||||
// KPrintf("LPUART1_IRQHandler \n");
|
||||
lock = DISABLE_INTERRUPT();
|
||||
|
||||
lock = DisableIRQ(UART1_IRQn);
|
||||
UartIsr(&serial_bus_1, &serial_driver_1, &serial_device_1);
|
||||
|
||||
ENABLE_INTERRUPT(lock);
|
||||
EnableIRQ(UART1_IRQn);
|
||||
}
|
||||
DECLARE_HW_IRQ(UART1_IRQn, LPUART1_IRQHandler, NONE);
|
||||
#endif
|
||||
|
||||
+2
-2
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
|
||||
/*************************************************
|
||||
File name: usb_misc.h
|
||||
Description: modify usb_echo to KPrintf
|
||||
File name: host_msd_command.c
|
||||
Description: modify usb msd command test function
|
||||
Others: take SDK_2.6.1_MIMXRT1052xxxxB/boards/evkbimxrt1050/usb_examples/usb_host_msd_command for references
|
||||
History:
|
||||
1. Date: 2022-02-10
|
||||
|
||||
@@ -63,10 +63,12 @@ void InitBoardHardware(void)
|
||||
|
||||
InitHwUart();
|
||||
InitHwTick();
|
||||
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
|
||||
InstallConsole("uart0", "uart0_drv", "uart0_dev0");
|
||||
KPrintf("console init completed.\n");
|
||||
|
||||
InitBoardMemory(MEMORY_START_ADDRESS, MEMORY_END_ADDRESS);
|
||||
KPrintf("memory address range: [0x%08x - 0x%08x], size: %d\n", (x_ubase) MEMORY_START_ADDRESS, (x_ubase) MEMORY_END_ADDRESS, RV32M1VEGA_SRAM_SIZE);
|
||||
KPrintf("board init done.\n");
|
||||
KPrintf("start kernel...\n");
|
||||
|
||||
@@ -89,6 +89,8 @@ void InitBoardHardware()
|
||||
__set_PRIMASK(1);
|
||||
|
||||
InitHwUart();
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
|
||||
InitBoardMemory((void*)HEAP_START, (void*)HEAP_END);
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
|
||||
}
|
||||
|
||||
@@ -156,6 +156,9 @@ void InitBoardHardware()
|
||||
#ifdef BSP_USING_UART
|
||||
Stm32HwUsartInit();
|
||||
#endif
|
||||
|
||||
InitBoardMemory((void*)MEMORY_START_ADDRESS, (void*)MEMORY_END_ADDRESS);
|
||||
|
||||
#ifdef KERNEL_CONSOLE
|
||||
InstallConsole(KERNEL_CONSOLE_BUS_NAME, KERNEL_CONSOLE_DRV_NAME, KERNEL_CONSOLE_DEVICE_NAME);
|
||||
|
||||
@@ -166,8 +169,6 @@ void InitBoardHardware()
|
||||
KPrintf("\nconsole init completed.\n");
|
||||
KPrintf("board initialization......\n");
|
||||
#endif
|
||||
|
||||
InitBoardMemory((void*)MEMORY_START_ADDRESS, (void*)MEMORY_END_ADDRESS);
|
||||
|
||||
for(i = 0; _board_init[i].fn != NONE; i++) {
|
||||
ret = _board_init[i].fn();
|
||||
|
||||
@@ -42,9 +42,8 @@ menu "xidatong feature"
|
||||
|
||||
menu "config board peripheral"
|
||||
config MOUNT_SDCARD
|
||||
bool "mount cd card"
|
||||
bool "mount sd card"
|
||||
default n
|
||||
select BSP_USING_SDIO
|
||||
endmenu
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -29,24 +29,6 @@ Modification:
|
||||
#include "board.h"
|
||||
#include "pin_mux.h"
|
||||
|
||||
#if defined(FS_VFS) && defined(MOUNT_SDCARD)
|
||||
#include <iot-vfs.h>
|
||||
|
||||
/**
|
||||
* @description: Mount SD card
|
||||
* @return 0
|
||||
*/
|
||||
int MountSDCard(void)
|
||||
{
|
||||
if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, FSTYPE_FATFS, "/") == 0)
|
||||
KPrintf("sd card mount to '/'");
|
||||
else
|
||||
KPrintf("sd card mount to '/' failed!");
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
|
||||
#include "fsl_lpi2c.h"
|
||||
#endif /* SDK_I2C_BASED_COMPONENT_USED */
|
||||
|
||||
@@ -27,11 +27,14 @@
|
||||
#include <clock_config.h>
|
||||
#include <fsl_gpio.h>
|
||||
#include <fsl_common.h>
|
||||
#include <connect_gpio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define SD_CARD_STACK_SIZE 2048
|
||||
|
||||
int Imxrt1052HwSdioInit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -10,4 +10,15 @@ if BSP_USING_SDIO
|
||||
config SDIO_DEVICE_NAME
|
||||
string "sdio device name"
|
||||
default "sdio_dev"
|
||||
|
||||
config MOUNT_SDCARD_FS
|
||||
bool "mount cd card file system"
|
||||
default n
|
||||
select MOUNT_SDCARD
|
||||
|
||||
if MOUNT_SDCARD_FS
|
||||
config MOUNT_SDCARD_FS_TYPE
|
||||
int "choose file system type : FATFS(0) LWEXT4(3)"
|
||||
default 0
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -104,9 +104,6 @@ static const sdmmchost_card_switch_voltage_func_t s_sdcard_voltage_switch = {
|
||||
};
|
||||
#endif
|
||||
|
||||
/*! @brief SD card detect flag */
|
||||
static volatile bool s_card_inserted = false;
|
||||
|
||||
/*! @brief Card descriptor. */
|
||||
static sd_card_t g_sd;
|
||||
static int sd_lock = -1;
|
||||
@@ -142,11 +139,6 @@ static void BoardPowerOnSdCard(void)
|
||||
BOARD_USDHC_SDCARD_POWER_CONTROL(1);
|
||||
}
|
||||
|
||||
static void SdcardDetectCallBack(bool is_inserted, void *user_data)
|
||||
{
|
||||
s_card_inserted = is_inserted;
|
||||
}
|
||||
|
||||
static void CardInformationLog(sd_card_t *card)
|
||||
{
|
||||
NULL_PARAM_CHECK(card);
|
||||
@@ -261,6 +253,19 @@ static uint32 SdioWrite(void *dev, struct BusBlockWriteParam *write_param)
|
||||
return write_param->size;
|
||||
}
|
||||
|
||||
static int SdioControl(struct HardwareDev *dev, struct HalDevBlockParam *block_param)
|
||||
{
|
||||
NULL_PARAM_CHECK(dev);
|
||||
|
||||
if (OPER_BLK_GETGEOME == block_param->cmd) {
|
||||
block_param->dev_block.size_perbank = g_sd.blockSize;
|
||||
block_param->dev_block.block_size = g_sd.blockSize;
|
||||
block_param->dev_block.bank_num = g_sd.blockCount;
|
||||
}
|
||||
|
||||
return EOK;
|
||||
}
|
||||
|
||||
static struct SdioDevDone dev_done =
|
||||
{
|
||||
SdioOpen,
|
||||
@@ -269,10 +274,121 @@ static struct SdioDevDone dev_done =
|
||||
SdioRead,
|
||||
};
|
||||
|
||||
#if defined(FS_VFS) && defined(MOUNT_SDCARD_FS)
|
||||
#include <iot-vfs.h>
|
||||
|
||||
/**
|
||||
* @description: Mount SD card
|
||||
* @return 0
|
||||
*/
|
||||
static int MountSDCardFs(enum FilesystemType fs_type)
|
||||
{
|
||||
if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, fs_type, "/") == 0)
|
||||
KPrintf("Sd card mount to '/'");
|
||||
else
|
||||
KPrintf("Sd card mount to '/' failed!");
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void SdCardAttach(void)
|
||||
{
|
||||
bool is_read_only;
|
||||
static sd_card_t *card = &g_sd;
|
||||
|
||||
KPrintf("\r\nCard inserted.\r\n");
|
||||
/* reset host once card re-plug in */
|
||||
SD_HostReset(&(card->host));
|
||||
/* power on the card */
|
||||
SD_PowerOnCard(card->host.base, card->usrParam.pwr);
|
||||
KPrintf("Power on done\n");
|
||||
|
||||
/* Init card. */
|
||||
if (SD_CardInit(card)) {
|
||||
KPrintf("\r\nSD card init failed.\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* card information log */
|
||||
CardInformationLog(card);
|
||||
|
||||
/* Check if card is readonly. */
|
||||
is_read_only = SD_CheckReadOnly(card);
|
||||
|
||||
#ifdef MOUNT_SDCARD_FS
|
||||
/*mount file system*/
|
||||
MountSDCardFs(MOUNT_SDCARD_FS_TYPE);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void SdCardDetach(void)
|
||||
{
|
||||
/*unmount file system*/
|
||||
KPrintf("\r\nCard detect extracted.\r\n");
|
||||
|
||||
#ifdef MOUNT_SDCARD_FS
|
||||
UnmountFileSystem("/");
|
||||
#endif
|
||||
}
|
||||
|
||||
static uint8 SdCardReadCd(void)
|
||||
{
|
||||
BusType pin;
|
||||
|
||||
pin = BusFind(PIN_BUS_NAME);
|
||||
|
||||
pin->owner_haldev = BusFindDevice(pin, PIN_DEVICE_NAME);
|
||||
|
||||
struct PinStat PinStat;
|
||||
|
||||
struct BusBlockReadParam read_param;
|
||||
read_param.buffer = (void *)&PinStat;
|
||||
|
||||
PinStat.pin = IMXRT_GET_PIN(2, 28);
|
||||
|
||||
return BusDevReadData(pin->owner_haldev, &read_param);
|
||||
}
|
||||
|
||||
static void SdCardTask(void* parameter)
|
||||
{
|
||||
static int sd_card_status = 0;
|
||||
|
||||
while (1) {
|
||||
if (!SdCardReadCd()) {
|
||||
if (!sd_card_status) {
|
||||
SdCardAttach();
|
||||
sd_card_status = 1;
|
||||
}
|
||||
} else {
|
||||
if (sd_card_status) {
|
||||
SdCardDetach();
|
||||
sd_card_status = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MOUNT_SDCARD
|
||||
int MountSDCard()
|
||||
{
|
||||
int sd_card_task = 0;
|
||||
sd_card_task = KTaskCreate("sd_card", SdCardTask, NONE,
|
||||
SD_CARD_STACK_SIZE, 8);
|
||||
if(sd_card_task < 0) {
|
||||
KPrintf("sd_card_task create failed ...%s %d.\n", __FUNCTION__,__LINE__);
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
StartupKTask(sd_card_task);
|
||||
|
||||
return EOK;
|
||||
}
|
||||
#endif
|
||||
|
||||
int Imxrt1052HwSdioInit(void)
|
||||
{
|
||||
x_err_t ret = EOK;
|
||||
bool is_read_only;
|
||||
|
||||
static struct SdioBus sdio_bus;
|
||||
static struct SdioDriver sdio_drv;
|
||||
@@ -304,35 +420,6 @@ int Imxrt1052HwSdioInit(void)
|
||||
KPrintf("\r\nSD host init fail\r\n");
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
KPrintf("\r\nPlease insert a card into board.\r\n");
|
||||
|
||||
/* power off card */
|
||||
SD_PowerOffCard(card->host.base, card->usrParam.pwr);
|
||||
|
||||
if (SD_WaitCardDetectStatus(SD_HOST_BASEADDR, &s_sdcard_detect, true) == kStatus_Success) {
|
||||
KPrintf("\r\nCard inserted.\r\n");
|
||||
/* reset host once card re-plug in */
|
||||
SD_HostReset(&(card->host));
|
||||
/* power on the card */
|
||||
SD_PowerOnCard(card->host.base, card->usrParam.pwr);
|
||||
KPrintf("power on done\n");
|
||||
} else {
|
||||
KPrintf("\r\nCard detect fail.\r\n");
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* Init card. */
|
||||
if (SD_CardInit(card)) {
|
||||
KPrintf("\r\nSD card init failed.\r\n");
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* card information log */
|
||||
CardInformationLog(card);
|
||||
|
||||
/* Check if card is readonly. */
|
||||
is_read_only = SD_CheckReadOnly(card);
|
||||
|
||||
ret = SdioBusInit(&sdio_bus, SDIO_BUS_NAME);
|
||||
if (ret != EOK) {
|
||||
@@ -352,6 +439,7 @@ int Imxrt1052HwSdioInit(void)
|
||||
}
|
||||
|
||||
sdio_dev.dev_done = &dev_done;
|
||||
sdio_dev.haldev.dev_block_control = SdioControl;
|
||||
ret = SdioDeviceRegister(&sdio_dev, SDIO_DEVICE_NAME);
|
||||
if (ret != EOK) {
|
||||
KPrintf("Sdio device register error %d\n", ret);
|
||||
|
||||
+2
-2
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
|
||||
/*************************************************
|
||||
File name: usb_misc.h
|
||||
Description: modify usb_echo to KPrintf
|
||||
File name: host_msd_command.c
|
||||
Description: modify usb msd command test function
|
||||
Others: take SDK_2.6.1_MIMXRT1052xxxxB/boards/evkbimxrt1050/usb_examples/usb_host_msd_command for references
|
||||
History:
|
||||
1. Date: 2022-02-10
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
config CONFIG_USE_DEFAULT_CFG
|
||||
int
|
||||
default 1
|
||||
|
||||
config CONFIG_HAVE_OWN_OFLAGS
|
||||
int
|
||||
default 0
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
SRC_DIR := lwext4_submodule
|
||||
|
||||
|
||||
|
||||
include $(KERNEL_ROOT)/compiler.mk
|
||||
include $(KERNEL_ROOT)/compiler.mk
|
||||
|
||||
+1
Submodule Ubiquitous/XiZi/fs/lwext4/lwext4_submodule added at 1eba3cfeda
@@ -24,6 +24,9 @@ enum FilesystemType
|
||||
FSTYPE_FATFS = 0,
|
||||
FSTYPE_IOTDEVICEFILE,
|
||||
FSTYPE_CH376,
|
||||
#ifdef FS_LWEXT4
|
||||
FSTYPE_LWEXT4,
|
||||
#endif
|
||||
FSTYPE_END,
|
||||
};
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ extern int FlashW25qxxSpiDeviceInit(void);
|
||||
extern int LoraSx12xxSpiDeviceInit(void);
|
||||
extern int FatfsInit(void);
|
||||
extern int Ch376fsInit(void);
|
||||
extern int Lwext4Init(void);
|
||||
extern int LibcSystemInit(void);
|
||||
extern int RtcNtpSyncInit(void);
|
||||
extern int MountSDCard(void);
|
||||
|
||||
@@ -95,6 +95,9 @@ struct InitSequenceDesc components_init[] =
|
||||
#endif
|
||||
#ifdef FS_CH376
|
||||
{ "ch376", Ch376fsInit },
|
||||
#endif
|
||||
#ifdef FS_LWEXT4
|
||||
{ "lwext4", Lwext4Init },
|
||||
#endif
|
||||
{ "libc_system", LibcSystemInit },
|
||||
#ifdef RTC_SYNC_USING_NTP
|
||||
|
||||
@@ -305,7 +305,7 @@ KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/Framework/connection/zigbee
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ADAPTER_HFA21_ETHERCAT), y)
|
||||
KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/Framework/connection/ethercat #
|
||||
KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/Framework/connection/industrial_ethernet/ethercat #
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_SUPPORT_KNOWING_FRAMEWORK), y)
|
||||
@@ -354,6 +354,12 @@ ifeq ($(CONFIG_LIB_NEWLIB),y)
|
||||
KERNELPATHS += -I$(KERNEL_ROOT)/lib/newlib/include #
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_FS_LWEXT4),y)
|
||||
KERNELPATHS += -I$(KERNEL_ROOT)/fs/lwext4/lwext4_submodule/blockdev/xiuos #
|
||||
KERNELPATHS += -I$(KERNEL_ROOT)/fs/lwext4/lwext4_submodule/include #
|
||||
KERNELPATHS += -I$(KERNEL_ROOT)/fs/lwext4/lwext4_submodule/include/misc
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(ARCH), risc-v)
|
||||
KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared
|
||||
|
||||
@@ -184,7 +184,7 @@ sys_sem_free(sys_sem_t *sem)
|
||||
|
||||
int sys_sem_valid(sys_sem_t *sem)
|
||||
{
|
||||
return (*sem >= SYS_SEM_NULL);
|
||||
return (*sem > SYS_SEM_NULL);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -212,7 +212,7 @@ u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout)
|
||||
|
||||
|
||||
if(KSemaphoreObtain(*sem, wait_time) == EOK)
|
||||
return ((CurrentTicksGain()-start_tick)*MS_PER_SYSTICK_F407);
|
||||
return ((CurrentTicksGain()-start_tick)*MS_PER_SYSTICK);
|
||||
else
|
||||
return SYS_ARCH_TIMEOUT;
|
||||
}
|
||||
@@ -226,7 +226,7 @@ void sys_sem_signal(sys_sem_t *sem)
|
||||
err_t sys_mutex_new(sys_mutex_t *mutex)
|
||||
{
|
||||
*mutex = KMutexCreate();
|
||||
if(*mutex >= 0)
|
||||
if(*mutex > SYS_MRTEX_NULL)
|
||||
return ERR_OK;
|
||||
else
|
||||
{
|
||||
@@ -344,7 +344,7 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *q, void **msg, u32_t timeout)
|
||||
wait_time = timeout;
|
||||
|
||||
if(KMsgQueueRecv(*q, &(*msg), sizeof(void *), wait_time) == EOK)
|
||||
return ((CurrentTicksGain()-start_tick)*MS_PER_SYSTICK_F407);
|
||||
return ((CurrentTicksGain()-start_tick)*MS_PER_SYSTICK);
|
||||
else{
|
||||
*msg = NULL;
|
||||
return SYS_ARCH_TIMEOUT;
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
/* USER CODE END 0 */
|
||||
#define SYS_MBOX_NULL -1
|
||||
#define SYS_SEM_NULL 0
|
||||
#define SYS_SEM_NULL -1
|
||||
#define SYS_MRTEX_NULL SYS_SEM_NULL
|
||||
|
||||
typedef int32 sys_sem_t;
|
||||
@@ -71,7 +71,7 @@ typedef int32 sys_mbox_t;
|
||||
typedef int32 sys_thread_t;
|
||||
typedef x_base sys_prot_t;
|
||||
|
||||
#define MS_PER_SYSTICK_F407 (1000 / TICK_PER_SECOND)
|
||||
#define MS_PER_SYSTICK (1000 / TICK_PER_SECOND)
|
||||
|
||||
//debug rtos with IRQ
|
||||
//#define FSL_RTOS_XIUOS
|
||||
|
||||
@@ -1652,7 +1652,6 @@ void shellTask(void *param)
|
||||
shellHandler(shell, data[i]);
|
||||
}
|
||||
}
|
||||
KPrintf("");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user