没有合适的资源?快使用搜索试试~ 我知道了~
linux系统移植.pdf
试读
95页
4星 · 超过85%的资源 需积分: 0 30 下载量 17 浏览量
更新于2009-03-06
收藏 1.81MB PDF 举报
### Linux系统移植知识点详解
#### 一、系统移植概述
**Linux系统移植**是指将Linux操作系统从一个硬件平台转移到另一个不同的硬件平台上,并确保其能够正常运行的过程。这通常涉及到对内核、Bootloader(引导加载程序)、文件系统以及其他相关软件进行适配与优化。
#### 二、硬件与软件环境
##### 1. **硬件环境**
- **主机硬件环境**:指的是进行Linux系统移植工作的计算机硬件环境。通常包括足够的处理器性能、内存大小以及存储空间等。
- **目标板硬件环境**:指的是将要移植Linux系统的嵌入式设备或计算机硬件平台。需要了解其处理器类型、内存大小、外设接口等信息。
##### 2. **软件环境**
- **主机软件环境**:
- **Windows操作系统**:用于支持交叉编译环境下的开发工具安装与配置。
- **Linux操作系统**:作为开发主机时的主要操作系统,用于交叉编译工具链的构建与使用。
- **目标板最后运行的环境**:即目标硬件平台上的软件环境,包括内核版本、文件系统等。
- **Linux下工作用户及环境**:
- **交叉工具的安装**:包括交叉编译器、链接器等工具的安装与配置。
- **u-boot移植工作目录**:用于存放u-boot源代码、配置文件等。
- **内核及应用程序移植工作**:涉及内核源代码、应用程序的编译与测试等。
- **配置系统服务**:
- **tftp服务器的配置**:用于在目标板上启动时通过TFTP协议下载内核镜像等文件。
- **其他服务**:如串口通信服务等,以便于调试与监控。
#### 三、工具介绍与使用
##### 1. **工具介绍**
- **ADS命令行命令介绍**:
- **armasm**:ARM汇编器。
- **armcc/armcpp**:ARM C/C++编译器。
- **armlink**:ARM链接器。
- **GNU交叉工具链**:
- **设置环境变量**:如PATH等。
- **准备源码及相关补丁**:
- **binuils**:二进制工具集。
- **gcc**:GNU编译器集合。
- **glibc**:GNU C库。
- **linuxkernel**:Linux内核源代码。
- **编译过程**:包括binutils、gcc、glibc等多个阶段。
- **u-boot的移植**:
- **u-boot介绍及系统结构**:u-boot是一款开源的Bootloader,适用于多种嵌入式设备。
- **u-boot体系结构**:包括目录结构、启动过程等。
- **u-boot的启动过程及工作原理**:分为两个阶段,分别使用汇编语言和C语言实现。
- **u-boot的移植过程**:涉及Makefile修改、配置文件创建等步骤。
#### 四、具体技术细节
##### 1. **Bootloader的编写(ADS)**
- **基本原理**:
- **可执行文件组成及内存映射**:包括程序的加载过程、内存布局等。
- **启动过程**:分为汇编部分和C语言部分。
- **源代码说明**:
- **汇编源代码说明**:解释了汇编语言中的关键指令及其作用。
- **C语言源代码说明**:讲解了C语言部分的实现逻辑。
- **AXD的使用**:
- **配置仿真器**:设置与目标硬件平台的连接参数。
- **启动AXD配置开发板**:用于调试和监控Bootloader的运行状态。
##### 2. **GNU交叉工具链**
- **设置环境变量**:配置交叉编译环境。
- **编译过程**:包括binutils、gcc、glibc等多个阶段。
- **常用工具介绍**:
- **arm-linux-gcc的使用**:进行C/C++源代码的编译。
- **arm-linux-ar和arm-linux-ranlib的使用**:处理静态库文件。
- **arm-linux-objdump的使用**:反汇编二进制文件。
- **arm-linux-readelf的使用**:查看ELF文件格式信息。
- **arm-linux-copydump的使用**:复制调试信息。
- **ARM GNU常用汇编语言介绍**:
- **伪指令介绍**:如数据定义、地址计算等。
- **专有符号**:表示特定含义的符号。
- **操作码**:执行特定功能的机器指令。
- **可执行生成说明**:
- **lds文件说明**:定义了程序的内存布局。
- **主要符号说明**:如入口点等。
- **段定义说明**:指定了不同类型的程序段如何放置在内存中。
#### 五、u-boot移植
##### 1. **u-boot移植过程**
- **环境**:确保开发主机满足移植所需条件。
- **步骤**:
- **修改Makefile**:调整编译规则以适应新平台。
- **在board子目录中建立crane2410**:存放针对crane2410平台的相关文件。
- **在include/configs/中建立配置头文件**:定义硬件特性、配置选项等。
- **指定交叉编译工具**:配置make命令使用的工具链路径。
Linux系统移植涉及多个层面的工作,包括但不限于硬件准备、软件环境搭建、工具选择与配置、Bootloader与内核的移植等。通过详细的学习和实践,可以掌握这一复杂而重要的技术过程。
Linux 系统移植
目 录
第一部分 前言....................................................................................................................................8
1 硬件环境......................................................................................................................................8
1.1 主机硬件环境.......................................................................................................................8
1.2 目标板硬件环境...................................................................................................................8
1.3 工具介绍...............................................................................................................................8
2 软件环境.......................................................................................................................................8
2.1 主机软件环境.......................................................................................................................8
2.1.1 Windows 操作系统.......................................................................................................8
2.1.2 Linux 操作系统 .......................................................................................................8
2.1.3 目标板最后运行的环境...............................................................................................9
2.2 Linux 下工作用户及环境....................................................................................................9
2.2.1 交叉工具的安装...........................................................................................................9
2.2.2 u-boot 移植工作目录....................................................................................................9
2.2.3 内核及应用程序移植工作...........................................................................................9
2.3 配置系统服务.....................................................................................................................10
2.3.1 tftp 服务器的配置.......................................................................................................10
2.4 工具使用.............................................................................................................................12
2.4.1 minicom 的使用..........................................................................................................12
3 作者介绍....................................................................................................................................13
3.1 策划, 组织, 指导, 发布者...................................................................................................13
3.2 ADS bootloader 部分..........................................................................................................13
3.3 交叉工具部分.....................................................................................................................13
3.4 uboot 部分...........................................................................................................................13
3.5 内核部分.............................................................................................................................13
3.6 应用程序部分.....................................................................................................................13
3.7 网卡驱动部分.....................................................................................................................13
3.8 Nand Flash 驱动部分.........................................................................................................13
第二部分 系统启动 bootloader 的编写(ADS).................................................................................14
1 工具介绍....................................................................................................................................14
1.1 ADS 命令行命令介绍........................................................................................................14
1.1.1 armasm........................................................................................................................14
1.1.2 armcc, armcpp.............................................................................................................14
1.1.3 armlink.........................................................................................................................14
2 基本原理....................................................................................................................................15
2.1 可执行文件组成及内存映射.............................................................................................15
2.1.1 可执行文件的组成.....................................................................................................15
2.1.2 装载过程.....................................................................................................................16
2.1.3 启动过程的汇编部分.................................................................................................17
2.1.4 启动过程的 C 部分.....................................................................................................17
3 AXD 的使用以及源代码说明...................................................................................................18
3.1 源代码说明.........................................................................................................................18
3.1.1 汇编源代码说明.........................................................................................................18
3.1.2 C 语言源代码说明......................................................................................................23
3.1.3 源代码下载.................................................................................................................23
3.2 AXD 的使用.......................................................................................................................23
3.2.1 配置仿真器.................................................................................................................23
3.2.2 启动 AXD 配置开发板...............................................................................................23
第三部分 GNU 交叉工具链.............................................................................................................25
1 设置环境变量,准备源码及相关补丁...................................................................................25
1.1 设置环境变量.....................................................................................................................25
1. 2 准备源码包............................................................................................................................25
1.2.1 binuils..........................................................................................................................25
1.2.2 gcc...............................................................................................................................25
1.2.3 glibc.............................................................................................................................25
1.2.4 linux kernel..................................................................................................................26
1.3 准备补丁.............................................................................................................................26
1.3.1 ioperm.c.diff................................................................................................................26
1.3.2 flow.c.diff....................................................................................................................26
1.3.3 t-linux.diff....................................................................................................................26
1.4 编译 GNU binutils...........................................................................................................26
1.5 准备内核头文件.................................................................................................................26
1.5.1 使用当前平台的 gcc 编译内核头文件......................................................................26
1.5.2 复制内核头文件.........................................................................................................27
1.6 译编 glibc 头文件.............................................................................................................27
1.7 编译 gcc 第一阶段............................................................................................................27
1.8 编译完整的 glibc..............................................................................................................27
1.9 编译完整的 gcc.................................................................................................................28
2 GNU 交叉工具链的下载...........................................................................................................28
2.1 ARM 官方网站...................................................................................................................28
2.2 本文档提供的下载.............................................................................................................28
3 GNU 交叉工具链的介绍与使用...............................................................................................29
3.1 常用工具介绍.....................................................................................................................29
3.2.1 arm-linux-gcc 的使用.................................................................................................29
3.2.2 arm-linux-ar 和 arm-linux-ranlib 的使用..................................................................30
3.2.3 arm-linux-objdump 的使用.........................................................................................30
3.2.4 arm-linux-readelf 的使用............................................................................................31
3.2.6 arm-linux-copydump 的使用......................................................................................32
4 ARM GNU 常用汇编语言介绍.................................................................................................32
4.1 ARM GNU 常用汇编伪指令介绍.....................................................................................32
4.2 ARM GNU 专有符号.........................................................................................................33
4.3 操作码.................................................................................................................................33
5 可执行生成说明........................................................................................................................33
5.1 lds 文件说明.......................................................................................................................33
5.1.1 主要符号说明.............................................................................................................33
5.1.2 段定义说明.................................................................................................................34
第四部分 u-boot 的移植...................................................................................................................35
1 u-boot 的介绍及系统结构.........................................................................................................35
1.1 u-boot 介绍.........................................................................................................................35
1.2 获取 u-boot.........................................................................................................................35
1.3 u-boot 体系结构.................................................................................................................35
1.3.1 u-boot 目录结构..........................................................................................................35
2 uboot 的启动过程及工作原理...................................................................................................36
2.1 启动模式介绍.....................................................................................................................36
2.2 阶段 1 介绍.........................................................................................................................36
2.2.1 定义入口.....................................................................................................................36
2.2.2 设置异常向量.............................................................................................................37
2.2.3 设置 CPU 的模式为 SVC 模式..................................................................................37
2.2.4 关闭看门狗.................................................................................................................37
2.2.5 禁掉所有中断.............................................................................................................37
2.2.6 设置以 CPU 的频率....................................................................................................37
2.2.7 设置 CP15...................................................................................................................37
2.2.8 配置内存区控制寄存器.............................................................................................38
2.2.9 安装 U-BOOT 使的栈空间........................................................................................38
2.2.10 BSS 段清 0................................................................................................................38
2.2.11 搬移 Nand Flash 代码...............................................................................................39
2.2.12 进入 C 代码部分.......................................................................................................39
2.3 阶段 2 的 C 语言代码部分 .............................................................................................39
2.3.1 调用一系列的初始化函数.........................................................................................39
2.3.2 初始化网络设备.........................................................................................................41
2.3.3 进入主 UBOOT 命令行..............................................................................................41
2.4 代码搬运.............................................................................................................................41
3 uboot 的移植过程.......................................................................................................................42
3.1 环境.....................................................................................................................................42
3.2 步骤.....................................................................................................................................42
3.2.1 修改 Makefile..............................................................................................................42
3.2.2 在 board 子目录中建立 crane2410.............................................................................42
3.2.3 在 include/configs/中建立配置头文件......................................................................42
3.2.4 指定交叉编译工具的路径.........................................................................................42
3.2.5 测试编译能否成功.....................................................................................................42
3.2.6 修改 lowlevel_init.S 文件...........................................................................................43
3.2.9 UBOOT 的 Nand Flash 移植......................................................................................45
3.2.8 重新编译 u-boot..........................................................................................................45
3.2.9 把 u-boot 烧入 flash....................................................................................................45
4 U-BOOT 命令的使用................................................................................................................46
4.1 U-BOOT 命令的介绍.........................................................................................................46
4.1.1 获得帮助信息.............................................................................................................46
4.2 常用命令使用说明.............................................................................................................47
4.2.1 askenv(F).....................................................................................................................47
4.2.2 autoscr.........................................................................................................................47
4.2.3 base ...........................................................................................................................47
4.2.4 bdinfo...........................................................................................................................47
4.2.5 bootp............................................................................................................................47
4.2.8 tftp(tftpboot)................................................................................................................48
4.2.9 bootm...........................................................................................................................48
4.2.10 go...............................................................................................................................48
4.2.11 cmp .........................................................................................................................48
4.2.12 coninfo .....................................................................................................................48
4.2.13 cp...............................................................................................................................48
4.2.14 date............................................................................................................................49
4.2.15 erase(F)......................................................................................................................49
4.2.16 flinfo(F).....................................................................................................................49
4.2.17 iminfo........................................................................................................................49
4.2.18 loadb..........................................................................................................................49
4.2.19 md..............................................................................................................................49
4.2.20 mm ............................................................................................................................50
4.2.21 mtest .......................................................................................................................50
4.2.22 mw.............................................................................................................................50
4.2.23 nm ...........................................................................................................................50
4.2.24 printenv......................................................................................................................50
4.2.25 ping ..........................................................................................................................51
4.2.26 reset...........................................................................................................................51
4.2.27 run ...........................................................................................................................51
4.2.28 saveenv(F).................................................................................................................51
4.2.29 setenv.........................................................................................................................51
4.2.30 sleep...........................................................................................................................51
4.2.31 version.......................................................................................................................51
4.2.32 nand info....................................................................................................................51
4.2.33 nand device <n>........................................................................................................51
4.2.34 nand bad....................................................................................................................51
4.2.35 nand read...................................................................................................................52
4.2.36 nand erease................................................................................................................52
4.2.37 nand write..................................................................................................................52
4.3 命令简写说明.....................................................................................................................52
4.4 把文件写入 NandFlash.......................................................................................................53
4.5 下载提供.............................................................................................................................53
5 参考资料....................................................................................................................................53
第五部分 linux 2.6 内核的移植.......................................................................................................53
1 内核移植过程............................................................................................................................53
1.1 下载 linux 内核...................................................................................................................53
1.2 修改 Makefile.....................................................................................................................53
1.3 设置 flash 分区...................................................................................................................54
1.3.1 指明分区信息.............................................................................................................54
1.3.2 指定启动时初始化.....................................................................................................56
1.3.3 禁止 Flash ECC 校验 ................................................................................................56
1.4 配置内核.............................................................................................................................56
1.4.1 支持启动时挂载 devfs................................................................................................56
1.4.2 配置内核产生.config 文件.........................................................................................57
1.4.3 编译内核.....................................................................................................................58
1.4.4 下载 zImage 到开发板................................................................................................58
2 创建 uImage................................................................................................................................61
2.1 相关技术背景介绍.............................................................................................................61
2.2 在内核中创建 uImage 的方法...........................................................................................61
2.2.1 获取 mkimage 工具.....................................................................................................61
2.2.2 修改内核的 Makefile 文件.........................................................................................61
3 追加实验记录.............................................................................................................................62
3.1 移植 linux-2.6.15.7..............................................................................................................62
3.2 移植 linux-2.6.16.21............................................................................................................62
3.3 移植 linux-2.6.17................................................................................................................62
4 参考资料....................................................................................................................................62
第六部分 应用程序的移植..............................................................................................................63
1 构造目标板的根目录及文件系统.............................................................................................63
1.1 建立一个目标板的空根目录.............................................................................................63
1.2 在 my_rootfs 中建立 Linux 目录树...................................................................................63
1.3 创建 linuxrc 文件................................................................................................................63
2 移植 Busybox.............................................................................................................................64
2.1 下载 busybox......................................................................................................................64
2.3 编译并安装 Busybox..........................................................................................................65
3 移植 TinyLogin...........................................................................................................................66
3.1 下载.....................................................................................................................................66
3.2 修改 tinyLogin 的 Makefile................................................................................................66
3.3 编译并安装.........................................................................................................................66
4 相关配置文件的创建................................................................................................................66
4.1 创建帐号及密码文件.........................................................................................................66
4.2 创建 profile 文件................................................................................................................67
剩余94页未读,继续阅读
资源推荐
资源评论
2018-08-17 上传
5星 · 资源好评率100%
105 浏览量
2021-01-05 上传
138 浏览量
111 浏览量
5星 · 资源好评率100%
175 浏览量
2021-09-06 上传
2021-09-06 上传
5星 · 资源好评率100%
162 浏览量
2021-09-06 上传
174 浏览量
2009-08-04 上传
2021-09-06 上传
2009-03-18 上传
资源评论
- yofee2012-11-20很不错,好多人推荐,看了内容,比较全,也比较清晰,推荐下载
- wushuang20042012-03-14内容全,很基础 适合初学者
hushaozhongustc
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功