make vector arrays (arrays declared via '<type> foo[length];') const clean
diff --git a/src/packages/xdc/services/intern/gen/Config.java b/src/packages/xdc/services/intern/gen/Config.java
index 03ca322..63685a5 100644
--- a/src/packages/xdc/services/intern/gen/Config.java
+++ b/src/packages/xdc/services/intern/gen/Config.java
@@ -3740,8 +3740,10 @@
                 return "{0, 0}";
             }
             else {
-                String cts = varr.getCtype();
-                return "{" + len + ", ((" + cts + "*)" + as + ")}";
+                //490928 - remove unnecessary cast for config vectors
+                //  String cts = varr.getCtype();
+                //  return "{" + len + ", ((const " + cts + "*)" + as + ")}";
+                return "{" + len + ", (" + as + ")}";
             }
         }
         else if (cast != null){
diff --git a/src/packages/xdc/services/intern/gen/Glob.java b/src/packages/xdc/services/intern/gen/Glob.java
index 3939424..99a0aed 100644
--- a/src/packages/xdc/services/intern/gen/Glob.java
+++ b/src/packages/xdc/services/intern/gen/Glob.java
@@ -180,16 +180,35 @@
     // genArrType
     void genArrType( Type type, String id )
     {
-        genArrType(type, id, true);
+        genArrType(type, id, true, "");
+    }
+
+    // genArrType
+    //490928 add new "const" array type
+    void genArrType( Type type, String id, String qual )
+    {
+        genArrType(type, id, true, qual);
     }
 
     // genArrType
     void genArrType( Type type, String id, boolean top )
     {
+        genArrType(type, id, top, "");
+    }
+
+    // genArrType
+    //490928 add new "const" array type
+    void genArrType( Type type, String id, boolean top, String qual )
+    {
+        //debug
+        //if (debug != 0 || !qual.equals("")) debug++;
+        //String stn = shortName(type.toString());
+        //indent();
+        //System.out.println("genArrType(" + stn + ", " + id + ", " + top + ")");
         if (!(type instanceof Type.Array)) {
             if (type.tcode().endsWith("O")) {
                 String tcn = mkCname(type.tspec().getRef().getScope());
-                out.printf("%1Instance_State %2", tcn, id);
+                this.out.printf("%1Instance_State %2", tcn, id);
             }
             else {
                 this.genType(type, Type$TYP, id);
@@ -210,10 +229,12 @@
         }
         else if (tarr.isVec()) {
             this.out.printf("struct { int length; ");
-            genArrType(tarr.getBase(), par ? "(*elem)" : "*elem", true);
+            //490928 vector elem arrays are always const
+            genArrType(tarr.getBase(), "const " + (par ? "(*elem)" : "*elem"), true);
             this.out.printf("; } %1", id);
         }
         else {
+            this.out.printf(qual);
             genArrType(tarr.getBase(), "", false);
             this.out.printf(par ? "(*%1)" : "*%1", id);
             if (top) {
@@ -1239,7 +1260,8 @@
     {
         if (t.isVec()) {
             this.out.print("struct { int length; ");
-            this.genType(t.getBase(), Type$TYP, "*elem");
+            //490928 vector arrays are always const
+            this.genType(t.getBase(), Type$TYP, " const *elem");
             this.out.print("; } ");
             Type.Declarator td = (Type.Declarator)t.term();
             this.out.print(this.cname + td.getId());
diff --git a/src/packages/xdc/services/intern/gen/Header.java b/src/packages/xdc/services/intern/gen/Header.java
index 4435a35..3cebd87 100644
--- a/src/packages/xdc/services/intern/gen/Header.java
+++ b/src/packages/xdc/services/intern/gen/Header.java
@@ -296,11 +296,23 @@
         glob.out.printf(";\n");
 
         if (tarr != null && tarr.isVec() && tarr.getBase() instanceof Type.Array) {
-            glob.out.printf("%ttypedef struct { int length; __T%1_%2* elem; } __ARRAY%1_%2;\n", iobj, cn);
+            //490928 vector object's elem is always const
+            glob.out.printf("%ttypedef struct { int length; __T%1_%2 const* elem; } __ARRAY%1_%2;\n", iobj, cn);
+            glob.out.printf("%ttypedef struct { int length; __T%1_%2 const* elem; } __CARRAY%1_%2;\n", iobj, cn);
         }
         else {
+            //490928 vector arrays are always const
+            String qual = "";
+            if (tarr != null && tarr.isVec()) {
+                qual = "const ";
+            }
             glob.out.printf("%ttypedef ");
-            glob.genArrType(type, "__ARRAY" + iobj + "_" + cn);
+            glob.genArrType(type, "__ARRAY" + iobj + "_" + cn, qual);
+            glob.out.printf(";\n");
+
+            //490928 add new "const" array type (for big.c const arrays)
+            glob.out.printf("%ttypedef ");
+            glob.genArrType(type, "__CARRAY" + iobj + "_" + cn, "const ");
             glob.out.printf(";\n");
         }
     }
@@ -1057,7 +1069,10 @@
 
                 glob.out.printf("%ttypedef ");
                 if (glob.isArr(cfg.getTypeCode())) {
-                    glob.out.printf("__TA_%1 %2", cfgn, cfgt);
+                    //490928 - change config arrays to __CARRAY<dim>
+                    int dims = glob.dims(cfg.getTypeCode());
+                    glob.out.printf("__CARRAY%3_%1 %2", cfgn, cfgt,
+                                    new Integer(dims));
                 }
                 else {
                     glob.genType(cfg.getType(), Glob.Type$TYP, cfgt);