memory mapping

本文探讨了Imagecfg.h中定义的displayFrameBuffer物理地址与config.bib中配置的display地址无法对应的问题,并给出了正确的映射方法。文章指出,0x3BF75000应位于特定内存bank内,并提供了基于此基址的虚拟地址计算公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 近日,有个疑问。发觉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运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值