淺談分析Arm linux 內核移植及系統初始化的過(guò)程一
1、嵌入式linux應用軟件開(kāi)發(fā)
2、linux內核的剪裁和移植
3、嵌入式linux底層驅動(dòng)的開(kāi)發(fā)
主 要介紹內核移植過(guò)程中涉及文件的分布及其用途,以及簡(jiǎn)單介紹系統的初始化過(guò)程。整個(gè)armlinux內核的啟動(dòng)可分為三個(gè)階段:第一階段主要是進(jìn)行 cpu和體系結構的檢查、cpu本身的初始化以及頁(yè)表的建立等;第二階段主要是對系統中的一些基礎設施進(jìn)行初始化;最后則是更高層次的初始化,如根設備和 外部設備的初始化。了解系統的初始化過(guò)程,有益于更好地移植內核。
1. 內核移植
2. 涉及文件分布介紹
2.1. 內核移植
2.2. 涉及的頭文件
/linux-2.6.18.8/include
[root@localhostinclude]#tree-L1
.
|--Kbuild
|--acpi
|--asm->asm-arm
|--asm-alpha
|--asm-arm------------------------------->(1)
|--asm-sparc
|--asm-sparc64
|--config
|--keys
|--linux ------------------------------->(2)
|--math-emu
|--media
|--mtd
|--net
|--pcmcia
|--rdma
|--rxrpc
|--scsi
|--sound
`--video
內核移植過(guò)程中涉及到的頭文件包括處理器相關(guān)的頭文件(1)和處理器無(wú)關(guān)的頭文件(2)。
2.3. 內核移植2.4. 涉及的源文件
/linux-2.6.18.8/arch/arm
[root@localhostarm]#tree-L1
.
|--Kconfig
|--Kconfig-nommu
|--Kconfig.debug
|--Makefile
|--boot------------------------------->(2)
|--common
|--configs
|--kernel------------------------------->(3)
|--lib
|--mach-at91rm9200
……
|--mach-omap1
|--mach-omap2
|--mach-realview
|--mach-rpc
|--mach-s3c2410------------------------------->(4)
|--mach-sa1100
|--mach-versatile
|--mm------------------------------->(5)
|--nwfpe
|--oprofile
|--plat-omap
|--tools------------------------------->(1)
`--vfp
(1)
/linux-2.6.18.8/arch/arm/tools
[root@localhosttools]#tree-L1
.
|--Makefile
|--gen-mach-types
`--mach-types
Mach-types文件定義了不同系統平臺的系統平臺號。移植linux內核到新的平臺上需要對新的平臺登記系統平臺號。
Mach-types文件格式如下:
#machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
s3c2410 ARCH_S3C2410 S3C2410 182
smdk2410 ARCH_SMDK2410 SMDK2410 193
之 所以需要這些信息,是因為腳本文件linux/arch/arm/tools/gen-mach-types需要linux/arch/tools /mach-types來(lái)產(chǎn)生linux/include/asm-arm/mach-types.h文件,該文件中設置了一些宏定義,需要這些宏定義來(lái) 為目標系統選擇合適的代碼。
(2)
linux-2.6.18.8/arch/arm/boot/compressed
[root@localhostcompressed]#tree-L1
.
|--Makefile
|--Makefile.debug
|--big-endian.S
|--head-at91rm9200.S
2 | 淺談分析Arm linux 內核移植及系統初始化的過(guò)程 |
|
評論