7.4.4 S3C6410 Linux内核的移植内容(1)
S3C6410系统的Linux的构建命令如下所示,选择指定的编译工具进行编辑即可:
$ makeARCH=armCROSS_COMPILE={path}/arm-none-linux-gnueabi-
编译的最终结果如下所示:
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
KSYM .tmp_kallsyms1.S
AS .tmp_kallsyms1.o
LD .tmp_vmlinux2
KSYM .tmp_kallsyms2.S
AS .tmp_kallsyms2.o
LD vmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
Building modules, stage 2.
MODPOST 1 modules
CC drivers/scsi/scsi_wait_scan.mod.o
LD [M] drivers/scsi/scsi_wait_scan.ko
与标准Linux编译的流程类似:根目录中的vmlinux.o是连接后内核的目标文件;vmlinux是ELF格式的内核(没有经过压缩);arch/arm/boot/目录中的Image是二进制的内核文件,由根目录中的vmlinux转换而成。arch/arm/boot/compressed/目录中的vmlinux是经过压缩的vmlinux(gzip 算法压缩)和解压缩程序的组合体,也是ELF格式;zImage是经过vmlinux转换而成的二进制文件。
具体将生成哪些模块,由配置的时候决定,这里生成了scsi_wait_scan.ko模块。
S3C6410系统的Linux内核特有的内容主要包含了几两个目录,如下所示。
arch/arm/plat-s3c/:三星的S3C平台公共的内容。
arch/arm/mach-s3c64xx/:s3c64xx平台的移植内容。
arch/arm/plat-s3c64xx/include/plat/:主要包含了各个模块的寄存器定义、DMA、中断等头文件。
S3C6410处理器主要的文件如下所示:
arch/arm/mach-s3c64xx/cpu.c:处理器移植文件。
arch/arm/mach-s3c64xx/irq.c:中断移植文件。
arch/arm/mach-s3c64xx/pm.c:能源管理相关文件。
arch/arm/mach-s3c64xx/dma.c:DMA移植文件。
arch/arm/mach-s3c64xx/mach-smdk6410.c:当前硬件系统支持文件。
控制S3C6410 Linux内核配置的是其默认的defconfig文件,这个文件的主要内容如下所示:
CONFIG_ARM=y
#
# System Type
#
CONFIG_ARCH_S3C64XX=y
CONFIG_PLAT_S3C64XX=y
CONFIG_CPU_S3C6400_INIT=y
CONFIG_CPU_S3C6400_CLOCK=y
CONFIG_S3C64XX_ADC=y
CONFIG_CPU_S3C6410=y
这里主要指定了为ARM体系结构,平台为PLAT_S3C64XX,机器为CPU_S3C6410,在编译的过程中,Linux源代码各个目录中的Makefile根据这些选项决定哪些文件被编译,哪些不需要编译。
S3C6410 Linux内核特有内容的主要包含了以下两个目录:
arch/arm/plat-s3c/:三星S3C平台公共的内容
arch/arm/plat-s3c64xx/:s3c64xx平台的移植内容
arch/arm/mach-s3c6410/:s3c6410机器的移植内容
S3C6410的头文件在arch/arm/plat-s3c64xx/include/plat/目录中,主要包含了各个模块的寄存器定义,DMA,中断等内容。
S3C6410处理器主要的文件如下所示:
arch/arm/mach-s3c6410/cpu.c:处理器移植文件;
arch/arm/mach-s3c6410/irq.c:中断移植文件;
arch/arm/mach-s3c6410/pm.c:能源管理相关文件;
arch/arm/mach-s3c6410/dma.c:DMA移植文件;
arch/arm/mach-s3c6410/mach-smdk6410.c:当前硬件系统支持文件。[与前面有重复? 见上页删除]
mach-smdk6410.c是当前机器实现的核心文件,每一个处理器实现移植的入口是机器类型的定义部分。SMDK6410机器类型的定义部分如下所示:
MACHINE_START(SMDK6410, "SMDK6410")
.phys_io=S3C_PA_UART& 0xfff00000, //物理端口
.io_pg_offst= (((u32)S3C_VA_UART)>>18) & 0xfffc, // IO地址
.boot_params=S3C64XX_PA_SDRAM+ 0x100, //启动参数
.fixup=smdk6410_fixup, // 修定的信息
.init_irq=s3c6410_init_irq, // IRQ初始化
.map_io=smdk6410_map_io, // IO映射
.init_machine=smdk6410_machine_init, // 机器初始化
.timer= &s3c64xx_timer, // 定时器
MACHINE_END
【责任编辑:book TEL:(010)68476606】
点赞 0