arm64的ioremap ARM IO埠 記憶體

2021-10-13 11:30:14 字數 476 閱讀 5136

linux在arm中並沒有io埠概念,暫存器和記憶體位於記憶體空間的時候稱作io記憶體。

這裡簡單說一下操作步驟:

1、申請

2、對映

3、訪問

4、釋放

具體操作操作步驟如下:

1、申請——request_mem_region

申請後在系統相當於對已有資源做了個標記,即本資源已經申請占用,若相同資源再申請時核心會報錯。

2、對映———ioremap

通過ioremap才能將物理暫存器位址對映成虛擬位址方能於核心中應用,這裡的好處是,可以通過基位址加偏移來訪問暫存器。

3、訪問

這裡有特定的讀寫操作函式如writel etc.

4、釋放

對映完後要釋放資源使用到的函式為iounmap+release_mem_region

說明:有時不通過申請而直接對映訪問,只不過,這樣有點不規範,但核心中的應用還是很多,而且容易相互影響。

arm64入棧出棧 棧 ARM64

棧 棧 是一種具有特殊的訪問方式的儲存空間 後進先出,last in out firt,lifo sp和fp暫存器 sp暫存器在任意時刻會儲存我們棧頂的位址.fp暫存器也稱為x29暫存器屬於通用暫存器,但是在某些時刻我們利用它儲存棧底的位址 注意 arm64開始,取消32位的 ldm,stm,pus...

ARM64除錯環境

自從上一次zctf做了一道arm64的逆向題目後,我決定記錄下利用qemu搭建arm64的環境的過程,以後肯定會遇到更多arm平台下的reverse和pwn。我要模擬的是64位的arm環境,所以需要使用的是qemu system aarch64。在kali下,使用apt get install qe...

arm64 頁表對映

armv8最多支援48根位址,4級頁表,這樣最多支援user space和kernnel space 分別是256tb 其中user space佔據低端位址 kernel可以支援48 42 39 根位址 config arm64 va bits 39 is not set config arm64 ...