嵌入式系統010 GPIO的初始化

2021-10-02 20:54:10 字數 1144 閱讀 6753

一、讓大家能夠接受或者理解:

對巨集定義exynos4_gpl2(0)的操作就是對4412晶元管教ac21暫存器的操作

上層程式設計師(包括驅動工程師)不用關心實體地址和虛擬位址具體是多少,只需要對一組巨集定義操作,就是對4412內部暫存器操作

一、在核心原始碼目錄下使用目錄 「ls drivers/gpio/* .o」,可以看到"gpio exynos4"被編譯進了核心

生成.o檔案代表最終被編譯進了核心

除了menuconfig配置檔案,還可以通過.o檔案來判定該檔案是否編譯進入核心

在"gpio-exynos4.c"檔案最小面一行

-core_initcall(exynos4_gpiolib_init);

core_initcall代表在linux初始化過程中會呼叫

初始化函式是在原始碼目錄下"include/linux/init.h"檔案中定義的,該標頭檔案中定義了一系列的初始化函式,在linux啟動的過程中會按等級

一、gpio的初始化

1.初始化函式呼叫了"exynos4_gpiolib_init"

2.通過軟體source insight查詢到exynos4_gpiolib_init函式的定義

3.在該函式中引用chip = exynos4_gpio_common_4bit結構體

4.查詢到結構體exynos4_gpio_common_4bit

5.可以看到結構體中有s5p_va_***x的基位址定義,ca一般用來代表虛擬位址

實體地址和虛擬位址的對映關係

1.虛擬位址和物理位址對映

虛擬位址一般很好查詢,一般在平台gpio的檔案中就可以找到巨集定義

2.在source insight中搜尋關鍵字"s5p_va_gpio2",看看那裡用到了這個巨集定義

一、初始化過程簡單描述

1.平台檔案分別定義好實體地址和虛擬位址

2.實體地址和虛擬位址之間對映

二、在初始化,引入程式設計師需要使用的gpio巨集定義,並將巨集定義裝入 chip結構體中

1.內部暫存器不是很快嘛?cpu為什麼不直接讀取?

內部暫存器是很快,但是相對於cpu還是非常慢。cpu處理資料是將記憶體中一大段一大段處理,如果單個的讀取內部暫存器的值,對cpu是極大的浪費。把內部暫存器也看成「特殊的實體地址」即可。

嵌入式系統下對GPIO的簡單操作

在嵌入式 裝置中對gpio的操作是最基本的操作。一般的做法是寫乙個單獨驅動程式,網上大多數的例子都是這樣的。其實linux下面有乙個通用的gpio操作介面,那就是我要介紹的 sys class gpio 方式。首先,看看系統中有沒有 sys class gpio 這個資料夾。如果沒有請在編譯核心的時...

嵌入式系統下對GPIO的簡單操作

在嵌入式 裝置中對gpio的操作是最基本的操作。一般的做法是寫乙個單獨驅動程式,網上大多數的例子都是這樣的。其實linux下面有乙個通用的gpio操作介面,那就是我要介紹的 sys class gpio 方式。首先,看看系統中有沒有 sys class gpio 這個資料夾。如果沒有請在編譯核心的時...

嵌入式系統初始化過程

系統初始化過程可以分為 3 個主要環節,按照自底向上 從硬體到軟體的次序依次為 片級初始化 板 級初始化和系統級初始化。1.片級初始化 完成嵌入式微處理器的初始化,包括設定嵌入式微處理器的核心暫存器和控制暫存器 嵌入式微處理器核心工作模式和嵌入式微處理器的區域性匯流排模式等。片級初始化把嵌入式微處理...