summaryrefslogtreecommitdiffstatsabout
diff options
context:
space:
mode:
authorJiaojinxing <jiaojinxing1987@gmail.com>2017-09-19 12:16:00 (GMT)
committer Jiaojinxing <jiaojinxing1987@gmail.com>2017-09-19 12:16:00 (GMT)
commitf7bc2bc703c878d49ac45eeaf10c4bccb8c42353 (patch)
treec975448a232fa3c9ba0867adcdf8fdb564ee818b
parentd599c1f993a775e01e347a68ed2674f41a0fd9b1 (diff)
downloadbspam335x-f7bc2bc703c878d49ac45eeaf10c4bccb8c42353.zip
bspam335x-f7bc2bc703c878d49ac45eeaf10c4bccb8c42353.tar.gz
bspam335x-f7bc2bc703c878d49ac45eeaf10c4bccb8c42353.tar.bz2
Update standard directory initialize and startup.sh executes.
-rw-r--r--SylixOS/bsp/bspInit.c177
1 files changed, 24 insertions, 153 deletions
diff --git a/SylixOS/bsp/bspInit.c b/SylixOS/bsp/bspInit.c
index e8b59bb..5dc2c23 100644
--- a/SylixOS/bsp/bspInit.c
+++ b/SylixOS/bsp/bspInit.c
@@ -502,144 +502,6 @@ static VOID halLoaderInit (VOID)
#endif /* LW_CFG_SYMBOL_EN > 0 */
/*********************************************************************************************************
-** 函数名称: halStdDirInit
-** 功能描述: 设备标准文件系统创建
-** 输 入 : NONE
-** 输 出 : NONE
-** 全局变量:
-** 调用模块:
-*********************************************************************************************************/
-static VOID halStdDirInit (VOID)
-{
- /*
- * 当 LW_CFG_PATH_VXWORKS == 0 时, 操作系统会在根目录下自动创建三个挂载点 /dev /mnt /var
- * 其余挂载点需要通过手动创建, 例如: /etc /bin /sbin /tmp 等等,
- * 一般来说 /tmp /bin /sbin /ftk /etc ... 可以做成链接文件, 链接到指定的文件系统.
- */
- mkdir("/usb", DEFAULT_DIR_PERM);
-
-#if BSP_CFG_NAND_ROOTFS_EN > 0
- if (access("/yaffs2/n0/boot", R_OK) < 0) {
- mkdir("/yaffs2/n0/boot", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n0/etc", R_OK) < 0) {
- mkdir("/yaffs2/n0/etc", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/ftk", R_OK) < 0) {
- mkdir("/yaffs2/n1/ftk", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/qt", R_OK) < 0) {
- mkdir("/yaffs2/n1/qt", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/lib", R_OK) < 0) {
- mkdir("/yaffs2/n1/lib", DEFAULT_DIR_PERM);
- mkdir("/yaffs2/n1/lib/modules", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/usr", R_OK) < 0) {
- mkdir("/yaffs2/n1/usr", DEFAULT_DIR_PERM);
- mkdir("/yaffs2/n1/usr/lib", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/bin", R_OK) < 0) {
- mkdir("/yaffs2/n1/bin", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/tmp", R_OK) < 0) {
- mkdir("/yaffs2/n1/tmp", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/sbin", R_OK) < 0) {
- mkdir("/yaffs2/n1/sbin", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/apps", R_OK) < 0) {
- mkdir("/yaffs2/n1/apps", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/home", R_OK) < 0) {
- mkdir("/yaffs2/n1/home", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/root", R_OK) < 0) {
- mkdir("/yaffs2/n1/root", DEFAULT_DIR_PERM);
- }
- if (access("/yaffs2/n1/var", R_OK) < 0) {
- mkdir("/yaffs2/n1/var", DEFAULT_DIR_PERM);
- }
-
- symlink("/yaffs2/n0/boot", "/boot");
- symlink("/yaffs2/n0/etc", "/etc"); /* 创建根目录符号链接 */
- symlink("/yaffs2/n1/ftk", "/ftk"); /* 创建 FTK 图形系统符号链接 */
- symlink("/yaffs2/n1/qt", "/qt"); /* 创建 Qt 图形系统符号链接 */
- symlink("/yaffs2/n1/lib", "/lib");
- symlink("/yaffs2/n1/usr", "/usr");
- symlink("/yaffs2/n1/bin", "/bin");
- symlink("/yaffs2/n1/sbin", "/sbin");
- symlink("/yaffs2/n1/apps", "/apps");
- symlink("/yaffs2/n1/home", "/home");
- symlink("/yaffs2/n1/root", "/root");
- symlink("/yaffs2/n1/var", "/var");
- symlink("/yaffs2/n1/tmp", "/var/tmp");
- symlink("/yaffs2/n1/tmp", "/tmp");
-#endif
-
-#if BSP_CFG_SD_ROOTFS_EN > 0
- while (access("/media/sdcard0", R_OK) < 0) {
- printk(KERN_WARNING "halStdDirInit(): wait for sdcard insert!\n");
- sleep(1);
- }
-
- if (access("/media/sdcard0/boot", R_OK) < 0) {
- mkdir("/media/sdcard0/boot", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/etc", R_OK) < 0) {
- mkdir("/media/sdcard0/etc", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/ftk", R_OK) < 0) {
- mkdir("/media/sdcard0/ftk", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/qt", R_OK) < 0) {
- mkdir("/media/sdcard0/qt", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/lib", R_OK) < 0) {
- mkdir("/media/sdcard0/lib", DEFAULT_DIR_PERM);
- mkdir("/media/sdcard0/lib/modules", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/usr", R_OK) < 0) {
- mkdir("/media/sdcard0/usr", DEFAULT_DIR_PERM);
- mkdir("/media/sdcard0/usr/lib", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/bin", R_OK) < 0) {
- mkdir("/media/sdcard0/bin", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/sbin", R_OK) < 0) {
- mkdir("/media/sdcard0/sbin", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/apps", R_OK) < 0) {
- mkdir("/media/sdcard0/apps", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/home", R_OK) < 0) {
- mkdir("/media/sdcard0/home", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/root", R_OK) < 0) {
- mkdir("/media/sdcard0/root", DEFAULT_DIR_PERM);
- }
- if (access("/media/sdcard0/var", R_OK) < 0) {
- mkdir("/media/sdcard0/var", DEFAULT_DIR_PERM);
- }
-
- symlink("/media/sdcard0/boot", "/boot");
- symlink("/media/sdcard0/etc", "/etc"); /* 创建根目录符号链接 */
- symlink("/media/sdcard0/ftk", "/ftk"); /* 创建 FTK 图形系统符号链接 */
- symlink("/media/sdcard0/qt", "/qt"); /* 创建 Qt 图形系统符号链接 */
- symlink("/media/sdcard0/lib", "/lib");
- symlink("/media/sdcard0/usr", "/usr");
- symlink("/media/sdcard0/bin", "/bin");
- symlink("/media/sdcard0/sbin", "/sbin");
- symlink("/media/sdcard0/apps", "/apps");
- symlink("/media/sdcard0/home", "/home");
- symlink("/media/sdcard0/root", "/root");
- symlink("/media/sdcard0/var", "/var");
- system("mount -t ramfs 0 /tmp");
-#endif
-
- system("mount -t ramfs 0 /ramdisk");
-}
-/*********************************************************************************************************
** 函数名称: halBootThread
** 功能描述: 多任务状态下的初始化启动任务
** 输 入 : NONE
@@ -692,14 +554,20 @@ static PVOID halBootThread (PVOID pvBootArg)
#endif
#endif
- halStdDirInit(); /* 创建标准目录 */
+#if BSP_CFG_SD_ROOTFS_EN > 0
+ while (access("/media/sdcard0", R_OK) < 0) {
+ printk(KERN_WARNING "halStdDirInit(): wait for sdcard insert!\n");
+ sleep(1);
+ }
+ while (access("/media/sdcard1", R_OK) < 0) {
+ printk(KERN_WARNING "halStdDirInit(): wait for sdcard insert!\n");
+ sleep(1);
+ }
+#endif
- /*
- * 只有初始化了 shell 并获得了 TZ 环境变量标示的时区, 才可以调用 rtcToRoot()
- */
- system("varload"); /* 从/etc/profile中读取环境变量*/
- lib_tzset(); /* 通过 TZ 环境变量设置时区 */
- rtcToRoot(); /* 将 RTC 时间同步到根文件系统 */
+#if LW_CFG_DEVICE_EN > 0 /* map rootfs */
+ rootFsMap(LW_ROOTFS_MAP_LOAD_VAR | LW_ROOTFS_MAP_SYNC_TZ | LW_ROOTFS_MAP_SET_TIME);
+#endif
/*
* 网络初始化一般放在 shell 初始化之后, 因为初始化网络组件时, 会自动注册 shell 命令.
@@ -725,14 +593,8 @@ static PVOID halBootThread (PVOID pvBootArg)
halMonitorInit();
#endif /* LW_CFG_MONITOR_EN > 0 */
-#if BSP_CFG_NAND_ROOTFS_EN > 0
- system("shfile /yaffs2/n0/etc/startup.sh"); /* 执行启动脚本 */
- /* 必须在初始化 shell 后调用!! */
-#endif
-
-#if BSP_CFG_SD_ROOTFS_EN > 0
- system("shfile /media/sdcard0/etc/startup.sh"); /* 执行启动脚本 */
- /* 必须在初始化 shell 后调用!! */
+#if LW_CFG_SHELL_EN > 0
+ tshellStartup(); /* 执行启动脚本 */
#endif
API_ThreadAttrSetStackSize(&threakattr, __LW_THREAD_MAIN_STK_SIZE); /* 设置 main 线程的堆栈大小 */
@@ -824,6 +686,15 @@ INT bspInit (VOID)
*/
API_KernelStartParam("ncpus=1 kdlog=no kderror=yes kfpu=no heapchk=yes hz=1000 hhz=1000");
/* 操作系统启动参数设置 */
+
+ API_KernelStartParam("ncpus=1 kdlog=no kderror=yes kfpu=no heapchk=yes hz=1000 hhz=1000 "
+#if BSP_CFG_NAND_ROOTFS_EN > 0
+ "rfsmap=/boot:/yaffs2/n0,/:/yaffs2/n1"
+#else
+ "rfsmap=/boot:/media/sdcard0,/:/media/sdcard1"
+#endif
+ );
+
API_KernelStart(usrStartup,
(PVOID)&__heap_start,
(size_t)&__heap_end - (size_t)&__heap_start,