基于ARM平台地Linux内核移植研究.docVIP

  • 5
  • 0
  • 约3.96千字
  • 约 7页
  • 2018-11-05 发布于江苏
  • 举报
基于ARM平台地Linux内核移植研究

基于ARM平台的Linux内核移植研究-企业管理论文 基于ARM平台的Linux内核移植研究 沙晓艳肖宁(陕西职业技术学院) 摘要 以S3C2440(ARM920T 核)微处理器为核心,搭建硬件平台,通过对Linux 的源代码结构进行分析,进一步修改和优化内核,同时完成整个移植过程的配置和编译,实现Linux 内核成功移植到开发板的实验效果。 关键词 S3C2440 Linux 内核内核移植 0 引言 随着计算机、Internet 技术的不断发展,嵌入式系统得到广泛应用,同时嵌入式操作系统逐渐成为其中的重要组成部分。对于嵌入式Linux 来说,通过对普通Linux 操作系统进行裁剪、修改,通过嵌入的方式,使之运行在计算机系统上[1]。将Linux 内核移植到一些典型的微控制器和微处理器上,成为前嵌入式Linux 的一个热点应用,通过提供操作系统层面的支持,进一步开发嵌入式系统应用软件。 1 Linux 内核结构分析 1.1 Linux 内核Linux 内核是Linux 操作系统的核心,也是整个Linux 功能的体现。Linux 内核主要由5 个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信[2]。 各个子系统之间的依赖关系如图1 所示。 1.2 内核源码Linux 内核源码使用目录树结构,通常位于/usr/src/linux 目录中,如图2 所示。在Linux 的源码根目录下存在大量子目录,分别组织存放各种内核子系统或文件的。其中,arch/architecture/ 目录包括所有和体系结构相关的内核代码;include/asm-architecture/ 目录包括编译内核所需要的大部分include 文件;drivers/ 中存放各种设备驱动程序;mm/ 目录包括所有的内存管理代码;kernel/ 目录中存放Linux 内核核心代码;fs/ 目录包含所有的文件系统代码;init/ 目录包含内核的初始化代码;ipc/ 目录包含内核的进程间通信的代码;net/ 目录包含内核的网络代码。在2.6.32 的内核代码中已经完全包含了对S3C2440 硬件体系的支持。 2 内核移植过程 内核移植一般包括内核配置、内核编译和内核下载3大部分。 2.1 内核配置因为2.6.32 版本的linux 内核已经对S3C2440 全系列硬件做了较好的兼容,大部分选项可以使用其缺省值。配置时,主要选择:处理器类型、板级支持、对设备驱动及文件系统的支持。 2.1.1 搭建交叉编译环境。修改源代码根目录下的Makefile,将默认编译平台 Export KBUILD_BUILDHOST:=$(SUBARCH) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= 改为: Export KBUILD_BUILDHOST:=$(SUBARCH) ARCH ?= arm CROSS_COMPILE ?=arm-linux- 其中,ARCH 是指定编译的目标平台为arm,CROSS_COMPILE 是指定交叉编译器。如果使用其他的编译环境,则要把编译器的全部路径写出。 2.1.2 设置NAND FLASH 分区。将NAND FLASH分成2 个区:Kernel、Rootfs,其中name 表示分区的名称,size 表示分区的大小,offset 表示分区在Flash 中的起始地址。代码在arch/arm/plat-s3c24xx/common-smdk.c 中,将此结构体中的内容: static struct mtd_partition smdk_default_nand_part[] = {} 修改为: static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = “kernel”, .size = SZ_2M, .offset = 0, }, [1] = { .name = “rootfs system”, .offset = SZ_2M, .size = SZ_64M, } }; 2.1.3 设置晶振频率 代码在arch/arm/mach-s3c2440/mach-smdk2440.

文档评论(0)

1亿VIP精品文档

相关文档