Changeset 245


Ignore:
Timestamp:
Jun 17, 2013, 11:38:40 PM (11 years ago)
Author:
alain
Message:

Introducing a new global vseg : seg_boot_data, in order
to clearly separate the seg_boot_code (Read-Only) and
the seg_boot_data (Read/Write?). This is mandatory,
if the boot code is stored in a real ROM.

Location:
soft/giet_vm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/boot/boot.ld

    r203 r245  
    1717        *(.boot)
    1818        *(.text)
    19 
    2019        *(.rodata)
    2120        *(.rodata.*)
    22         *(.data)
    23         *(.lit8)
    24         *(.lit4)
    25         *(.sdata)
    26         *(.bss)
    27         *(COMMON)
    28         *(.sbss)
    29         *(.scommon)
     21    }
     22
     23    . = seg_boot_data_base;
     24    seg_boot_data :
     25    {
     26        *(.wdata)
    3027    }
    3128}
  • soft/giet_vm/boot/boot_init.c

    r240 r245  
    8989
    9090// Page table addresses arrays
     91__attribute__((section (".wdata")))
    9192paddr_t      boot_ptabs_paddr[GIET_NB_VSPACE_MAX];
     93
     94__attribute__((section (".wdata")))
    9295unsigned int boot_ptabs_vaddr[GIET_NB_VSPACE_MAX];
    9396
    9497// Scheduler pointers array (virtual addresses)
     98__attribute__((section (".wdata")))
    9599static_scheduler_t* boot_schedulers[NB_CLUSTERS * NB_PROCS_MAX];
    96100
    97101// Next free PT2 index array
     102__attribute__((section (".wdata")))
    98103unsigned int boot_next_free_pt2[GIET_NB_VSPACE_MAX] =
    99104{ [0 ... GIET_NB_VSPACE_MAX - 1] = 0 };
    100105
    101106// Max PT2 index
     107__attribute__((section (".wdata")))
    102108unsigned int boot_max_pt2[GIET_NB_VSPACE_MAX] =
    103109{ [0 ... GIET_NB_VSPACE_MAX - 1] = 0 };
  • soft/giet_vm/mappings/4c_1p_40.xml

    r238 r245  
    2323            <pseg name = "PSEG_TTY"  type = "PERI" base = "0x00B4000000" length = "0x0000001000" />
    2424            <pseg name = "PSEG_NIC"  type = "PERI" base = "0x00B5000000" length = "0x0000021000" />
     25            <pseg name = "PSEG_CMA"  type = "PERI" base = "0x00B6000000" length = "0x0000004000" />
     26            <pseg name = "PSEG_IOB"  type = "PERI" base = "0x00BE000000" length = "0x0000100000" />
    2527            <pseg name = "PSEG_ROM"  type = "ROM"  base = "0x00BFC00000" length = "0x0000100000" />
    2628
     
    4648            </proc>
    4749
    48             <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "1" />
     50            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "4" />
    4951            <periph type = "XICU" psegname = "PSEG_XICU" channels = "18" />
    5052            <periph type = "IOC"  psegname = "PSEG_IOC"  channels = "1" />
    5153            <periph type = "TTY"  psegname = "PSEG_TTY"  channels = "8" />
    52             <periph type = "NIC"  psegname = "PSEG_NIC"  channels = "8" />
     54            <periph type = "NIC"  psegname = "PSEG_NIC"  channels = "2" />
    5355            <periph type = "FBF"  psegname = "PSEG_FBF" />
    5456        </cluster>
     
    6466            </proc>
    6567
    66             <periph type = "DMA"  psegname = "PSEG_DMA" channels = "1" />
     68            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "4" />
    6769            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
    6870        </cluster>
     
    7880            </proc>
    7981
    80             <periph type = "DMA"  psegname = "PSEG_DMA" channels = "1" />
     82            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "4" />
    8183            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
    8284        </cluster>
     
    9294            </proc>
    9395
    94             <periph  type = "DMA" psegname = "PSEG_DMA"  channels = "1" />
     96            <periph  type = "DMA" psegname = "PSEG_DMA"  channels = "4" />
    9597            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
    9698        </cluster>
     
    106108            <vobj name = "boot_code"      type = "ELF" length = "0x00008000" binpath    = "build/boot/boot.elf" />
    107109        </vseg>
    108         <vseg name = "seg_boot_mapping"   vbase = "0xBFC08000" mode = "C_W_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" >
     110        <vseg name = "seg_boot_data"      vbase = "0x00000000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" ident = "1" >
     111            <vobj name = "boot_data"      type = "ELF" length = "0x00001000" binpath    = "build/boot/boot.elf" />
     112        </vseg>
     113        <vseg name = "seg_boot_stack"     vbase = "0x00001000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" ident = "1" >
     114            <vobj name = "boot_stack"     type = "BUFFER" length = "0x00003000" />
     115        </vseg>
     116        <vseg name = "seg_boot_mapping"   vbase = "0x00004000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" ident = "1" >
    109117            <vobj name = "boot_mapping"   type = "BLOB" length  = "0x00004000" binpath  = "map.bin" />
    110         </vseg>
    111         <vseg name = "seg_boot_stack"     vbase = "0x00000000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" ident = "1" >
    112             <vobj name = "boot_stack"     type = "BUFFER" length = "0x00004000" />
    113118        </vseg>
    114119
  • soft/giet_vm/xml/xml_parser.c

    r238 r245  
    22122212            count++;
    22132213        }
     2214        else if ( strcmp(vseg[vseg_id]->name, "seg_boot_data") == 0 )
     2215        {
     2216            ld_write(fdout, "seg_boot_data_base      ",  vseg[vseg_id]->vbase);
     2217            count++;
     2218        }
    22142219        else if ( strcmp(vseg[vseg_id]->name, "seg_boot_stack") == 0 )
    22152220        {
     
    22432248        }
    22442249    }
    2245     if ( count != 7 )
     2250    if ( count != 8 )
    22462251    {
    22472252        printf ("[XML ERROR] Missing Boot or Kernel vseg : only %d\n", count);
    22482253        printf ("Mandatory segments are :\n");
    22492254        printf (" - seg_boot_code\n");
     2255        printf (" - seg_boot_data\n");
    22502256        printf (" - seg_boot_stack\n");
    22512257        printf (" - seg_boot_mapping\n");
Note: See TracChangeset for help on using the changeset viewer.