全志平台通讀寫暫存器的方法

2021-09-11 10:53:53 字數 2373 閱讀 3631

全志平台通讀寫暫存器的方法

echo 暫存器值 > /sys/class/sunxi_dump/dump

cat dump 檢視寫進去的值

echo 暫存器值 > /sys/class/sunxi_dumo/write

cat write 檢視寫進去的值

示例:1.

到全志一號通查閱對應晶元的user_manual,看想查的暫存器的位置是多少

如,將ph8配作spi0的mosi

2.io口的基位址0x01c2 0800 

ph configure register 1的偏移 offset:0x100

所以這一組是的位址是0x01c2 0900

3.查到ph8_select bit 2:0(0到2位):

ph8_select

000: input

001: output

010: spi0_mosi

011: uart3_rts

100: reserved

101: reserved

110: reserved

111: io disable

所以如果ph8配成spi 的mosi的話,應該是

0x00000022

32位暫存器:

0000 0000 0000 0000 0000 0000 0000 0010

後面3位010則代表是配成spi0_mosi

4.驗證:

root@mico:/sys/class/sunxi_dump# echo 0x01c20900 > dump                         

root@mico:/sys/class/sunxi_dump# cat dump                                       

0x00000022

確認無誤

5.再查spi0對應的暫存器的數值:

r16 spi0 - 0x01c6 8000 --- 0x01c6 8fff  (size 4k)

root@mico:/sys/class/sunxi_dump# echo 0x01c68000 > dump                         

root@mico:/sys/class/sunxi_dump# cat dump                                       

0x00090000

即:0000 0000 0000 1001 0000 0000 0000 0000

讀多個暫存器的資料:

root@mico:/sys/class/sunxi_dump# echo 0x01c68000,0x01c68300 > dump              

root@mico:/sys/class/sunxi_dump# cat dump                                       

0x01c68000: 0x00090000 0x00000083 0x000001c4 0x00000000                         

0x01c68010: 0x00000000 0x00000032 0x00400001 0x00000000                         

0x01c68020: 0x00000000 0x00001001 0x00000000 0x00000000                         

0x01c68030: 0x00000000 0x00000000 0x00000000 0x00000000                         

.....                         

0x01c682f0: 0x00000000 0x00000000 0x00000000 0x00000000                         

0x01c68300: 0x00000000

比如,查offset 0x08

root@mico:/sys/class/sunxi_dump# echo 0x01c68008 > dump                         

root@mico:/sys/class/sunxi_dump# cat dump                                       

0x000001c4

0x000001c4 = 0000 0000 0000 0000 0000 0001 1100 0100

從右邊數第31個bit位是0,0: idle-0代表idle,可以從使用者手冊里查到每個暫存器每個數值的含義。

Linux在應用層讀寫暫存器的方法

dev mem 物理記憶體的全映象。可以用來訪問物理記憶體。由於應用執行都在使用者空間,使用的是虛擬記憶體,不能直接訪問實體地址空間,通過 dev mem檔案可以用來訪問系統的全部定址空間。dev kmem kernel看到的虛擬記憶體的全映象。可以用來訪問kernel的內容。在開啟mmu之前,你可...

Linux在應用層讀寫暫存器的方法

在某些情況下,需要移植的 是直接訪問暫存器的,當移植到linux時,可利用mmap建立乙個適配層,減少開發工作量。通過操作 dev mem裝置檔案,以及mmap函式,將暫存器的位址對映到使用者空間,直接在應用層對暫存器進行操作。mmap的使用示例 define reg area len 1024 s...

筆記三 嵌入式板子讀寫暫存器的方法

注 下面描述以s5pv210 a8 板子為例。功能 點亮乙個led燈 gph0 3 分為控制暫存器和資料暫存器 分別佔4個位元組。如led燈 板子原理圖 底板原理圖 到核心板原理圖 找到對應器件i o口 查詢晶元資料i o口對應的暫存器位置。方法一 首先在boot終端 用mw命令直接操作暫存器。mw...