diff --git a/arch/arm/arm/src/startup/reset_vector_mp.S b/arch/arm/arm/src/startup/reset_vector_mp.S index 964b0137325d7d93d6bd0b16f2529612655a815b..4889b16578e9822f9aabd8b786b56a9da2c2a5c0 100644 --- a/arch/arm/arm/src/startup/reset_vector_mp.S +++ b/arch/arm/arm/src/startup/reset_vector_mp.S @@ -115,9 +115,9 @@ __exception_handlers: .global reset_vector .type reset_vector,function -#ifdef LOSCFG_QUICK_START +#ifdef LOSCFG_BOOTENV_RAM __quickstart_args_start: - .fill 512,1,0 + .fill LOSCFG_BOOTENV_RAMSIZE,1,0 __quickstart_args_end: .global OsGetArgsAddr diff --git a/kernel/common/Kconfig b/kernel/common/Kconfig index 66af51a10954d51e0e65b14bc2a1930e1b1d6da7..000bccd5eed6cde45107a3d3aebe0d2a35d187b8 100644 --- a/kernel/common/Kconfig +++ b/kernel/common/Kconfig @@ -28,8 +28,23 @@ endchoice config BOOTENV_ADDR int "Address of boot command line (KB)" - depends on PLATFORM_ROOTFS + depends on PLATFORM_ROOTFS && (STORAGE_SPINOR || STORAGE_SPINAND || STORAGE_EMMC) range 0 1024 default 512 help Boot command line addr, range from 0 to 1MB. + +config BOOTENV_RAM + bool "Read bootenv from RAM" + default n + depends on PLATFORM_ROOTFS + help + Answer Y to read bootenv from ram. Need boot copy to RAM. + +config BOOTENV_RAMSIZE + int "Size of boot environment in RAM (Byte)" + depends on PLATFORM_ROOTFS && BOOTENV_RAM + range 128 1024 + default 512 + help + Boot environment in Ram space size, range from 128 to 1024 byte. diff --git a/kernel/common/los_rootfs.c b/kernel/common/los_rootfs.c index 3457826c8e9d5acad2b63cf2b672d1e37a597648..7d9f39e1aacb53cf142a0901551dbc5302750f15 100644 --- a/kernel/common/los_rootfs.c +++ b/kernel/common/los_rootfs.c @@ -219,7 +219,7 @@ STATIC const CHAR *GetDevName(const CHAR *rootType, INT32 rootAddr, INT32 rootSi #ifndef LOSCFG_SECURITY_BOOT STATIC INT32 GetArgs(CHAR **args) { -#ifdef LOSCFG_QUICK_START +#ifdef LOSCFG_BOOTENV_RAM *args = OsGetArgsAddr(); return LOS_OK; @@ -387,7 +387,7 @@ STATIC INT32 GetRootType(CHAR **rootType, CHAR **fsType, INT32 *rootAddr, INT32 PRINT_ERR("Cannot get bootargs!\n"); return LOS_NOK; } -#ifndef LOSCFG_QUICK_START +#ifndef LOSCFG_BOOTENV_RAM CHAR *argsBak = NULL; argsBak = args; #endif @@ -399,7 +399,7 @@ STATIC INT32 GetRootType(CHAR **rootType, CHAR **fsType, INT32 *rootAddr, INT32 p = strsep(&args, " "); } if ((*fsType != NULL) && (*rootType != NULL)) { -#ifndef LOSCFG_QUICK_START +#ifndef LOSCFG_BOOTENV_RAM free(argsBak); #endif return LOS_OK; @@ -415,7 +415,7 @@ ERROUT: free(*fsType); *fsType = NULL; } -#ifndef LOSCFG_QUICK_START +#ifndef LOSCFG_BOOTENV_RAM free(argsBak); #endif return LOS_NOK; diff --git a/kernel/common/los_rootfs.h b/kernel/common/los_rootfs.h index c73813b8e0659fab6bd40827ce4b1c1e02aa931c..f2de0986d83a202b4664ac2042a91512bfe8e9b0 100644 --- a/kernel/common/los_rootfs.h +++ b/kernel/common/los_rootfs.h @@ -76,7 +76,7 @@ INT32 OsMountRootfs(VOID); VOID OsSetCmdLineAddr(UINT64 addr); UINT64 OsGetCmdLineAddr(VOID); -#ifdef LOSCFG_QUICK_START +#ifdef LOSCFG_BOOTENV_RAM CHAR *OsGetArgsAddr(VOID); #endif #endif /* _LOS_ROOTFS_H */