ARM11訪問晶元內部的暫存器空間

2021-09-30 04:46:38 字數 493 閱讀 3117

arm1136jzf-s把memory和peripheral介面分開了,你需要在初始化時告訴cpu,哪些位址範圍是屬於peripheral的,否則它就當memory訪問,當然就訪問不到屬於peripheral 區間的io口暫存器。可以通過arm11的協處理器cp15來告訴cpu外設暫存器的位址,在arm11晶元架構手冊上可以看到怎樣實現該操作:

crn op1 crm op2

c15    0    c2     0 data memory remap r/w 0x01c97cc8 page 3-162

1 instruction memory remap r/w 0x01c97cc8 page 3-162

2 dma memory remap r/w 0x01c97cc8 page 3-162

4 peripheral port memory remap r/w 0x00000000 page 3-162

下面的**就是在初始化是告訴cpu外設暫存器的基位址和位址空間

Linux 下訪問PHY晶元暫存器

mdio eth0 1 讀取phy暫存器1的數值 mdio eth0 0 0x1120 將0x1120寫入 phy暫存器1 eth0 為mac層控制器的名稱,一般為eth0 或mgmt0。include include include include include include include ...

1 1 PCI PCIE 配置暫存器訪問

pci的配置暫存器空間為256個位元組大小。pcie擴充套件了配置暫存器空間,大小為4096的位元組。pcie配置暫存器的整體分布如下圖所示 從上圖可見,整個pcie配置空間被分成了3部分,其中0 ff為pci相容的配置空間,100 fff為pcie擴充套件的空間。每部分的作用大概如下 40 ff區...

讀取暫存器值 ARM訪問實現自定義系統暫存器

armv8中,取消了協處理器,之前協處理器實現的功能,全部由系統暫存器來是實現。對於系統暫存器的訪問,使用mrs,msr指令來訪問。指令編碼如下 l 1,mrs,讀取系統暫存器值到通用暫存器中 l 0,msr,將通用暫存器值寫入到系統暫存器中 而系統暫存器的編碼,由op1,crn,crm,op2來決...