移植linux4.x s3c6410,7.4.4 S3C6410 Linux内核的移植内容(1)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值