裝置埠的訪問

2021-07-30 11:51:11 字數 1539 閱讀 9990

申請:

struct resource *request_mem_region(start,len,*name)
本函式申請乙個從start開始,長度為len位元組的記憶體區,成功返回 非null;否則返回null,所 有已經在使用的i/o內存在/proc/iomem中列出。

void *ioremap(phys_addr,size)

從i/o記憶體讀:

unsigned ioread8(void *addr)

unsigned ioread16(void *addr)

unsigned ioread32(void *addr)

從i/o記憶體寫:
unsigned iowrite8(void *addr)

unsigned iowrite16(void *addr)

unsigned iowrite32(void *addr)

釋放:
void iounmap(void *addr)
本函式接收ioremap函式申請的虛擬位址作為引數

void release_mem_region(start,len)
釋放申請的記憶體資源

int s3c_gpio_cfgpin(unsigned

int pin,unsigned

int to)

pin代表引腳,to代表乙個功能,例如下面程式:

s3c_gpio_cfgpin(s5pv210_gpj2(0)  ,  s3c_gpio_sfn(1) )
表示將gpj2_0配置成特殊功能0x01,此功能是output;

int s3c_gpio_setpull(pin , pull)
設定管腳為上拉或下拉狀態

int gpio_request(gpio, *lable)
申請乙個管腳gpio,並使用label去描述它,成功返回0,失敗返回-1;

void gpio_free(gpio)
釋放乙個已經申請的引腳gpio

int gpio_direction_output(gpio, value)
在管腳gpio中輸出乙個電平value

int gpio_direction_input(gpio)
在管腳gpio中讀取乙個電平0/1

裝置I O 埠和I O 記憶體的訪問

幾乎每一種外設都是通過讀寫裝置上的暫存器來進行的,通常包括控制暫存器 狀態暫存器和資料暫存器三大類,外設的暫存器通常被連續地編址。根據cpu體系結構的不同,cpu對io埠的編址方式有兩種 典型地,如x86處理器為外設專門實現了乙個單獨的位址空間,稱為 i o位址空間 或者 i o埠空間 cpu通過專...

c 獲取埠裝置全名

通過下面 可以獲取埠選項下面的裝置全名 using system.management namespace 2014 10 21 var search new managementobjectsearcher root cimv2 select from win32 serialport forea...

LDD裝置訪問控制

裝置訪問控制 1,獨佔方式訪問,一次只能有乙個程序訪問裝置,其他程序開啟裝置的時候,在open方法中均返回 ebusy,告訴使用者空間裝置忙 int open struct inode i node struct file filp 2,單個使用者多個程序訪問裝置 a,非阻塞open int ope...