memory mapping

    技术2022-05-20  51

     近日,有个疑问。发觉Imagecfg.h里定义的display FrameBuffer物理地址与config.bib里reserve的display 地址mapping不上。

    即:

    Imagecfg.h:

            #define IMAGE_FRAMEBUFFER_UA_BASE      0xAFF75000 

            #define IMAGE_FRAMEBUFFER_DMA_BASE    0x3BF75000

     

    config.bib:

           RAM   8C000000   03F75000   RAM              DISPLAY  8FF75000   00080000   RESERVED

     

     oemaddrtab_cfg.inc:

         DCD  0x88000000, 0x30000000, 64   ; 64 MB DRAM BANK 6     DCD  0x8C000000, 0x38000000, 64   ; 64 MB DRAM BANK 7

         DCD     0x82000000, 0x08000000, 32

         DCD     0x84000000, 0x10000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 2     DCD     0x86000000, 0x18000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 3                   DCD     0x90800000, 0x48000000,  1      ; SDRAM control register DCD     0x90900000, 0x48800000,  1      ; EBI control register DCD     0x90A00000, 0x49000000,  1      ; USB Host control register DCD     0x90B00000, 0x49800000,  1      ; USB Device control register DCD     0x90C00000, 0x4A000000,  1      ; Interrupt control register DCD     0x90D00000, 0x4A800000,  1      ; HS-MMC1 control register DCD     0x90E00000, 0x4B000000,  1      ; DMA control register DCD     0x90F00000, 0x4B800000,  1      ; CF Card control register DCD     0x91000000, 0x4C000000,  1      ; SYSCON register DCD     0x91100000, 0x4C800000,  1      ; TFT-LCD control register; DCD     0x91200000, 0x4D000000,  1      ; STN-LCD control register DCD 0x91200000, 0x4AC00000,  1 ; HS-MMC2 control register ;fax080312  DCD     0x91300000, 0x4D800000,  1      ; Camera control register DCD     0x91400000, 0x4E000000,  1      ; NAND flash control register DCD     0x91500000, 0x4E800000,  1      ; Matrix control register DCD     0x91600000, 0x4F000000,  1      ; SSMC control register DCD     0x91700000, 0x4F800000,  1      ; TIC control register DCD     0x91800000, 0x50000000,  1      ; UART control register DCD     0x91C00000, 0x51000000,  1      ; PWM control register DCD     0x91D00000, 0x52000000,  1      ; HS-SPI and SPI0 control register DCD     0x91E00000, 0x53000000,  1      ; WDT control register DCD     0x91F00000, 0x54000000,  1      ; IIC control register DCD     0x92000000, 0x55000000,  1      ; IIS control register DCD     0x92100000, 0x56000000,  1      ; I/O Port register DCD     0x92200000, 0x57000000,  1      ; RTC Port register DCD     0x92300000, 0x58000000,  1      ; TSADC Port register DCD     0x92400000, 0x59000000,  1      ; SPI Port register DCD     0x92500000, 0x5A000000,  1      ; SDI Port register DCD     0x92600000, 0x5B000000,  1      ; AC97 Port register DCD     0x92700000, 0x5C000000,  1      ; PCM Port register ;fax080312 DCD     0x92800000, 0x4D400000,  1      ; 2D Port register offset 0x8000 ;fax080312  IF BSP_INAND = "1" DCD     0x93000000, 0x40000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 0 ELSE DCD     0x93000000, 0x00000000, 32      ; 32 MB SROM(SRAM/ROM) BANK 0 ENDIF        DCD     0x00000000, 0x00000000,  0      ; end of table

     

    正确分析:

     0x3BF75000应该在“  DCD  0x8C000000, 0x38000000, 64   ; 64 MB DRAM BANK 7”里,故只能基于此基址mapping:

    Cached Virtual Address of Display= 0x8C000000 + (0x3BF75000 - 0x38000000) = 8FF75000;(同config.bib)

     

    注意:虚拟地址是连续的,但物理地址不连续;

             先估计在哪个bank,再基于此bank运算。


    最新回复(0)