視頻下載地址:http://pan.baidu.com/s/1c06oiti
GPIO的初始化
? 在內核源碼目錄下使用命令“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啟動的過程中會按等級
結構體exynos4_gpio_common_4bit
? 以有帶有label= "GPL2"的結構體為例
? .base = (S5P_VA_GPIO2 + 0x100)
– 表示偏移地址和虛擬地址相加
? .eint_offset = 0x20
– 表示中斷部分,介紹中斷的時候再講(IO口可以配置為中斷模式)
? .group = 22
– 給GPIO分組
? chip.base = EXYNOS4_GPL2(0),
– 宏定義EXYNOS4_GPL2(0)賦值給初始化函數
? chip.ngpio = EXYNOS4_GPIO_L2_NR
– 表示這一小組中有幾個GPIO
? chip.label = "GPL2",
– 程序員需要關心的標志
? 宏定義EXYNOS4_GPL2(0)分析
– EXYNOS4_GPL2(_nr) (EXYNOS4_GPIO_L2_START + (_nr))
– 枚舉GPIO
– EXYNOS4_GPIO_L2_START= EXYNOS4_GPIO_NEXT(EXYNOS4_GPIO_L1)
– EXYNOS4_GPIO_NEXT宏定義
– #define EXYNOS4_GPIO_NEXT(__gpio) ((__gpio##_START) + (__gpio##_NR)
+ CONFIG_S3C_GPIO_SPACE + 1)
? GPIO的數量EXYNOS4_GPIO_L2_NR
– 可以通過手冊查到
? S5P_VA_GPIO2
– 虛擬地址
? 查找S5P_VA_GPIO2宏定義,可以看到所有的GPIO被分為4個bank,這
個和datasheet上面是一致的。
– S5P_VA_GPIO1
– S5P_VA_GPIO2 S3C_ADDR(0x02240000)
– S5P_VA_GPIO3
– S5P_VA_GPIO4
? 查找到S3C_ADDR宏定義
– #define S3C_ADDR(x) (S3C_ADDR_BASE + (x))
? 查找到S3C_ADDR_BASE宏定義,這是一個虛擬地址,可以看出,地址
范圍超出了1G或者2G內存的范圍
– #define S3C_ADDR_BASE 0xF6000000
物理地址和虛擬地址的映射關系
? 虛擬地址和物理地址映射
– 虛擬地址一般很好查找,一般在平臺相關gpio的文件中就可以找到宏定義
? 在source insight中搜索關鍵字“S5P_VA_GPIO2”,看看那里用到了這個
宏定義。搜索時間會比較長,1-5分鐘吧。
? 搜索出來之后,可以看到除了gpio-exynos4.c文件中使用,cpu-exynos
中也使用了,這是一個平臺文件
? 映射數組如下圖所示
? 結構體解釋
– .virtual = (unsigned long)S5P_VA_GPIO2,表示虛擬地址
– .pfn = __phys_to_pfn(EXYNOS4_PA_GPIO2),表示物理地址
– .length = SZ_4K,表示映射的寬度
– .type = MT_DEVICE,
? 查找到宏定義EXYNOS4_PA_GPIO2
– #define EXYNOS4_PA_GPIO2 0x11000000
– 這個物理地址0x11000000就是
GPIO的初始化流程
? 初始化過程簡單描述
– 平臺文件分別定義好物理地址和虛擬地址
– 物理地址和虛擬地址之間映射
? 在初始化中,引入了程序員需要使用的GPIO宏定義,并將宏定義裝入
chip結構體中
GPIO的調用函數
? 例如頭文件gpio-cfg.h中s3c_gpio_cfgpin函數。這個函數是給GPIO做配
置,第一個參數是宏EXYNOS4_GPL2(0),第二個是配置的狀態參數
– 配置頭文件在arm/arm/plat-samsung/include/plat/gpio-cfg.h
? 查找該函數,可以看到進入函數就會調用chip結構體
– s3c_gpiolib_getchip,這個函數通過pin調用之后,會返回s3c_gpios[chip] 的
參數
– exynos4_gpio_common_4bit[]和s3c_gpios都是結構體s3c_gpio_chip類型的
數據
– 然后計算偏移地址等等一系列操作,這一部分是linux內核以及三星平臺完
成的,具體細節不用管。
? 也就是我們控制GPIO的時候,可以通過GPIO的一些處理函數加上類似
EXYNOS4_GPL2(0)的宏定義,就可以操作GPIO
? 后面再具體介紹GPIO操作中,常用函數的使用
常見問題
? 不是說好的分頁大小要一樣,怎么GPIO經過mmu處理的時候,又有
SZ_256又有SZ_4K?
– 實際上CPU查找地址的時候,仍舊是通過內存。mmu本身不保存具體的數
據,主要是提供一個虛擬地址和物理地址的表格,表格中還有字段的長
度。這個分頁和mmu沒什么關系,是CPU內存以及物理地址之間通信使用
的概念。這個只是一個抽象的概念,理解mmu只是一個表格,CPU對GPIO
的操作就很好理解了。
? 內部寄存器不是很快么,CPU為什么不直接讀取?
– 內部寄存器是很快,但是相對于CPU還是非常慢。CPU處理數據是將內存
中一大段一大段處理,如果單個的讀取內部寄存器的值,對CPU是極大的
浪費。把內部寄存器也看成“特殊的物理地址”即可。
? 只講了虛擬地址和物理地址對應數組,怎么沒介紹哪里調用了?
– 大家可以看一下函數ioremap,linux會調用這個函數來實現gpio的映射關
系
– 今天講的已經夠多夠深入了,大家只要能夠理解這么一層意思就可以了
,這個東西對我們實際寫驅動的幫助其實不是那么大!
? 如果我還是理解不了“對宏定義EXYNOS4_GPL2(0)的操作就是對4412芯
片管腳AC21寄存器的操作”,怎么辦?
– 記住這個結論,能夠將宏變量EXYNOS4_GPL2(0)和GPL這一組GPIO的第0位
寄存器聯想起來。
– 后面跟著我依葫蘆畫瓢,不影響大家實際寫程序,有興趣再回過頭理解
上一篇:第一頁
下一篇:購買開發板后在iTOP4412開發板上移植SDIO接口WIFI方法
推薦閱讀
史海拾趣
義隆電子非常重視研發實力和人才培養。公司擁有一支高素質的研發團隊,員工總數的七成以上為研發人才。公司每年投入大量資金用于研發新產品,并注重培養員工的創新能力和實踐能力。此外,義隆電子還與國內外知名學府合作,共同培養高素質的人才,為公司的長期發展提供了有力保障。
隨著全球電子市場的不斷擴大,APSA公司開始實施全球化戰略。公司先后在多個國家設立分支機構,拓展國際業務。通過與全球客戶的合作,公司的產品線不斷豐富,市場份額也逐漸提升。
在智能家居領域,Cramer公司也展現出了強大的創新能力。他們推出了一款智能家居控制系統,該系統可以通過手機APP遠程控制家中的電器設備。為了實現這一功能,Cramer公司投入了大量資源進行技術研發,并與多家家居品牌達成了戰略合作協議。這款產品的推出,使得Cramer公司在智能家居市場上占據了一席之地。
在市場推廣的過程中,Soneet注重品牌形象的建立。公司積極參加各類行業展會和技術交流會議,展示其最新技術和產品。同時,Soneet還通過媒體宣傳、社交媒體營銷等方式,提高品牌知名度和美譽度。這些努力使得Soneet在消費者心中樹立了良好的品牌形象。
面對激烈的市場競爭和行業變革,達利凱普積極推進數字化轉型和產業升級。公司引入了先進的生產設備和管理系統,實現了生產過程的自動化和智能化。同時,公司還加大了對新材料、新工藝的研發力度,不斷提升產品的性能和品質。這些舉措使達利凱普在激烈的市場競爭中保持了領先地位,也為公司的持續發展奠定了堅實基礎。
補充資料懸賞女友一名。二手亦可,要求九成新以上,無附加產品。產地不限,山寨亦可.需性能穩定,運行可靠.維護簡單,節省耗材.慣用麥當勞,啃得基等洋耗材者謝絕.出廠日期為1975年以后。各零部件齊全。預裝中文操作系統,兼容英文或俄文操作系統更佳。 ...… 查看全部問答∨ |
在迅雷下的protel99se ,別人都能用,唯我的電腦不行, setup 后進了3格后就卡在那里不動了, 等了好長時間后出現服務器運行失敗, 查了網上別人的經驗也沒弄好, 煩死了,都兩天了 類似于http://wenwen.soso.com/z/q147578750.htm 那位大神救 ...… 查看全部問答∨ |
摘要:無線Mesh網絡(WMN)是一種特殊的Ad hoc網絡,具有分層的網絡結構,其傳輸骨干網具有多跳、拓撲穩定、無供電約束、業務流量相對匯聚等特性。提高WMN頻譜空間復用度是增加網絡容量有效的方法,而其設計的關鍵是有效控制無線鏈路間的干擾范圍?;?...… 查看全部問答∨ |
|
小弟學習stm32不久,最近遇到了不少的問題,雖然問題很簡單,有些是1+1==?的問題,但是對于初學者的我來說,確實苦澀不堪~幸好有各方同仁的幫助,使我越戰越勇,但是路漫漫其修遠兮,靠我一人之力,有些問題不是很容易解決。 今又至一難題, ...… 查看全部問答∨ |
求助哪位高手可以教我如何看PLC的程序 我是個門外漢......希望高手們指點下有什么資料也可以發給我..............謝謝?。?! wj2008hf@163.com QQ:215127089 … 查看全部問答∨ |
現在很多用戶在學習HELPER2416的時候,都有變磚的經歷,我想告訴大家的是,放心使用,可勁兒折騰,不要怕變磚,多變磚幾次,您就成專家了!只要沒有放到地上踩,不拿錘子一樣的手機敲,我們都提供絕對安全的技術保障! … 查看全部問答∨ |