毕业设计(论文)
班级: 0402301
姓名: 张立强
2008 年 6 月
毕 业 设 计 ( 论 文 )
题 目:基于 ARM9 的嵌入式导航计算机
Linux
系统移植
院 (系) 信息科学与工程学院
专 业 电气工程及其自动化
学 生 张立强
学 号 040230125
指导教师 曲延滨
哈尔滨工业大学教务处制
2008 年 6 月
毕业设计(论文)任务书
专 业
电气工程及其自动化
班 级
0402301
学 生
张立强
指导教师
曲延滨
指导教师
职 称
教授
设计题目
基于 ARM9 的嵌入式导航计算机 Linux 系统移植
题目类型
实验研究型
设计时间
2008 年 4 月 9 日 至 2008 年 6 月 15 日 共 12 周
设计的专业方向、基本理论及设计内容:
专业方向:电气工程及其自动化
基本理论:基于 ARM 处理器的嵌入式操作系统移植
设计内容:本设计主要研究嵌入式开发的操作系统移植。需要使用PC 机建
立编译环境,按步进行操作系统各个部分的修改定制、编译和移植。设计
中需要在开发板上进行大量的实验,通过实验中发现问题,逐步进行修改,
工作完成后所要达到的目标是使 Linux 操作系统在 ARM 开发板上正常运行,
并实现一定的功能。
学生本人在该设计中具体完成的工作:
1, 在 PC 机上建立交叉编译工具链
2, 移植 Bootloader
3, 精简 Linux 内核,并将其移植到开发板
4, 建立根文件系统
主要参考文献、资料:
[1] 李亚锋等《ARM 嵌入式 Linux 系统开发》 清华大学出版社 2007.8
[2] 孙纪坤等《嵌入式 Linux 系统开发技术详解—基于 ARM》人民邮电出
版社 2006.8
[3] 孙天泽等《嵌入式设计及 Linux 驱动开发指南—基于 ARM9》电子工
业出版社 2005
[4] 郭秋平《基于 ARM 系统的 Linux 平台移植研究》浙江大学硕士论文
2006.1
年 月 日
负责人签字
负责人签字
年 月 日
设
计
要
求
系
审
批
意
见
院
审
批
意
见
哈尔滨工业大学(威海)毕业设计(论文)
摘要
嵌入式导航计算机是飞机,车辆,导弹和船舶等运载体上的重要设备。
其主要任务是按照原定的计划和任务,以要求的精度,在一定时间内将载体
引导至目的地。本课题的目的就是针对其硬件环境,搭建起一个高效、稳定
的嵌入式操作系统的平台。Linux 操作系统具有开放源代码、功能强大且易
于移植等特点而成为嵌入式操作系统的首选。
本文首先总结了 ARM 的体系结构和特点,并选择了基于 ARM920T 内
核的 LJD2410 开发板作为移植平台。然后介绍了搭建交叉开发环境的一般方
法。之后介绍了嵌入式 Linux 系统的启动程序的实现原理,并实现了 U-Boot
的移植。在对 Linux 内核结构进行了分析后,结合嵌入式导航计算机的系统
需求,给出了 Linux 内核的移植和裁剪方案。最后详细介绍了如何构建根文
件系统以及系统部署的方法。
关键词: 嵌入式系统;ARM;Linux;移植;系统部署
I
哈尔滨工业大学(威海)毕业设计(论文)
Abstract
Embedded navigation computer is an important equipment in aircrafts,
vehicles, missiles, ships and other transporters. Its main task is to lead carriers to
the destination as planed with the required precision and in a certain period of
time. The purpose of this subject is building an efficient and stable embedded
operating system platform according to its hardware environment. Linux
operating system has became the first choice in building an embedded operating
system for its openness in source code, its powerful function and easiness in
transplanting.
Firstly, the paper summarizes the features of the ARM architecture. The
LJD2410 board that based on ARM920T is choosen as the target platform.
Afterward the way to building a cross-development environment is expounded.
Then comes the introduction of the methods in building a cross-development
environment and the bootloader of embedded Linux system is expounded, along
with the transplant of U-Boot. After the analysis of the kernel in Linux, according
to the system requirements of the embedded navigation computer, the scheme for
its transplant and reducing is given. Finally the paper described in detail how to
build a root file system and the system deployment methods.
Keywords: Embedded system; ARM; Linux; Transplant; System deployment
II
哈尔滨工业大学(威海)毕业设计(论文)
目录
摘要....................................................................................................................I
Abstract ............................................................................................................II
第 1 章 绪论 ......................................................................................................1
1.1 嵌入式系统概述 ..................................................................................1
1.1.1 嵌入式系统的定义 ..................................................................1
1.1.2 嵌入式系统的组成 ..................................................................1
1.1.3 嵌入式系统的开发 ..................................................................1
1.2 嵌入式操作系统概述...........................................................................2
1.2.1 嵌入式操作系统......................................................................2
1.2.2 嵌入式 Linux 操作系统...........................................................2
1.3 ARM 体系结构与硬件平台...............................................................3
1.3.1 ARM 体系结构的历史与技术特征.........................................3
1.3.2 Samsung S3c2410 处理器简介 ................................................4
1.3.3 LJD2410 开发板简介 ..............................................................5
1.4 本课题的背景和意义.........................................................................6
1.5 本课题的主要工作和研究内容 .........................................................6
第 2 章 交叉编译环境的建立............................................................................8
2.1 上位机的软硬件配置...........................................................................8
2.1.1 上位机硬件配置 ......................................................................8
2.1.2 上位机操作系统及软件...........................................................8
2.2 硬件连接与调试.................................................................................9
2.2.1 硬件连接方式..........................................................................9
2.2.2 串口调试................................................................................10
2.3 配置 TFTP 及 NFS 服务...................................................................11
2.3.1 TFTP 服务简介......................................................................11
2.3.2 TFTP 服务安装与配置 ..........................................................12
2.3.3 NFS 服务简介........................................................................12
2.3.4 NFS 服务安装与配置 ............................................................13
2.4 安装交叉编译工具...........................................................................13
2.4.1 交叉编译简介........................................................................13
III
哈尔滨工业大学(威海)毕业设计(论文)
2.4.2 交叉编译器的安装及配置.....................................................14
2.4.3 测试交叉编译器 ....................................................................14
2.5 本章小结 ..........................................................................................15
第 3 章 移植 Bootloader..................................................................................16
3.1 Bootloader 概述................................................................................16
3.2 U-boot 简介 ......................................................................................16
3.2.1 U-boot 的获取........................................................................16
3.2.2 U-boot 目录结构....................................................................16
3.3 U-boot 的启动过程及工作原理 .......................................................17
3.3.1 启动模式介绍........................................................................17
3.3.2 启动阶段 1 分析 ....................................................................19
3.3.3 启动阶段 2 分析 ....................................................................20
3.4 U-boot 的移植过程...........................................................................20
3.4.1 准备工作................................................................................20
3.4.2 添加支持 NAND Flash 启动功能 ..........................................21
3.4.3 添加 NAND Flash 读写功能..................................................22
3.4.4 修改 U-boot 环境变量保存方式............................................22
3.4.5 加入 NAND Flash 闪存型号支持 ..........................................22
3.4.6 编译 U-boot............................................................................23
3.5 U-boot 的烧写及测试.......................................................................23
3.6 设置 U-boot 环境变量......................................................................25
3.7 本章小结 ..........................................................................................26
第 4 章 Linux 内核的移植...............................................................................27
4.1 Linux 内核的结构 ............................................................................27
4.2 Linux 启动过程简析.........................................................................28
4.3 Linux 内核的移植过程.....................................................................28
4.3.1 选择参考板 ...........................................................................28
4.3.2 修改 NAND Flash 分区信息 .................................................28
4.3.3 关闭 ECC 校验......................................................................30
4.4 CS8900a 网卡的移植过程................................................................30
4.4.1 修改硬件地址映射................................................................30
4.4.2 添加 CS8900A 内核编译项...................................................31
4.5 Linux 内核的剪裁配置.....................................................................31
IV
哈尔滨工业大学(威海)毕业设计(论文)
4.5.1 使用配置菜单........................................................................31
4.5.2 基本配置选项........................................................................32
4.5.3 驱动程序配置选项................................................................33
4.5.4 保存配置文件........................................................................34
4.5.5 编译 Linux 内核 ....................................................................34
4.6 内核的下载及启动...........................................................................34
4.6.1 将引导信息加入内核映像 ....................................................34
4.6.2 内核映像的下载及运行 ........................................................35
4.7 本章小结 ..........................................................................................36
第 5 章 建立根文件系统 .................................................................................36
5.1 根文件系统概述...............................................................................36
5.1.1 根文件系统简介 ....................................................................36
5.1.2 NFS 文件系统与 Cramfs 文件系统 .......................................36
5.2 建立 Linux 根文件系统目录 ............................................................36
5.3 移植 Busybox 工具...........................................................................37
5.3.1 Busybox 工具简介 .................................................................37
5.3.2 Busybox 的配置 .....................................................................37
5.3.3 编译并安装 Busybox.............................................................38
5.4 移植 Tinylogin 工具 .........................................................................38
5.4.1 编译 Tinylogin 工具...............................................................38
5.4.2 建立登陆密码文件 ................................................................38
5.5 建立初始化文件...............................................................................39
5.5.1 Inittab 文件 ............................................................................39
5.5.2 Fstab 文件..............................................................................39
5.5.3 Profile 文件............................................................................40
5.6 建立启动脚本文件...........................................................................40
5.7 应用程序的建立...............................................................................40
5.8 将 Linux 内核及根文件系统部署到开发板.....................................42
5.8.1 重新修改、编译内核及启动脚本文件..................................42
5.8.2 内核的烧写固化过程.............................................................42
5.8.3 制作 Cramfs 根文件系统映像 ...............................................42
5.8.4 根文件系统的固化过程.........................................................43
5.9 本章小结 ..........................................................................................43
V