none
WinCE 7 OEMRamTable problems RRS feed

  • Question

  • Hi all,

    we are trying to use the new OEMRAMTable support with Windows Embedded Compact 7 on two none continuous memory blocks but it doesn’t work. Our platform is a ARM CPU. We have two banks and only one bank is detected correctly by the OS. It causes many Data Aborts when we intent to map the second bank to the system.

    Has anybody done that with ARM?

    Any additional input because the help doesn’t give a lot of information.

    Best regards,

    Mike

    Wednesday, August 31, 2011 2:41 PM

Answers

  • Hi all,

    found some configuration example in a BSP and doing some modifications to our system makes it working now.

    Best regards,

    Mike

    • Marked as answer by MikeEngel Thursday, September 1, 2011 7:45 AM
    Thursday, September 1, 2011 7:45 AM

All replies

  • Hi all,

    found some configuration example in a BSP and doing some modifications to our system makes it working now.

    Best regards,

    Mike

    • Marked as answer by MikeEngel Thursday, September 1, 2011 7:45 AM
    Thursday, September 1, 2011 7:45 AM
  • Dear Mike,

    I also have some questions about dram size.

    How many dram size do u use ?

    Can Wince 7 support ram size less than 256MB or 128MB ?

     

    In my case, I use 2 256MB DDR3/Freescale i.mx53, thus I defined the "IMGRAM512" in BSP.

    When Wince 7  bootup, the memory cost is about 200MB !!!! It is very huge compares to Wince 6.

    I can only see Storage Memory+Program Memory = 442M.

    But the STATIC_MAPPING_RAM_SIZE=464MB.

    Do u know why ??

     

    Thursday, September 1, 2011 10:06 AM
  • If you see 442MB that you are able to use the 512MB on your system. It could be that through registry the GPU and VPU might allocate some MB for their frame buffers.

    Best regards,

    Mike

    Thursday, September 1, 2011 10:49 AM
  • Hello Mike:

    I was looking for a good example of using OEMRamTable.

    In what BSP did you find a good example?

     

    DV


    Dave
    Saturday, October 1, 2011 4:07 PM
  • Hi Dave,

    I used the configuration on the i.MX53 Freescale BSP.

    //-----------------------------------------------------------------------------
    // Global Variables
    RAMTableEntry g_RamTableEntry[2] =
    {
        //system has 2G physical memory starting from CSP_BASE_MEM_PA_CSD0
        //config.bib/memory.cfg.xml configs the first part 464M memory
        //and here, we config the last 2G - 464M memory
       
        //physical memory start address >> 8, memory size, attribute must be 0
        {(CSP_BASE_MEM_PA_CSD0 + STATIC_MAPPING_RAM_SIZE * 1024 * 1024) >> 8, (1024 - STATIC_MAPPING_RAM_SIZE) * 1024 * 1024, 0},   
        {(CSP_BASE_MEM_PA_CSD1) >> 8, 0, 0}    
    };

    RamTable g_RAMTable = {MAKELONG(CE_MINOR_VER, CE_MAJOR_VER), sizeof(g_RamTableEntry) / sizeof(g_RamTableEntry[0]), g_RamTableEntry};


    //-----------------------------------------------------------------------------
    //
    // Function: OEMGetRamTable
    //      This function is implemented by the OEM to return the OEMRamTable structure,
    //      which allows your platform to support more than 512 MB of physical memory.
    // Parameters:
    //
    // Returns:
    //      Returns an OEMRamTable structure, as defined in %_WINCEROOT%\Public\Common\Oak\Inc\OEMGlobal.h.
    //
    //
    //-----------------------------------------------------------------------------
    PCRamTable OEMGetRamTable(void)
    {
    #ifdef IMGRAM512
        g_RamTableEntry[0].RamSize = (512 - STATIC_MAPPING_RAM_SIZE) * 1024 * 1024;
    #else
        // Check if EVK board
        if(BSP_CPU_BID(g_dwBoardID) == BSP_MX53_ARM2_R1_CPU_BID)
        {
            // Currently we only support 1G DDR2 on EVK board
            g_RamTableEntry[1].RamSize = 1024 * 1024 * 1024;
        }
        else if((BSP_CPU_BID(g_dwBoardID) == BSP_MX53_SMD_R2_CPU_BID)
              ||(BSP_CPU_BID(g_dwBoardID) == BSP_MX53_LCB_R2_CPU_BID)
              ||(BSP_CPU_BID(g_dwBoardID) == BSP_MX53_SMD_R3_CPU_BID))
        {
            g_RamTableEntry[0].RamSize = (512 - STATIC_MAPPING_RAM_SIZE) * 1024 * 1024;    
            g_RamTableEntry[1].RamSize = 512  * 1024 * 1024;       
        }
    #endif

        return &g_RAMTable;
    }

    i hope that can help you.

    Best regards,

    Mike

    Monday, October 3, 2011 7:49 AM