没有合适的资源?快使用搜索试试~ 我知道了~
Armlinux内核移植及系统初始化过程分析.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 106 浏览量
2021-11-04
18:06:58
上传
评论
收藏 41KB PDF 举报
温馨提示
试读
22页
Armlinux内核移植及系统初始化过程分析.pdf
资源推荐
资源详情
资源评论
Arm linux 内核移植及系统初始化过程分析
Edwin. Rong [email protected]
本文主要介绍内核移植过程中涉及文件的分布及其用途, 以及简单介绍系统的初始化过
程。整个 arm linux 内核的启动可分为三个阶段:第一阶段主要是进行 cpu 和体系结构的检
查、 cpu 本身的初始化以及页表的建立等;第二阶段主要是对系统中的一些基础设施进行初
始化;最后则是更高层次的初始化, 如根设备和外部设备的初始化。 了解系统的初始化过程,
有益于更好地移植内核。
1. 内核移植涉及文件分布介绍
1.1. 内核移植涉及的头文件
/linux-2.6.18.8/include
[root@localhost include]# tree -L 1
.
|-- 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
内核移植过程中涉及到的头文件包括处理器相关的头文件 (1)和处理器无关的头文件 (2)。
1.2. 内核移植涉及的源文件
/linux-2.6.18.8/arch/arm
[root@localhost arm]# tree -L 1
.
|-- 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@localhost tools]# tree -L 1
.
|-- 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 来产生 linux/include/asm-arm/mach-types.h 文件,该文件中设置了
一些宏定义,需要这些宏定义来为目标系统选择合适的代码。
(2)
linux-2.6.18.8/arch/arm/boot/compressed
[root@localhost compressed]# tree -L 1
.
|-- Makefile
|-- Makefile.debug
|-- big-endian.S
|-- head-at91rm9200.S
|-- head.S
|-- ll_char_wr.S
|-- misc.c
|-- ofw-shark.c
|-- piggy.S
`-- vmlinux.lds.in
Head.s 是内核映像的入口代码,是自引导程序。自引导程序包含一些初始化程序,这些程
序 都 是 体 系结 构 相 关的 。 在 对系 统 作 完初 始 化 设置 工 作 后, 调 用 misc.c 文件 中 的
decompress_kernel()函数解压缩内核映像到指定的位置,然后跳转到 kernel 的入口地址。
Vmlinux.lds.in 用来生成内核映像的内存配置文件。
(3)
linux-2.6.18.8/arch/arm/kernel
[root@localhost kernel]# tree -L 1
.
|-- Makefile
|-- apm.c
|-- armksyms.c
|-- arthur.c
|-- asm-offsets.c
|-- bios32.c
|-- calls.S
|-- dma.c
|-- ecard.c
|-- entry-armv .S
|-- entry-common.S
|-- entry-header.S
|-- fiq.c
|-- head-common.S
|-- head-nommu.S
|-- head.S
|-- init_task.c
|-- io.c
|-- irq.c
|-- isa.c
|-- module.c
|-- process.c
|-- ptrace.c
|-- ptrace.h
|-- semaphore.c
|-- setup.c
|-- smp.c
|-- sys_arm.c
|-- time.c
|-- traps.c
`-- vmlinux.lds.S
内核入口处也是由一段汇编语言实现的,由 head.s 和 head-common.s 两个文件组成。
Head.s 是内核的入口文件, 在 head.s的末尾处 #include "head-common.S" 。 经过一系列的
初始化后,跳转到 linux-2.6.18.8/init/main.c 中的 start_kernel() 函数中,开始内核的基本初始
化过程。
/linux-2.6.18.8/init
[root@localhost init]# tree
.
|-- Kconfig
|-- Makefile
|-- calibrate.c
|-- do_mounts.c
|-- do_mounts.h
|-- do_mounts_initrd.c
|-- do_mounts_md.c
|-- do_mounts_rd.c
|-- initramfs.c
|-- main.c
`-- version.c
(4)
/linux-2.6.18.8/arch/arm/mach-s3c2410
[root@localhost mach-s3c2410]# tree -L 1
.
|-- Kconfig
|-- Makefile
|-- Makefile.boot
|-- bast-irq.c
|-- bast.h
|-- clock.c
|-- clock.h
|-- common-smdk.c
|-- common-smdk.h
|-- cpu.c
|-- cpu.h
|-- devs.c
|-- devs.h
|-- dma.c
|-- gpio.c
|-- irq.c
|-- irq.h
|-- mach-anubis.c
|-- mach-smdk2410.c
|-- pm-simtec.c
|-- pm.c
|-- pm.h
|-- s3c2400-gpio.c
|-- s3c2400.h
|-- s3c2410-clock.c
|-- s3c2410-gpio.c
|-- s3c2410.c
|-- s3c2410.h
|-- sleep.S
|-- time.c
|-- usb-simtec.c
`-- usb-simtec.h
这个目录中的文件都是板级相关的,其中比较重要是如下几个:
linux/arch/arm/mach-s3c2410/cpu.c
linux/arch/arm/mach-s3c2410/common-smdk.c
linux/arch/arm/mach-s3c2410/devs.c
linux/arch/arm/mach-s3c2410/mach-smdk2410.c
linux/arch/arm/mach-s3c2410/Makefile.boot
linux/arch/arm/mach-s3c2410/s3c2410.c
剩余21页未读,继续阅读
资源评论
筱筱笎琞
- 粉丝: 9
- 资源: 15万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功