Index: soft/giet_vm/xml/xml_driver.c
===================================================================
--- soft/giet_vm/xml/xml_driver.c	(revision 160)
+++ soft/giet_vm/xml/xml_driver.c	(revision 165)
@@ -111,6 +111,7 @@
     fprintf( fpout, "              psegs     = \"%d\"\n", header->psegs);
     fprintf( fpout, "              ttys      = \"%d\"\n", header->ttys);
+    fprintf( fpout, "              fbs       = \"%d\"\n", header->fbs);
     fprintf( fpout, "              vspaces   = \"%d\"\n", header->vspaces);
-    fprintf( fpout, "              globals   = \"%d\" />\n\n", header->globals);
+    fprintf( fpout, "              globals   = \"%d\" >\n\n", header->globals);
 
     ///////////////////// clusters ///////////////////////////////////////////////
@@ -119,7 +120,6 @@
     for ( cluster_id = 0 ; cluster_id < header->clusters ; cluster_id++ )
     {
-        fprintf( fpout, "        <cluster procs  = \"%d\"\n",      cluster[cluster_id].procs);
-        fprintf( fpout, "                 timers = \"%d\"\n",      cluster[cluster_id].timers);
-        fprintf( fpout, "                 dmas   = \"%d\" />\n\n", cluster[cluster_id].dmas);
+        fprintf( fpout, "        <cluster index  = \"%d\"\n",      cluster_id);
+        fprintf( fpout, "                 procs  = \"%d\" />\n\n", cluster[cluster_id].procs);
     }
     fprintf( fpout, "    </clusterset>\n" );
@@ -148,19 +148,17 @@
         fprintf( fpout, "                 mode     = \"%s\"\n", mode_str[vseg[vseg_id].mode]);
         fprintf( fpout, "                 psegname = \"%s\"\n",      pseg[pseg_id].name);
-        fprintf( fpout, "                 ident    = \"%d\" >\n", vseg[vseg_id].ident);
-            for ( vobj_id = vseg[vseg_id].vobj_offset ;
-                  vobj_id < (vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs) ; vobj_id++ )
-            {
-                fprintf( fpout, "                 <vobj name     = \"%s\"\n",     vobj[vobj_id].name);
-                fprintf( fpout, "                       type     = \"%s\" \n", vobj_type[vobj[vobj_id].type]);
-                if(vobj[vobj_id].length)
-                    fprintf( fpout, "                       length   = \"0x%x\" \n",   vobj[vobj_id].length);
-                if(vobj[vobj_id].align)
-                    fprintf( fpout, "                       align    = \"%d\" \n",   vobj[vobj_id].align);
-                if(vobj[vobj_id].binpath[0]!='\0')
-                    fprintf( fpout, "                       binpath  = \"%s\" \n",   vobj[vobj_id].binpath);
-                fprintf( fpout, "                       />\n");
-            }
-            fprintf( fpout, "        </vseg>\n\n");
+        fprintf( fpout, "                 ident    = \"%d\" >\n",    vseg[vseg_id].ident);
+        for ( vobj_id = vseg[vseg_id].vobj_offset;
+              vobj_id < (vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs); 
+              vobj_id++ )
+        {
+            fprintf( fpout, "                 <vobj name     = \"%s\"\n",    vobj[vobj_id].name);
+            fprintf( fpout, "                       type     = \"%s\"\n",    vobj_type[vobj[vobj_id].type]);
+            fprintf( fpout, "                       length   = \"0x%x\"\n",  vobj[vobj_id].length);
+            fprintf( fpout, "                       align    = \"%d\"\n",    vobj[vobj_id].align);
+            fprintf( fpout, "                       init     = \"%d\" \n",   vobj[vobj_id].init);
+            fprintf( fpout, "                       binpath  = \"%s\" />\n", vobj[vobj_id].binpath);
+        }
+        fprintf( fpout, "        </vseg>\n\n");
     }
     fprintf( fpout, "    </globalset>\n" );
@@ -171,8 +169,7 @@
     for ( vspace_id = 0 ; vspace_id < header->vspaces ; vspace_id++ )
     {
-        unsigned int func_id = vspace[vspace_id].vobj_offset + vspace[vspace_id].funcs_offset; 
-        fprintf( fpout, "        <vspace  name    = \"%s\"\n",     vspace[vspace_id].name); 
-        fprintf( fpout, "                 funcs   = \"%s\"\n",     vobj[func_id].name); 
-        fprintf( fpout, "                 ttys    = \"%d\" >\n\n", vspace[vspace_id].ttys);
+        unsigned int func_id = vspace[vspace_id].vobj_offset + vspace[vspace_id].start_offset; 
+        fprintf( fpout, "        <vspace  name      = \"%s\"\n",     vspace[vspace_id].name); 
+        fprintf( fpout, "                 startname = \"%s\" >\n\n", vobj[func_id].name); 
 
         for ( vseg_id = vspace[vspace_id].vseg_offset ;
@@ -185,23 +182,22 @@
             fprintf( fpout, "                       mode      = \"%s\"\n", mode_str[vseg[vseg_id].mode]);
             fprintf( fpout, "                       psegname  = \"%s\"\n",      pseg[pseg_id].name);
-            fprintf( fpout, "                       ident     = \"%d\" >\n", vseg[vseg_id].ident);
+            fprintf( fpout, "                       ident     = \"%d\" >\n",    vseg[vseg_id].ident);
 
             for ( vobj_id = vseg[vseg_id].vobj_offset ;
-                  vobj_id < (vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs) ; vobj_id++ )
+                  vobj_id < (vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs) ; 
+                  vobj_id++ )
             {
-                fprintf( fpout, "\t                 <vobj name     = \"%s\"\n",     vobj[vobj_id].name);
-                fprintf( fpout, "\t                       type     = \"%s\" \n", vobj_type[vobj[vobj_id].type]);
-                if(vobj[vobj_id].length)
-                    fprintf( fpout, "\t                       length   = \"0x%x\" \n",   vobj[vobj_id].length);
-                if(vobj[vobj_id].align)
-                    fprintf( fpout, "\t                       align    = \"%d\" \n",   vobj[vobj_id].align);
-                if(vobj[vobj_id].binpath[0]!='\0')
-                    fprintf( fpout, "\t                       binpath  = \"%s\" \n",   vobj[vobj_id].binpath);
-                fprintf( fpout, "\t                       />\n");
+                fprintf( fpout, "                       <vobj name     = \"%s\"\n",    vobj[vobj_id].name);
+                fprintf( fpout, "                             type     = \"%s\" \n",   vobj_type[vobj[vobj_id].type]);
+                fprintf( fpout, "                             length   = \"0x%x\" \n", vobj[vobj_id].length);
+                fprintf( fpout, "                             align    = \"%d\" \n",   vobj[vobj_id].align);
+                fprintf( fpout, "                             init     = \"%d\" \n",   vobj[vobj_id].init);
+                fprintf( fpout, "                             binpath  = \"%s\" />\n", vobj[vobj_id].binpath);
             }
-            fprintf( fpout, "\t\t        </vseg>\n\n");
+            fprintf( fpout, "                 </vseg>\n\n");
         }
         for ( task_id = vspace[vspace_id].task_offset ;
-              task_id < (vspace[vspace_id].task_offset + vspace[vspace_id].tasks) ; task_id++ )
+              task_id < (vspace[vspace_id].task_offset + vspace[vspace_id].tasks) ; 
+              task_id++ )
         {
             unsigned int vobj_id = task[task_id].vobjlocid + vspace[vspace_id].vobj_offset; 
@@ -212,7 +208,8 @@
             fprintf( fpout, "                       stackname = \"%s\"\n",      vobj[vobj_id].name);
             fprintf( fpout, "                       startid   = \"%d\"\n",      task[task_id].startid);
-            fprintf( fpout, "                       ttylocid  = \"%d\" />\n\n", task[task_id].ttylocid);
+            fprintf( fpout, "                       usetty    = \"%d\"\n",      task[task_id].use_tty);
+            fprintf( fpout, "                       usefb     = \"%d\" />\n\n", task[task_id].use_fb);
         }
-        fprintf( fpout, "        </vspace>\n");
+        fprintf( fpout, "        </vspace>\n\n");
     }
     fprintf( fpout, "    </vspaceset>\n" );
