分析的原始碼:九鼎為s5pv210移植過的linux+qt4.8
的kernel,核心版本號2.6.35
建立對映表的三個關鍵部分:
具體實體地址和虛擬位址的值相關的巨集定義,也就是文章《隨筆–linux字元裝置驅動開發基礎》中靜態對映操作led一節提到的靜態對映表。實際工作中我們也只要明白靜態對映表的意義就可以編寫相關的**
該函式負責由(1)中的對映表來建立mmu所能識別的頁表對映關係。
在kernel/arch/arm/mach-s5pv210/mach-smdkc110.c中的smdkc110_map_io函式:
結論:經過分析,真正的核心移植時給定的靜態對映表在arch/arm/plat-s5p/cpu.c
中的s5p_iodesc
,本質是乙個結構體陣列,陣列中每乙個元素就是乙個對映,這個對映描述了一段實體地址到虛擬位址之間的對映。這個結構體陣列所記錄的幾個對映關係被iotable_init
所使用,該函式負責將這個結構體陣列格式的表建立成mmu所能識別的頁表對映關係,這樣在開機後可以直接使用相對應的虛擬位址來訪問對應的實體地址。
開機時(kernel啟動時)smdkc110_map_io
怎麼被呼叫的?
靜態對映表建立過程分析
建立對映表的三個關鍵部分 static struct map desc s5p iodesc initdata 這個陣列對應的是乙個對映表,每乙個元素都是乙個對映的關係。例如 define s5p va gpio s3c addr 0x00500000 0xfd500000 define s5pv2...
linux驅動開發擴充套件 靜態對映表建立過程
start kernel setup arch mdesc setup machine machine arch type paging init mdesc devicemaps init mdesc map io ifdef config mach smdkc110 machine start ...
S5PV210靜態對映表的構建過程
注 分析的三星官方的核心。一 板子啟動相關 1.首先得明白一般與板子相關的啟動初始化都在mach c檔案。因為靜態對映表我們主要關注的是板子的gpio,而gpio也屬於板子啟動必須初始化的部分,所以我們要找的檔案就是 kernel arch arm mach s5pv210 mach smdkc11...