s3c2410 linux板級檔案裝置的初始化過程

2021-06-20 22:57:55 字數 2153 閱讀 5739

/*linux板級裝置的初始化過程

start_kernel() -> setup_arch(&command_line) -> mdesc = setup_machine(machine_arch_type) -> list = lookup_machine_type(nr) -> return struct machine_desc. 

核心在啟動的時候就是最先執行start_kernel() , 然後她就會呼叫體系結構相關的setup_arch(&command_line), 如arm體系結構的在arch/arm/kernel/setup.c中, 

進一步, 她就要初始化板級相關的裝置,   但在此之前, 她必須找到這塊目標板的描述結構, 所以她就先通過lookup_machine_type(nr)來查詢這個結構,

傳入的引數是又uboot傳過來的, 儲存在r2中. 如假設她傳入的是'smdk2410' 的nr, lookup_machine_type(nr) 就會找到如下的machine_desc. 

這個結構在乙個專門描述sddk2410的檔案中--arch/arm/mach-s3c2410/mach-smdk2410.c 

*/machine_start(smdk2410, "smdk2410") /* @todo: request a new identifier and switch

* to smdk2410 */

/* maintainer: jonas dietsche */

.phys_io    = s3c2410_pa_uart,

.io_pg_offst    = (((u32)s3c24xx_va_uart) >> 18) & 0xfffc,

.boot_params    = s3c2410_sdram_pa + 0x100,

//重要的板級初始化函式

.map_io        = smdk2410_map_io,

.init_irq    = s3c24xx_init_irq,

.init_machine    = smdk2410_init,

.timer        = &s3c24xx_timer,

machine_end

/*machine_start的第乙個引數是用來構造機器的型別的, 如這裡的smdk2410 ,   

又下面的定義 

.nr        = mach_type_##_type 

有 nr = mach_type_smdk2410

而 mach_type_smdk2410這些機器型別則在/include/asm-arm/mach-types.h中定義:

#define mach_type_smdk2410             193

完整的結構描述如下:

*/struct machine_desc ;

/** set of macros to define architecture features. this is built into

* a table by the linker.

*/#define machine_start(_type,_name)            \

static const struct machine_desc __mach_desc_##_type    \

__used                            \

__attribute__((__section__(".arch.info.init"))) = ;

/*在arch/arm/mach-s3c2410/mach-smdk2410.c 定義了以下兩個函式實現:

*/static struct map_desc smdk2410_iodesc __initdata = ;

static struct platform_device *smdk2410_devices __initdata = ;

static void __init smdk2410_map_io(void)

static void __init smdk2410_init(void)

/* devices we initialise */

static struct platform_device __initdata *smdk_devs = ;

void __init smdk_machine_init(void)

skyeye模擬s3c2410 linux下程式

在前面的基礎上,下面開始利用skyeye自帶的testsuites中的資源來執行自己的程式的方法 2.使用skyeye模擬板子s3c2410執行某個linux 首先進入解壓完的目錄,然後 cd linux s3c2410 s3c2410x 2.6.14 skyeye c skyeye.conf e ...

S3C2410 S3C2440開發板相關書籍

1 arm處理器裸機開發實戰 機制而非策略 王小強 主編 電子工業出版社 實驗平台 tq2440。裸跑中的經典教程,有注釋,例項多而實用,是目前市場上最受好評的2440 裸跑教程。讓您從微控制器51入手arm 從此再無憂。2.c os ii原理與arm應用程式設計 張勇 方勤 蔡鵬 許波 著 3.嵌...

基於S3C2410的Linux移植

本文描述了將linux移植到基於s3c2410處理器目標板上的方法與過程。介紹了目標平台和linux,並說明了如何搭建移植環境,著重介紹了bootloader的架構和功能以及linux核心的移植。結果證明該方法是可行的。移植後linux在嵌入式系統中執行良好。引言嵌人式系統就是以應用為中心 以計算機...