文档库 最新最全的文档下载
当前位置:文档库 › 基于S3C2440的嵌入式Linux操作系统移植

基于S3C2440的嵌入式Linux操作系统移植

基于S3C2440的嵌入式Linux操作系统移植Embedded Linux system migrating based on S3C2440

基于S3C2440的嵌入式Linux操作系统移植

【摘要】主要研究基于友善之臂公司的QQ2440V3开发板平台,它的内核模块是采用ARM920T核的CPU,外部有64M的SDRAM、64M的Nand Flash以及2M的Nor Flash。基板模块集成了串口、网卡、鼠标、键盘、LCD、声卡等多种接口,该平台是目前国内性价比比较高的一款开发板,适合研究学习网络,智能终端等技术。

本文主要是在Vmware虚拟环境下安装Linux操作系统,并构建交叉编译开发平台,从而探讨和分析了Linux交叉开发环境及内核的移植过程。论文首先提出了在QQ2440V3平台上移植Linux2.6内核的主要任务,针对此任务,对嵌入式软件平台的构建进行了详尽的剖析,包括:安装交叉编译工具、配置串口控制台工具、配置主机TFTP和NFS服务等。深入探讨了Boot Loader的启动方式和启动过程,并给出了vivi和U-Boot两种启动引导代码Boot Loader的编译移植方案。分析了嵌入式Linux的体系结构、设备驱动的配置以及如何定制Linux内核,然后对根目录进行定制,最后,在此基础上,对Linux系统和设备驱动进行了配置和移植,为QQ2440V3平台提供了操作系统的支持,从而达到了学习和研究的目的。

【关键词】嵌入式系统; Linux; QQ2440V3; ARM; 内核; 驱动; 移植

Embedded Linux system migrating based on S3C2440

【Abstract】The research and development is mainly based on QQ2440V3 platform of the Friendlyarm C ompany. It’s core module adopt ARM920T’s CPU,it has 64M SDRAM, 64M Nand Flash and 2M Nor Flash. The Baseboard integrated many devices,such as serial port, network card, LCD, keyboard, mouse and audio card interface etc. This platform is substantial for domestic ARM lovers to study and research.

Here we mainly install a Linux system on VMware. Then the cross compile environment was constructed on it to analyze the porting and development environment of the Linux kernel. Firstly the migrating Linux2.6 to QQ2440 platform is given out, then the organization of the embedded software is analyzed, including installing of cross compile tools、configuration of serial terminal、configuration of TFTP and NFS services. Also two kinds of Boot Loader porting method are given out. Then the booting mode and course are deeply analyzed. After that The Architecture of embedded Linux and device drivers are expounded, and the root file system was made. At the end, we complete our task, providing the QQ2440 a embedded Linux operating system.

【keywords】Embedded operating system; Linux; QQ2440V3; ARM; kernel; drivers; migrating

目录

引言 (1)

第一章绪论 (2)

1.1 嵌入式操作系统概述 (2)

1.2 嵌入式操作系统的特点 (2)

1.3 嵌入式Linux (2)

1.4 嵌入式微处理器 (3)

1.5 ARM与Linux (4)

第二章目标平台 (5)

2.1 目标硬件平台结构 (5)

2.1.1 QQ2440V3开发板硬件资源 (6)

2.1.2 开发板设置及连接 (7)

2.2 ARM微处理器 (7)

2.2.1 ARM体系结构的发展 (7)

2.2.1 ARM的体系结构的特征 (8)

2.3 ARM9系列特性 (8)

2.3.1ARM920T体系结构 (8)

2.3.2 ARM920T的主要特点 (9)

2.3.3 ARM920T内核编程模式 (9)

2.4 S3C2440A微处理器 (9)

第三章嵌入式Linux系统的软件开发环境 (11)

3.1 交叉开发环境 (11)

3.1.1目标板与主机之间的连接 (11)

3.1.2文件传输 (11)

3.1.3 网络文件系统 (12)

3.2 建立交叉开发平台的几种方案 (12)

3.3 安装Linux操作系统 (13)

3.4 交叉编译工具 (13)

3.5主机交叉环境配置 (14)

3.5.1 串口控制台工具 (14)

3.5.2 配置主机的TFTP服务 (15)

3.5.3 配置主机的NFS服务 (16)

第四章Boot Loader及移植 (17)

4.1 Boot Loader (17)

4.2 Boot Loader的种类 (17)

4.3 Boot Loader的操作模式 (18)

4.3.1启动加载(Boot loading)模式 (18)

4.3.2下载(Downloading)模式 (18)

4.4 Boot Loader的启动方式 (18)

4.4.1网络启动方式 (18)

4.4.2 磁盘启动方式 (19)

4.4.3 Flash启动方式 (19)

4.4 Boot Loader的启动过程 (20)

4.4.1 Boot Loader的stage1 (20)

4.4.2 Boot Loader的stage2 (21)

4.5 Boot Loader编译与移植 (21)

4.5.1 Boot Loader之vivi (21)

4.5.2 Boot Loader之U-Boot (22)

4.6 安装Boot Loader到开发板 (25)

第五章Linux内核移植及根文件系统 (26)

5.1 Linux2.6内核新特性 (26)

5.2 Linux内核源码结构 (26)

5.3 Linux内核启动流程 (27)

5.4内核配置系统 (27)

5.5 Makefile的组织结构 (28)

5.6 配置编译内核 (29)

5.6.1移植前的准备工作 (29)

5.6.2使用默认配置文件编译内核 (29)

5.6.3 定制Linux内核 (31)

5.7 Linux根文件系统 (34)

5.7.1 Linux根文件系统目录结构 (34)

5.7.2 嵌入式文件系统 (34)

5.7.3 YAFFS文件系统映像制作 (35)

5.8 安装Linux及根文件系统到开发板 (36)

第六章总结与展望 (37)

6.1 总结 (37)

6.2 不足与展望 (37)

致谢语 (38)

参考文献 (39)

附录 (40)

引言

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它是计算机技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术等先进技术相结合后的产品。嵌入式系统一般包括嵌入式微处理器,外围硬件设备,嵌入式操作系统,和应用程序等几个部分。

数字时代的特征越来越明显,手持智能终端蓬勃发展。这些都给予了嵌入式操作系统以新的契机,尤其是Linux操作系统的发展。随着Linux 2.6内核的迅速发展,嵌入式Linux 在嵌入式领域的应用越来越广泛。Linux具有源代码开放、内核稳定高效、软件丰富、支持处理器结构和硬件平台类型多、可定制性好,可移植性高等特点。本课题主要研究在以高性能的32位ARM9处理器为核心的QQ2440V3硬件开发平台上移植嵌入式Linux操作系统与文件系统以及相关的设备驱动等。在嵌入式移植过程中,还需要移植合适的引导装载程序(Boot Loader),引导装载程序和系统硬件紧密相关,它们不仅与处理器的体系结构有关,而且还需要根据系统的硬件配置对引导装载程序进行配置,主要是设置处理器参数、内存地址分配、内存空间的映射、加载操作系统内核等。Linux内核的配置、移植,将主要是修改内核源代码树中各个文件夹下的配置文件,合理组织新的驱动程序,根据配置进行条件编译、连接,最终生成内核映像文件。根文件系统负责以文件的方式管理系统的各种资源。

第一章绪论

1.1 嵌入式操作系统概述

嵌入式操作系统的发展经历了几个比较明显的阶段,最先是无操作系统的嵌入算法阶段,是以单芯片为核心的可编程控制器形式的系统;然后发展为以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统;之后便是通用的嵌入式实时操作系统阶段,是以嵌入式操作系统为核心的嵌入式系统。这一阶段嵌入式操作系统的主要特点是:兼容性好、内核精小、效率高,并且具有高度的模块化和扩展性;现在正在迅速发展的基于Internet 为标志的嵌入式系统,是嵌入式系统的趋势。随着Internet 的发展以及Internet 技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。

1.2 嵌入式操作系统的特点

目前,就普遍的定义认为,嵌入式操作系统具有以下的主要特征:

(1)嵌入式系统是面向特定应用的。嵌入式处理器大多数都是专门为特定应用设计的,具有低功耗,体积小,集成度高等特点。

(2)嵌入式系统的硬件和软件都是可定制的。

(3)实时性,即在确定的时间内响应某个事件的特性。

(4)嵌入式系统不比与一般的应用软件它具有相当长的生命周期。

(5)嵌入式系统软件一般都固化在存储器芯片或单片机中,而非磁盘等存储载体上。

(6)嵌入式系统本身不具备开发承载能力。在设计完成以后,如果需要对其进行修改、升级换代等,也必须借助于开发工具和环境。

据调查,目前已有的嵌入式操作系统有两百多种,并且随着嵌入式领域的不断发展,各种各样的嵌入式操作系统还在不断的相继问世,其中比较著名的嵌入式操作系统有μC/OS、VxWorks、Neculeus、Linux和Windows。

1.3 嵌入式Linux

所谓嵌入式Linux,是指Linux在嵌入式系统中的应用。在所有的操作系统中,Linux 操作系统是一个发展最快,应用最广泛的操作系统,由于Linux系统的优良特性,使得其成为嵌入式开发中的首选。随着嵌入式Linux的不断成熟,以及其对更小尺寸和更多类型的处理器支持,使得嵌入式Linux操作系统迈入了嵌入式系统的主流。

在嵌入式领域,Linux表现出强大而完备的性能,其优势主要体现在以下几点:

(1)Linux是开放源代码的,不在存黑箱技术。系统升级、软件移植方便。只要遵循GPL的相关规定就可以免费得到Linux内核的完整源代码,不用支付版权税,可以根据具体的系统进行裁减和优化,这对于构建嵌入式系统具有重要的意义。

(2)由于Linux是开放的操作系统,比较容易实现产品定制。内核可裁剪,功能可定制。Linux的内核采用模块化设计,模块可以根据需要加载和卸除。这就使得开发人员可以针对自己的系统来编译自己的内核,运行所需资源少,十分适合嵌入式应用。

(3)Linux的源代码随处可得,注释丰富,文档齐全,易于解决各种问题,由全世界的自由软件开发者为嵌入式Linux提供技术支持,网络资源得天独厚。

(4)Linux的内核非常稳定,性能高效、多任务。

(5)Linux是一个跨平台的系统,支持多种CPU。最新的Linux内核支持Intelx86、Motorola/IBM、PowerPC、ARM(Advanced RISC Machines)、Compaq(DEC)Alpha IA 64、S/390SuperH等微处理器体系结构。Linux还可以在没有MMU(Memory Management Unit)的处理器上运行,这就使得在嵌入式领域没有MMU的处理器得到相当广泛的应用。

当下主流的嵌入式Linux系统有μClinux,RTlinux和RTAI,MontaVistaLinux,以及LynxOS操作系统。

μClinux设计的目标平台是那些不具有内存管理单元(MMU)的微处理芯片,为了达到嵌入式系统的要求,μClinux还改写和裁剪了大量Linux内核代码以缩小内核体积,使得其内核远远小于标准Linux的内核,但是它仍然保持了Linux操作系统几乎所有的优秀特性,包括稳定,强大的网络功能,出色的文件系统支持。

RTlinux并没有对Linux内核作大的改动,而是利用Linux内核模块机制,采用插入模块的方式,通过一个独立的内核来管理实时任务,在加载了RTlinux内核之后,原来的Linux内核就作为实时操作系统的一个空闲任务,仅当没有实时任务要运行时才执行,Linux 任务从不阻塞中断,也不阻止其他进程从自己的手中抢占处理机资源RTLinux使用的关键技术是中断控制硬件的软件模仿,当Linux使硬件中断无效时,实时系统将阻止这个请求,记录它,然后返回Linux。

MontaVista Linux是全球三大嵌入式Linux操作系统及解决方案供应商之一的Monta Vista Software公司于1999年推出的,其重点考虑的是小内存,确保响应,高可用性等。Monta Vista Linux的最新版本Monta Vista 2.0,它采用标准Linux内核2.4.2,并进行了高度的裁剪和配置,使其成为高稳定性,性能突出的一款出色的嵌入式操作系统。

LynxOS是一个针对有强实时性要求的嵌入式应用的实时操作系统(RTOS),它是一个结合了性能,可靠性,开放性与可扩展性的硬实时RTOS,LynxOS体系结构的高度模块化使它具有很强的可扩展性并且易于配置。

1.4 嵌入式微处理器

嵌入式微处理器(Microprocessor Unit,MPU)由通用计算机中的CPU演变而来。与通用计算机中的CPU不同的是,在嵌入式应用中,将微处理器装在专门设计的电路板上,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。此外,嵌入式微处理器在工作温度、抗电磁干扰、可靠性等方面相对通用计算机中的CPU都做了各种增强。

目前主要的嵌入式微处理器有X86、ARM、MIPS、PowerPC等系列。

1.5 ARM与Linux

在32位RISC处理器的领域,基于ARM的结构体系在嵌入式系统中发挥了重要的作用,ARM处理器和嵌入式Linux的结合也越来越紧密,并在嵌入式领域得到了广泛的应用,早在1994年,Linux就可在ARM架构上运行,时至今日,在各式各样的便携式消费类电子产品,网络,无线设备,汽车,医疗和存储产品内,都可以看到ARM与Linux相结合的身影。

ARM结构体系历经多年的发展产生出很多版本,目前Linux几乎对ARM不同系列的处理器都有了相应的支持,此外Linux对于自己在ARM规划蓝图中获得定义的新特征也有相应的支持。

第二章目标平台

在进行嵌入式开发时,选择合适的开发平台是一个很重要的环节,开发板可以为用户提供基本的底层硬件,系统和驱动等资源。考虑到诸如开发成本,资源特性要求,周期,技术支持程度等的不同,即使是基于同一款处理器的开发板也会因为开发的目的不同而不同。

本论文的研究课题是基于ARM9的嵌入式Linux系统移植。选择广州友善之臂计算机有限公司的QQ2440V3作为我们的研究平台,该开发板是基于Samsung 2440处理器的开发平台,具有完备的硬件资源和丰富的软件资源包,为我们进行嵌入式开发技术研究提供了一个较理想的平台。

2.1 目标硬件平台结构

QQ2440V3是一款低价实用的ARM9开发板,是目前国内性价比最高的一款学习板。它采用Samsung S3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。QQ2440的PCB采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性。

图2.1 QQ244 0V3开发板

2.1.1 QQ2440V3开发板硬件资源

(1)CPU处理器

— Samsung S3C2440A,主频400MHZ,最高533MHZ

(2)SDRAM内存

—在板64M SDRAM

— 32bit数据总线

— SDRAM时钟频率高达100MHZ

(3)FLASH存储

—在板64M Nand Flash, 掉电非易失

—在板2M Nor Flash,掉电非易失,已经安装BIOS

(4)LCD显示

—板上集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏

—支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,尺寸从3.5寸到12.1

寸,屏幕分辨率可以达到1024x768象素;

—支持黑白、4级灰度、16级灰度、256色、64K色、真彩色TFT液晶屏,尺寸从3.5寸

到12.1寸,屏幕分辨率可以达到1024x768象素;

—标准配置为NEC 256K色240x320/3.5英寸TFT真彩液晶屏,带触摸屏;

—板上引出一个12V电源接口,可以为大尺寸TFT液晶的12V CCFL背光模块(Inverting)供电。

(5)接口和资源

— 1个10M以太网RJ—45接口(采用CS8900网络芯片)

— 3个串行口

— 1个USB Host

— 1个USB Slave B型接口

— 1个SD卡存储接口

— 1路立体声音频输出接口,一路麦克风接口;

— 1个2.0mm间距20针标准JTAG接口

— 4 USER Leds

— 4 USER buttons

— 1个PWM控制蜂鸣器

— 1个可调电阻,用于AD模数转换测试

— 1个I2C总线AT24C08芯片,用于I2C总线测试

— 1个20pin 摄像头接口

—板载实时时钟电池

—电源接口(12V),带电源开关和指示灯

(6)系统时钟源

— 12M无源晶振

(7)实时时钟

—内部实时时钟(带后备锂电池)

(8)扩展接口

— 1个34 pin 2.0mmGPIO接口

— 1个44 pin 2.0mm 系统总线接口

(9)操作系统支持

— Linux2.6.13

— https://www.wendangku.net/doc/836121850.html, 4.2

2.1.2 开发板设置及连接

● 跳线说明。QQ2440V3开饭板上有两个跳线,分别为J1和J6。J1为启动模式选择跳线。当J1接到Nor Flash一侧时,系统从Nor Flash启动,接到另一侧是则从Nand Flash启动。在NAND Flash启动模式下,内部的4K Bytes BootSram被映射到nGCS0片选的空间;在Nor Flash启动模式下与nGCS0 相连的外部存储器Nor Flash就被映射到nGCS0 片选的空间。J6为LCD模块电源选择跳线,当选择5V一侧的两针时,为LCD模块提供5V

电压,当选择另一侧时,则提供3V电压。

● 外部接口连接。使用开发板自带的直连串口线连接QQ2440V3 的串口0 和PC机的串口;交叉网线将QQ2440V3 的网络接口与PC相连;将12V电源适配器连接到板上的12V输入插座;把音箱或者耳机的插头接入板上的音频输出口;液晶屏与QQ2440V3 的LCD接口相连;并用USB电缆连接QQ2440V3和PC。

2.2 ARM微处理器

2.2.1 ARM体系结构的发展

ARM(Advanced RISC Machines)是一种低功耗高性能的32位处理器,它以其体积小,低功耗,低成本,高性能等诸多优异性能获得了众多处理器厂商的支持,从而得到了非常广泛的应用。目前为止,ARM体系结构共定义了6个版本,每一次ARM体系结构的重大修改,都会添加一些非常关键的技术。

ARM处理器从V3结构开始,实现了32位的地址空间,指令结构更完善,V4结构增加了半字节指令的读取和写入操作和处理器系统模式,V5结构则提升了ARM和Thumb 两种指令的交互工作能力,同时对DSP和Java指令也有了相应的支持,最新的V6结构增加了媒体指令。其中比较典型的ARM处理器如:ARM7采用3级流水线结构,采用冯·诺

依曼体系结构;ARM9采用5级流水线,采用哈佛体系结构;ARM10采用6级流水线。

2.2.1 ARM的体系结构的特征

ARM处理器采用了RISC体系结构,因此秉承了大部分早期RISC体系结构的特征,如32位指令、Load/Store体系结构等。

(1)指令周期

ARM被设计为使用最少的时钟周期来访问存储器,但并不是所有指令都单周期执行。如在低成本领域中普遍使用的ARM7TDMI,数据和指令占有同一总线,使用同一存储器时,即使最简单的Load和Store指令也最少需要访问2次存储器(1次取指令,1次数据读/写)。因此,并不是所有ARM指令都在单一时钟周期内执行的,少数指令需要多个时钟周期。高性能的ARM9TDMI使用分开的数据和指令寄存器,能够实现指令的单周期执行。

(2)Load/Store指令结构

ARM 微处理器采用加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。面向运算的所有操作都在寄存器中执行,加快运算速度。

2.3 ARM9系列特性

ARM9能够运行在比ARM7更高的时钟频率上,处理器的整体性能也得到改善,存储器系统也根据哈佛体系结构重新设计,区分了指令总线和数据总线。增加的流水线设计提高了时钟频率和并行处理能力。ARM9采用了5级指令流水线,能够将每一个指令处理分配到5个时钟周期内,也就是说在每一个时钟周期内同时有5个指令在执行。

2.3.1ARM920T体系结构

ARM920T是ARM9系列的第一个处理器,它采用五级流水线,如下图:

取指译码执行存储器写

图2.2 ARM920T的五级流水线

(1)取指:从存储器中取出指令,并将其放过指令流水线。

(2)译码:对指令进行译码。

(3)执行:把一个操作数移位,产生ALU的结果。

(4)缓冲/数据:如果需要,则访问数据存储器;否则ALU的结果只是简单缓冲1个始终周期,以便所有的指令具有同样的流水线流程。

(5)回写:将指令产生的结果回写到寄存器,包括任何从存储器中读取的数据。

2.3.2 ARM920T的主要特点

(1)改进型ARM/Thumb代码交织,增强性乘法器设计。

(2)片内指令和数据SRAM,而且指令和数据的存储器容量可调。

(3)片内指令和数据高速缓冲器(cache)容量从4K字节到1M字节。

(4)设置保护单元(protection unit),适合嵌入式应用中对存储器进行分段和保护。

(5)采用AMBA AHB总线接口,为外设提供统一的地址和数据总线。

(6)支持外部协处理器,指令和数据总线有简单的握手信令支持。

(7)支持实时(real-time)调试。

(8)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。

2.3.3 ARM920T内核编程模式

(1)ARM处理器的工作状态

ARM微处理器的工作状态一般有ARM状态和Thumb状态两种,并可在两种状态之间切换,当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

(2)ARM体系结构的存储器格式

ARM体系结构将存储器空间从零地址开始,ARM体系结构所支持的最大寻址空间为4GB。

(3)指令长度及数据类型

ARM微处理器的指令长度可以是32位,也可以为16位,ARM微处理器支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。

(4)处理器模式

ARM微处理器支持7种运行模式,分别为:

─ 用户模式(usr):ARM处理器正常的程序执行状态

─ 快速中断模式(fiq):用于高速数据传输或通道处理

─ 外部中断模式(irq):用于通用的中断处理

─ 管理模式(svc):操作系统使用的保护模式

─ 数据访问终止模式(abt):当数据或指令预取终止时进入该模式

─ 系统模式(sys):运行具有特权的操作系统任务

─ 未定义指令中止模式(und):当未定义的指令执行时进入该模式

2.4 S3C2440A微处理器

(1)内部高级微控制总线(AMBA)体系结构,特别加强的ARM体系结构MMU用

于支持WinCE和Linux。

(2)系统管理器支持大/小端方式,支持高速总线模式和异步总线模式,其寻址空间每bank 128M字节,总共有8个bank。其中6个适用于ROM,SRAM,另外2 个适用于ROM/SRAM 和同步DRAM,所有的存储器bank 都具有可编程的操作周期。

(3)支持NAND Flash 存储器的启动,采用4KB内部缓冲器进行启动引导,并且能够在启动之后把NAND存储器仍然作为外部存储器使用。

(4)Cache存储器采用I—Cache(16KB)和D—Cache(16KB),同时使用伪随机数或轮转循环替换算法位以及写穿式或写回式缓存操作来更新主存储器。

(5)时钟采用片上MPLL和UPLL芯片时钟,可以通过软件有选择性的为每个功能模块提供时钟。

(6)S3C2440有以下几种模式:

—电源模式:正常,慢速,空闲和掉电模式

—正常模式:正常运行模式

—慢速模式:不加PLL 的低时钟频率模式

—空闲模式:只停止CPU 的时钟

—掉电模式:所有外设和内核的电源都切断了。

第三章嵌入式Linux系统的软件开发环境

软件开发平台是嵌入式开发的关键,由于嵌入式硬件平台的存储空间有限、处理器频率较低,很难直接在嵌入式硬件式平台上建立Linux系统、安装嵌入式开发软件,因此只能采用嵌入式交叉开发环境来解决这个问题。通过建立开发环境我们才能更方便的进行Boot Loader移植、Linux内核移植以及GUI系统开发等。

3.1 交叉开发环境

由于嵌入式系统的硬件资源的局限性,在嵌入式系统的开发过程,通常都要借助于交叉开发环境,这样我们可以在开发主机上安装开发工具,编辑,编译目标的引导程序,内核和文件系统,然后在目标板上调试运行。

交叉开发方式的好处是:一方面开发者可以在熟悉的主机环境下进行程序开发;另外一方面可以真实地在目标板上调试运行程序,可以避免受到目标板硬件的限制。

3.1.1目标板与主机之间的连接

目标板与主机之间的连接有串口,以太网接口,USB接口以及JTAG几口等连接方式。

(1)串行通讯接口。常用9针串口和25针串口。通过串口可以作为控制台,向目标板发送命令,显示信息;也可以通过串口传送文件以及调试内核及程序。通常串口设备的驱动实现比较简单,

缺点是通讯网络速率慢,不适合大数据量传输。

(2)以太网接口。以太网高度灵活,相对简单,易于实现等特点,是当今最重要的一种局域网组网技术。网络接口一般采用RJ-45标准插头,PC机上一般都配置10M/100M 以太网卡,通过以太网连接和网络协议,可以实现快速的数据通讯和文件传输。

缺点是驱动程序实现比较麻烦。

(3)USB接口。USB(Universal Serial Bus)接口,支持热拔插,具有即插即用的优点,支持热拔插,通讯速率也很快。

缺点是USB设备分主从端,两端分别要有不同的驱动程序支持。

(4)JTAG等接口。JTAG是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路测试接口,通过JTAG测试工具对芯片的核进行测试。

目前大多数比较复杂的器件都支持JTAG协议,如ARM,DSP,FPGA器件等,标准的JTAG接口是四线,TMS,TCK,TDI,TDO,分别为测试模式选择,测试时钟,测试数据输入和测试数据输出等。

3.1.2文件传输

主机端编译的Linux内核映像必须下载到目标板上执行,通常是由目标板的引导程序

负责把主机端的映像文件下载到内存中。根据不同的连接方式,可以有多种文件传输方式。

(1)串口传输方式。主机端通过kermit、minicom、或者Windows超级终端等工具通过串口发送文件,在发送之前需要配置数据传输率和传输协议,目标板端也要做好接受准备。

(2)网络传输方式。网络传输方式一般采用TFTP(Trivial File Transport Protocol)协议。TFTP协议是一种简单的网络传输协议,基于UDP传输,没有传输控制,是一种不可靠的传输协议。但是其协议简单,容易实现。在使用TFTP传输之前,需要驱动目标板以太网接口并且配置IP地址。

(3)USB接口传输方式。USB接口方式需要在主机端安装驱动程序,识别目标板设备后,可以传输数据。

(4)JTAG接口传输方式。JTAG仿真器与主机之间的连接通常都是串口、并口、以太网接口或者USB接口。传输速率会受到主机连接方式的限制。

(5)移动存储设备。如果目标板上有软盘、CDROM、USB盘等移动存储介质,就可以制作启动盘或者复制到目标板,从而引导系统。

3.1.3 网络文件系统

NFS允许一个系统在网络上共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。NFS文件系统具有很多优点:例如,数据可以存放在一台机器上,其他机器可以通过网络访问,这样本地工作站可以使用更少的磁盘空间;用户通过网络共享目录,而不必再计算机上为每个用户都创建目录;软驱,CDROM等存储设备也可以在网络上共享使用,这样可以减少网络的移动介质设备数量。

3.2 建立交叉开发平台的几种方案

要进行嵌入式Linux系统开发,我们需要在一台装有Linux操作系统的PC机,在此PC机上运行交叉编译工具,Linux采用RedHat9.0,具体有以下几种方案: (1)采用VMWare。VMWare是一个可运行在Windows平台的“虚拟PC”软件,它可以在一台机器上同时运行二个或更多个Windows、DOS、Linux系统。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据。

VMWare主要的功能有: 不需要分区或重开机就能在同一台PC上使用两种以上的操作系统;完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料;不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能;有复原(Undo)功能;能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等。

(2)使用Cygwin。Cygwin是一个在Windows平台上运行的Unix模拟环境,是Cygnus solutions公司开发的自由软件。它对于学习Unix/Linux操作环境,或者从Unix到Windows 的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU具集在Windows上进

行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。

(3)在硬盘上的独立分区上安装Linux操作系统。

3.3 安装Linux操作系统

为了开发方便,我们选择了其中较为熟悉的的第一种和第三种方案,对于内存不小于512M和主频较高的PC机适合使用VMWare,VMWare默认使用PC机一半的内存,内存较小PC机将会运行很慢,所以配置相对较低的PC机不适合采用此方案。因为我们所在的网络问题,我们这里主要采用第一种方案进行平台研究。

在VMVare上安装Linux与普通装机大同小异,即可以设定从物理光盘安装,也可以采用使用映像ISO文件安装,这里我们使用ISO映像文件进行安装,安装光盘为RedHat9.0。下图为CD-ROM设置界面

设置好ISO映像文件后,点击开始按钮,就可以安装了,如果对Linux系统不是很熟悉,最好选择完全安装,否则在交叉编译过程中,可能会提示缺少文件。完全安装会需要较长时间,所以这里我们自定义安装,大概二十分钟即可安装完成。

安装完操作系统后,我们需要安装VMware Tools,把CD-ROM设置为VMware的安装路径(默认为“C:\Program Files\VMware\VMware Workstation”)下的Linux.iso文件,进入Linux操作系统,运行以下命令

我们可以看到有两种格式的安装包,我们选择rpm格式,安装过程如下

如果系统不支持rpm格式安装,可以使用tar格式,由于我们挂载的ISO文件是只读的,所以需要把安装包复制到工作目录,然后解压安装。

安装VMware Tools有助于我们在windows和Linux系统下共享文件,打开VMware 下新安装的Linux操作系统的设置菜单,点击option选项,在Shared Folders中设置共享目录,进入linux系统的/mnt/hgfs目录下,看有没有我们共享的文件,如果有,说明设置成功了。

3.4 交叉编译工具

由于我么的开发平台是X86体系结构,开发平台上运行的程序不能在ARM体系的处理器平台上运行,所以我们必须使用交叉编译工具链来编译程序。

ARM-Linux交叉编译工具链有不同的包装格式,RPM格式是比较常用的格式,可以

通过rpm命令很方便的进行安装,rpm是Redhat Linux上的常用命令。我们以tar格式的安装包来进行安装,tar格式的安装包可以在如下地址下载。

https://www.wendangku.net/doc/836121850.html,/pub/armlinux/toolchain/

这里我们把下载的cross-3.2.tar.bz2d安装包存放在/home/yao/arm-linux目录下,首先进行解压,命令如下:

但是因为GCC编译器的运行要依赖于其他工具和库,通常不能把这些工具放在任意目录下,一般通过相关的README或者说明文档可以得到具体的安装路径。这里我们可以通过GCC命令来获取安装路径。

从上面的打印信息中,我们可以看到“—prefix=/usr/local/arm/”,这便是GCC的安装路径。它是在GCC编译前通过prefix选项配置的、

所以我们应该把工具链安装在/usr/local/arm目录下。

然后,在环境变量PATH中添加路径

然后我们直接在命令行中输入GCC编译工具

我们看到arm-linux-gcc工具链已经安装,并且可以正常使用了。但是我们前边设置的环境变量是临时的,在下次启动机器,就会丢失。我们可以在etc目录下的profile文件中,添加如下语句

Export PATH=$PATH:/usr/local/arm/3.4.1/bin

这样我们不必在每次重启机器后再重设PATH变量了。

3.5主机交叉环境配置

3.5.1 串口控制台工具

Windows操作系统下有功能非常强大超级终端(Hyperterminal)工具,而对于Linux操作系统下可以使用minicom工具。minicom不是图形窗口的界面,相较于windows下的超级

终端配置比较麻烦,配置过程如下。

在Shell下执行“minicom -s”命令。出现如图3.2所示的配置菜单

图3.2 minicom配置菜单

选择Serial port setup进入串行口设置,我们把其中的

Serial Device 选项更改为/dev/ttyS0

把Bps/Par/Bits更改为115200 8N1

如下图3.3所示,其中ttyS0表示使用串口1,115200是波特率,8表示数据为是八位,N表示不使用奇偶校验,1表示停止位。

图3.3 minicom串行口配置

3.5.2 配置主机的TFTP服务

TFTP全称为Trivial File Transfer Protoeol及简单文件传输协议。它具有实现起来比较简单的优点。现在我们配置TFTP服务,在SHELL执行

相关文档
相关文档 最新文档