/*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在嵌入式系統中執行良好。引言嵌人式系統就是以應用為中心 以計算機...