diff --git a/ap/app/flags_tool/src/main.c b/ap/app/flags_tool/src/main.c
index 403349e..7e64a78 100755
--- a/ap/app/flags_tool/src/main.c
+++ b/ap/app/flags_tool/src/main.c
@@ -34,6 +34,8 @@
 /*******************************************************************************
  *                             Macro definitions                               *
  ******************************************************************************/
+#define FLAGS_UTILS_GET	_IOWR('b', 1, T_FLAGS_INFO)
+#define FLAGS_UTILS_SET	_IOWR('b', 2, T_FLAGS_INFO)
 
 
 /*******************************************************************************
@@ -57,11 +59,14 @@
 static int excute_command_get_ubifs_status(char *option_para);
 static int excute_command_set_ubifs_status(char *option_para);
 
+static int excute_command_kernel_get(char *option_para);
+static int excute_command_kernel_set(char *option_para);
+
 
 /*******************************************************************************
  *                       Global variable declarations                          *
  ******************************************************************************/
-static char * g_short_string = "higsub";
+static char * g_short_string = "higsubtq";
 
 static struct option g_long_options[] =
 {
@@ -71,6 +76,8 @@
     {"set",					no_argument,	NULL,	's'},
     {"get-ubifs-status",	no_argument,	NULL,	'u'},
     {"set-ubifs-status",	no_argument,	NULL,	'b'},
+    {"kernel-get",			no_argument,	NULL,	't'},
+    {"kernel-set",			no_argument,	NULL,	'q'},
     {0, 0, 0, 0}
 };
 
@@ -81,7 +88,9 @@
     {'g',		excute_command_get},
     {'s',		excute_command_set},
     {'u',		excute_command_get_ubifs_status},
-    {'b',		excute_command_set_ubifs_status}
+    {'b',		excute_command_set_ubifs_status},
+    {'t',		excute_command_kernel_get},
+    {'q',		excute_command_kernel_set}
 };
 
 
@@ -96,7 +105,9 @@
 		"  -g,	--get                   get flags data \n"
 		"  -s,	--set                   set flags data \n"
 		"  -u,	--get-ubifs-status      get ubifs status \n"
-		"  -b,	--set-ubifs-status      set ubifs status \n");
+		"  -b,	--set-ubifs-status      set ubifs status \n"
+		"  -t,	--kernel-get            kernel-get flags data \n"
+		"  -q,	--kernel-set            kernel-set flags data \n");
 
 	return;
 }
@@ -254,6 +265,102 @@
 }
 
 
+static int excute_command_kernel_get(char *option_para)
+{
+	int fd = -1;
+	T_FLAGS_INFO flags_info = {0};
+
+	fd = open("/dev/chardevnode0", O_RDWR);
+	if (-1 == open)
+	{
+		printf("kernel get open chardevnode fail, errno=%d \n", errno);
+		return -1;
+	}
+
+	if (ioctl(fd, FLAGS_UTILS_GET, &flags_info) < 0)
+	{
+		printf("Err: ioctl cmd(0x%x) fail, errno=%d \n", FLAGS_UTILS_GET, errno);
+		
+		close(fd);
+		return -1;
+	}
+
+	printf("magic_start                     = 0x%x \n",	flags_info.magic_start);
+	
+	printf("boot_fota_flag.boot_to          = 0x%x \n",	flags_info.boot_fota_flag.boot_to);
+	printf("boot_fota_flag.fota_status      = %u \n",	flags_info.boot_fota_flag.fota_status);
+	printf("boot_fota_flag.system.status    = 0x%x \n",	flags_info.boot_fota_flag.system.status);
+	printf("boot_fota_flag.system.try_cnt	= %d \n",	flags_info.boot_fota_flag.system.try_cnt);
+	printf("boot_fota_flag.system2.status	= 0x%x \n",	flags_info.boot_fota_flag.system2.status);
+	printf("boot_fota_flag.system2.try_cnt	= %d \n",	flags_info.boot_fota_flag.system2.try_cnt);
+	
+	printf("boot_env.dualsys_type           = 0x%x \n",	flags_info.boot_env.dualsys_type);
+	printf("boot_env.system_boot_env        = %s \n",	flags_info.boot_env.system_boot_env);
+	printf("boot_env.system2_boot_env       = %s \n",	flags_info.boot_env.system2_boot_env);
+	
+	printf("ubifs_status.fs_status          = %d \n",	flags_info.ubifs_status.fs_status);
+	printf("ubifs_status.fs_mtd_name        = %s \n",	flags_info.ubifs_status.fs_mtd_name);
+	printf("ubifs_status.fs_ubi_vol_name    = %s \n",	flags_info.ubifs_status.fs_ubi_vol_name);
+	
+	printf("magic_end                       = 0x%x \n",	flags_info.magic_end);
+	
+	close(fd);
+    return 0;
+}
+
+
+static int excute_command_kernel_set(char *option_para)
+{
+	int fd = -1;
+	T_FLAGS_INFO flags_info = {0};
+	
+    char system_boot_env[128] = "bootEnv1";
+    char system2_boot_env[128] = "2bootEnv";
+
+	char fs_mtd_name[16] = "nameMTD";
+	char fs_ubi_vol_name[16] = "nameVOL";
+	
+	fd = open("/dev/chardevnode0", O_RDWR);
+	if (-1 == open)
+	{
+		printf("kernel set open chardevnode fail, errno=%d \n", errno);
+		return -1;
+	}
+	
+    flags_info.magic_start = FLAGS_MAGIC;
+	
+    flags_info.boot_fota_flag.boot_to = DUAL_SYSTEM;
+    flags_info.boot_fota_flag.fota_status = 0;
+    flags_info.boot_fota_flag.system.status = DUALSYSTEM_STATUS_BOOTABLE;
+    flags_info.boot_fota_flag.system.try_cnt = 5;
+    flags_info.boot_fota_flag.system2.status = DUALSYSTEM_STATUS_BOOTABLE;
+    flags_info.boot_fota_flag.system2.try_cnt = 13;
+
+    flags_info.boot_env.dualsys_type = DUALSYSTEM_AB;
+	strncpy(flags_info.boot_env.system_boot_env, system_boot_env, sizeof(flags_info.boot_env.system_boot_env));
+	strncpy(flags_info.boot_env.system2_boot_env, system2_boot_env, sizeof(flags_info.boot_env.system2_boot_env));
+
+	flags_info.ubifs_status.fs_status = 0;
+	strncpy(flags_info.ubifs_status.fs_mtd_name, fs_mtd_name, sizeof(flags_info.ubifs_status.fs_mtd_name));
+	strncpy(flags_info.ubifs_status.fs_ubi_vol_name, fs_ubi_vol_name, sizeof(flags_info.ubifs_status.fs_ubi_vol_name));
+	
+    flags_info.magic_end = FLAGS_MAGIC;
+
+	if (ioctl(fd, FLAGS_UTILS_SET, &flags_info) < 0)
+	{
+		printf("Err: ioctl cmd(0x%x) fail, errno=%d \n", FLAGS_UTILS_SET, errno);
+		
+		close(fd);
+		return -1;
+	}
+
+	printf("Log: kernel set flags success \n");
+	
+	close(fd);
+	return 0;
+}
+
+
 /*******************************************************************************
  *                       Global function declarations                          *
  ******************************************************************************/
