AnsweredAssumed Answered

Use of OEMDeviceTable in EC7 to configure uncached memory region

Question asked by Bruno De Paoli on Jul 3, 2013
Latest reply on Jun 13, 2014 by Bruno De Paoli
Branched to a new discussion


I'm attempting to configure an area of memory that is uncached to address an issue I am having using the MS NOR strataflash driver. This is an Embedded Compact 7-based platform using an ARM processor. I've posted a related entry on this issue where I used a different approach to this problem. There I am using the MmMapIoSpace API to map this uncached region but am getting an alignment problem when using the NOR driver.


A different approach is to use the OEMDeviceTable to hard configure an uncached region for the NOR device. I've followed the instructions in the MSDN documentation. It looks straightforward but the system hangs somewhere in OS startup with no indication of what is wrong. The bootloader jumps to the image and then simply hangs.  Here's the relevant piece of the file


;       uncached address, physical address, size, attributes
    DCD 0x9D000000, CSP_BASE_MEM_PA_CS0/256, 1, 0      ; NOR Flash (uncached)
    DCD 0x00000000, 0x00000000, 0 , 0                   ; Terminate table


;       cached address, physical address, size




    DCD CE_NEW_MAPPING_TABLE, g_oalDeviceTable, 0
    DCD 0x80000000, CSP_BASE_MEM_PA_CSD0, STATIC_MAPPING_RAM_SIZE           ; RAM image mapping
    DCD 0x9F100000, CSP_BASE_REG_PA_IPU_CM_1MB, 1       ; IPUv3 regs, CM,IDMAC,DP,DI0,DI1,DC,DMFC
    DCD 0x9F200000, CSP_BASE_REG_PA_IPU_CPMEM_1MB, 1    ; IPUv3 regs, CPMEM,SRM, DC template
    DCD 0x9F300000, CSP_BASE_REG_PA_SATA, 1             ; SATA regs
    DCD 0x9F400000, CSP_BASE_REG_PA_SATA_P0, 1          ; SATA P0 regs
    DCD 0x9F500000, CSP_BASE_MEM_PA_NFC_1MB, 5          ; NFC internal buffer
    DCD 0x9FA00000, CSP_BASE_MEM_PA_IRAM_1MB, 1         ; Internal RAM
    DCD 0x9FB00000, CSP_BASE_REG_PA_TZIC_1MB, 1         ; TZIC regs
    DCD 0x9FC00000, CSP_BASE_MEM_PA_ROM, 1              ; Internal ROM
    DCD 0x9FD00000, CSP_BASE_MEM_PA_AIPS1, 1            ; AIPS1 SPBA peripheral regs
    DCD 0x9FE00000, CSP_BASE_REG_PA_AIPS1, 1            ; AIPS1 peripheral regs
    DCD 0x9FF00000, CSP_BASE_REG_PA_AIPS2, 1            ; AIPS2 peripheral regs
    DCD 0x00000000, 0x00000000, 0                       ; Terminate table





Is there anything obviously wrong here? Has anyone successfully used the OEMDeviceTable and are there any known issues? There seems little information about it on the forums.


Perhaps there is a different approach to address the problem?