龙芯2h芯片不能进入pmon_国产处理器龙芯地址空间详解
MIPS基本邏輯地址空間
MIPS64架構(gòu)下包含一個(gè)64位地址空間和一個(gè)32位地址空間,32位地址空間是64位地址空間的子集。32位地址空間被分成四段,即常說的kuseg,kseg0~2如下圖。其64位地址空間可被分割成更多的段。
kuseg:0x0000 0000-0x7FFF FFFF(低端2G) :用戶太可用地址,必須通過MMU進(jìn)行地址映射后才能正常訪問。
kseg0:0x8000 0000 - 0x9FFF FFFF(512M):最高位清零就是對(duì)應(yīng)的物理地址,映射到連續(xù)的低端512M物理地址。該地址空間通過高速緩存存取,主要用來存放操作系統(tǒng)核心。
kseg1:0xA000 0000 - 0xBFFF FFFF(512M):高3位清零就是對(duì)應(yīng)的物理地址,映射到連續(xù)的低端512M物理地址。該地址空間不通過高速緩存存取,該區(qū)域主要用做I/O寄存器,系統(tǒng)ROM和啟動(dòng)時(shí)入口向量(0xBFC00000)就存于這個(gè)地址段內(nèi),因?yàn)橄到y(tǒng)啟動(dòng)時(shí)cache還未進(jìn)行初始化。
kseg1:0xC000 0000 - 0xFFFF FFFF (1G):該地址段只能在核心態(tài)使用,并且需要經(jīng)過MMU轉(zhuǎn)換。
龍芯物理地址空間規(guī)范
龍芯物理地址空間設(shè)計(jì)的規(guī)則約定如下:
- 0x0000_0000~0x0FFF_FFFF 的低 256MB 空間為低端內(nèi)存空間。 其中0x000 0000~0x001F FFFF為兼容老版本固件保留的2M地址空間;0x0F00_0000~0x0FFF_FFFF 是為固件PMON保留的 16M 地址空間,用于與內(nèi)核的信息交互,如固件傳參、關(guān)機(jī)和重啟功能、Smbios、 Vbios 等。
- 0x1000_0000~0x1FFF_FFFF 為 PCI 等 IO 設(shè)備空間及部分芯片配置寄存器空間;
- 0x3000_0000~0x3FFF_FFFF 為窗口配置寄存器的空間范圍;
- 0x4000_0000~0x7FFF_FFFF 為 PCI 設(shè)備 memory 空間范圍;
- 0x2000_0000~0x2FFF_FFFF 和 0x8000_0000~高端內(nèi)存基址-0x0000_0001 為保留空洞;
- 高端內(nèi)存基址缺省值為 0x9000_0000。
System RAM地址范圍如下圖:
龍芯DMA 地址映射規(guī)范
編寫驅(qū)動(dòng)時(shí)涉及設(shè)置DMA地址,龍芯不同芯片的DMA地址設(shè)置不同,需要特別注意,否則驅(qū)動(dòng)可能無法正常運(yùn)行。其相關(guān)DMA地址設(shè)置方法如下:
- 7A 作為橋片時(shí) DMA 地址與內(nèi)存物理地址的對(duì)應(yīng)關(guān)系為 1:1 映射:即 dmaaddr = phyaddr
- 2H 作為橋片時(shí) DMA 地址與內(nèi)存物理地址的對(duì)應(yīng)關(guān)系分為兩種情況: 內(nèi)存地址為低 256M 時(shí)與 DMA 地址關(guān)系為 1:1 映射; 內(nèi)存地址大于 256M 時(shí)與 DMA 的映射關(guān)系為 dmaaddr = phyaddr - 0x80000000。
- 780e 作為橋片時(shí) DMA 地址與內(nèi)存物理地址的對(duì)應(yīng)關(guān)系分為兩種情況: 內(nèi)存地址在低 256M 映射關(guān)系為 dmaaddr=phyaddr | 0x80000000; 內(nèi)存地址大于 256M 的部分為 1:1 映射。
總結(jié)
以上是生活随笔為你收集整理的龙芯2h芯片不能进入pmon_国产处理器龙芯地址空间详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery找祖先包含_jquery如何
- 下一篇: iis php win安装kangle_