/*
* 平臺: s5pv210
* 內核版本號: 2.6.35.7
*/
kernel/arch/arm/mach-s5pv210/mach-smdkc110.c 這個文件是由三星在移植內核時提供的一個很重要的文件,這個文件中的函數都是與硬件相關的。
mach-smdkc110.c文件中的smdkc110_map_io函數就是靜態映射表建立過程調用的一個函數
開機時調用映射表建立函數:
問題:開機時(kernel啟動時)smdkc110_map_io怎么被調用的?
start_kernel
setup_arch
paging_init
devicemaps_init
{
if (mdesc->map_io)
mdesc->map_io(); // 這個map_io指向的就是smdkc110_map_io函數,這個之前在講內核的啟動過程的時候就分析過了
}
smdkc110_map_io
s5p_init_io
iotable_init
結論:經過分析,真正的內核移植時給定的靜態映射表在arch/arm/plat-s5p/cpu.c中的s5p_iodesc,本質是一個結構體數組,數組中每一個元素就是一個映射,這個映射描述
了一段物理地址到虛擬地址之間的映射。這個結構體數組所記錄的幾個映射關系被iotable_init所使用,該函數負責將這個結構體數組格式的表建立成MMU所能識別的頁表
映射關系,這樣在開機后可以直接使用相對應的虛擬地址來訪問對應的物理地址。這個s5p_iodesc數組如下:

關鍵字:Linux 內核 建立過程
引用地址:
Linux內核靜態映射表的建立過程
推薦閱讀最新更新時間:2025-06-30 16:07
TQ2440 學習筆記—— 34、移植 Linux 內核【 Makefile 分析 】
一、Linux Makefile 分析 (1)Makefile 的作用 a、決定編譯哪些文件 b、怎樣編譯這些文件 c、怎樣連接這些文件,最重要的是它們的順序如何 Linux 內核中有很多個Makefile 文件,下面是 Makefile 文件的五大類: a、決定編譯哪些文件。 Linux 內核的編譯過程從頂層 Makefile 開始,然后遞歸地進入各級子目錄調用它們的Makefile,分為3個步驟。 1、頂層 Makefile 決定內核根目錄下哪些子目錄將被編進內核。 2、arch/$(ARCH)/Makefile 決定arch/$(ARCH) 目錄下哪些文件、哪些目錄將被編進內核。 3、
[單片機]
基于內核對象的Linux輸入子系統觸摸屏的驅動設計
隨著人們對操控要求的不斷提高,電容觸摸屏因為能支持多點觸摸而得到廣泛使用。本文基于Nokia和Intel公司合作開發的開源操作系統MeeGo,采用基于內核對象的Linux輸入子系統來設計觸摸屏的驅動。該方案極大地方便了觸摸屏的驅動開發,可應用在車載娛樂、上網本、智能手機等電子產品上。 隨著人們對操控要求的不斷提高,市場上出現了越來越多的高端手機、平板電腦,這些產品共同的特點就是給人們提供了非常便利的操控方式,尤其是電容觸摸屏的使用,它能很好地實現多點觸控功能。多點觸控技術是當今炙手可熱的技術,它讓人們的生活方式得到了前所未有的改變。電容觸摸屏已經成為高端手機的標配,如蘋果的iPhone以及HTC Motorola的一些高端
[單片機]
arm架構的linux內核中,clrex指令的作用是什么
1. clrex指令的作用: 《arm architecture reference manual》B2-1292以下簡稱arm arm手冊 The ClearExclusiveLocal() procedure takes as arguments the processor identifier processorid . The procedure clears the local record of processor processorid for which an address has had a request for an exclusive access. It is IMPLEMENTATION DEFI
[單片機]
arm驅動linux內核時鐘
《 linux內核時鐘》涉及內核驅動函數四個,內核結構體一個,分析了內核驅動函數一個;可參考的相關應用程序模板或內核驅動模板一個,可參考的相關應用程序模板或內核驅動一個 一、內核定時器 意義:內核定時器是軟件意義上的定時器,最終依賴定時器來實現。時鐘中斷處理程序會喚起Timer_softirq軟中斷,運行當前處理器上到期的所有定時器。 二、linux設備驅動編程 linux內核提供一組函數,時鐘數據結構;這組函數和數據結構使驅動工程師不用關心具體的軟件定時器究竟對應著怎樣的內核和硬件行為。 三、數據結構和函數: 1)數據結構 結構體一)Linux在include/linux/timer.h頭文件中定義了數據結構timer_list來
[單片機]
喜羊羊系列之【設備-驅動 動態載入進內核】
led.h #ifndef _HEAD_H #define _HEAD_H #define MAGIC 'h' #define LED_ON _IOW(MAGIC,1,int) #define LED_OFF _IOW(MAGIC,0,int) struct led_device{ dev_t devno; unsigned int led_major; struct cdev *led_cdev; struct class *led_class; struct device *led_device; }; #endif 平臺設備 dev_led.c #include linux/i
[單片機]
Efinix推出車規級集成RISC-V內核的FPGA
Efinix公司針對汽車行業推出了一系列具有32位RISC-V內核的FPGA器件,這些器件在多個方面展現出了其卓越的性能和適應性。 首先,Titanium Ti375 FPGA符合汽車標準,并已通過ISO26262認證,這是汽車制造商所重視的一項安全標準。它采用16納米工藝制造,擁有高達100萬個邏輯元件,以及一個四核32位RISC-V內核。這個內核具有一個強大的CPU,采用了具有多種擴展的ISA RISC-V 32,使得它在處理復雜任務時能夠表現出色。此外,它還通過了AEC-Q100 1級認證,進一步證明了其在汽車應用中的可靠性和穩定性。 Titanium Ti375 FPGA還配備了多種接口和控制器,以滿足汽車應用中的
[嵌入式]
TQ2440之uboot---8.tftp下載內核并啟動內核
TQ2440 + uboot1.1.6 1. uboot修改 1.1 common/main.c 在函數 main_loop大約513行: char cmd_buf ; printf( Booting Linux ...\n ); //boot_zImage(0x200000,0x200000); //注釋boot_zImage strcpy(cmd_buf, tftp 0x30008000 zImage; boot_zImage ); //tftp內核到內存的0x30008000,然后啟動zImage; run_command(cmd_buf,
[單片機]
建立一個AVR單片機RTOS(8)—占先式內核(完善的服務)
第八篇:占先式內核(完善的服務) 如果將前面所提到的占先式內核和協作式內核組合在一起,很容易就可以得到一個功能較為完善的占先式內核,它的功能有: 1,掛起和恢復任務 2,任務延時 3,信號量(包括共享型和獨占型) 另外,在本例中,在各個任務中加入了從串口發送任務狀態的功能。 #include avr/io.h #include avr/Interrupt.h #include avr/signal.h unsigned char Stack ; register unsigned char OSRdyTbl asm( r2 ); //任務運行就緒表 register unsigned char OSTaskRun
[單片機]