《基于S3C2440的Linux操作系统移植本科毕业设计(论文)(50页).doc》由会员分享,可在线阅读,更多相关《基于S3C2440的Linux操作系统移植本科毕业设计(论文)(50页).doc(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于S3C2440的Linux操作系统移植本科毕业设计(论文)-第 42 页本科毕业设计题 目 基于S3C2440的Linux操作系统移植 目 录摘要IAbstractII前言III1 嵌入式linux简介11.1 linux发展概述11.2 linux的优点11.3 Linux 应用领域21.4 Linux系统安装31.4.1 虚拟机安装31.4 .2 Linux安装61.5 Linux常用工具71.5.1 文本编辑器71.5.2 软件包管理81.6 Linux的常用命令82 ARM体系结构介绍142.1 ARM体系结构的发展142.2 ARM处理器简介152.2.1 ARM7处理器系列1
2、52.2.2 ARM9处理器系列152.2.3 ARM9E处理器系列152.2.4 ARM11处理器162.2.5 Cortex处理器162.3 s3c2440主要特性162.4 s3c2440存储器控制器172.4.1 S3C2440存储控制器特性172.4.2 SDRAM原理分析192.4.3 FLASH193 Bootloader原理分析和移植213.1 Bootloader概述213.2 Bootloader功能213.3 常用Bootloader223.4.Uboot移植实现223.4.1 建立交叉编译环境223.4.2 分析U-boot目录结构243.4.3 uboot编译方法25
3、4 操作系统内核的的移植264.1 Linux内核的作用264.2 Linux内核的目录结构274.3 内核文件类型284.3.1 Makefile284.3.2 .config294.3.3 kconfig294.4 配置工具294.5 Linux内核启动过程314.5.1 汇编代码执行阶段314.5.2 c 语言代码阶段314.6移植最小内核335文件系统分析与制作385.1 文件系统概述385.1.1嵌入式文件系统介绍385.1.2基于FLASH的文件系统385.2 文件系统目录结构405.3 配置编译busy-box425.3.1 busybox简介425.3.2 安装busybox4
4、25.4 制作yaffs根文件系统435.4.1 构建框架435.4.2 添加内容446 内核驱动456.1 设备驱动程序的概述456.2设备驱动程序的功能456.3设备驱动程序的结构456.4 设备驱动程序开发过程466.4.1设备驱动程序的开发流程466.4.2 模块化驱动程序设计476.5 串口驱动移植486.6 LCD驱动移植49结 论54致谢55参考文献56基于S3C2440的Linux操作系统移植摘要随着电子产业的发展和智能时代的到来,嵌入式产品以其个性化定制的特点已经深入发展到各个领域。操作系统嵌入式设计流程的重要环节,在安装操作系统后,电子产品就能像电脑一样运行各种软件,完成复
5、杂的功能。本课题研究的是将Linux系统移植到S3C2440的TQ2440开发板上,本文前两章介绍Linux操作系统、ARM体系结构的基础知识,以及系统开发工具,操作命令,交叉编译器,并且建立开发环境。之后几章分别介绍嵌入式开发的几个主要流程,包括Bootloader、内核、文件系统、驱动。将Uboot移植到tq2440上,然后移植最小系统,使开发板能够正常启动,最后是构建根文件系统、在内核中加入串口、LCD驱动,这样就可以建立一个完整的嵌入式系统,本文除了理论基础知识的讲解还有具体的操作,系统的完成了嵌入式设计的开发流程。关键词:S3C2440; Linux; 内核移植; 驱动THE LIN
6、UX OPERATING SYSTEM BASED ON S3C2440 RASPLANTATIONAbstractWith the development of electronic industry and intelligent era, embedded products with the characteristics of personalized customization has been developed into various areas. An important part of embedded operating system design process, in
7、 the installation of the operating system, electronic products can be like a computer running software, complete the complex function.This research is the TQ2440 development board Linux system porting to S3C2440, basic knowledge of the first two chapters introduced the Linux operating system, ARM sy
8、stem structure, as well as the system development tool, operation command, compiler, and the establishment of the development environment. After a few chapter introduces several main process of embedded software, including Bootloader, kernel, file system, drive. Porting Uboot to TQ2440, and then tra
9、nsplanted the minimum system, make the development board can be a normal start, finally Gou Jiangen file system, adding serial, LCD is in the kernel driver, so you can build up a complete embedded system, in addition to this theory to explain the basic knowledge and specific operation, the system co
10、mpleted the embedded design development process.Keywords: S3C2440; Linux; kernel porting; driver.前 言通信网络技术和集成电路设计的高速发展使嵌入式系统已成为了IT业的一个焦点。回顾嵌入式技术的发展过程,早期的嵌入式系统被认为是人们熟知的单片机。通常,这种系统以8位或6位MCU为核心,适合一些简单的传感器,伺服控制,显示设备等,实现一定的测量,信息处理,自动控制和显示功能。系统的组网通常利用CAN、RS-232等总线方式,通信协议比较单一,一般孤立于Internet之外。随着嵌入式与网络技术的结合,
11、手机、PDA、路由器、Modem等复杂的高端嵌入式应用不断涌现,这使得人们需要设计更加复杂的嵌入式系统。这种需求推动了微电子技术地发展,使得32位处理器被广泛使用,这种处理器可以方便的运行嵌入式操作系统;而基于嵌入式操作系统,人们又可以开发复杂度更高的嵌入式软件,嵌入式技术的发展趋势包括行业标准化、SOC成为应用主流、嵌入式开发工具更加强大、嵌入式软件的复杂度越来越高、面向网络的嵌入式系统成为必然、建立嵌入式计算的新型模型等若干方面。嵌入式Linux在嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux的人门很难,相对于嵌入式常识的匮乏更大的困难是缺乏完善的知识结构:只了解硬件或者是只了解软件,
12、对于有志于从事底层系统开发需要,应该改造Bootloader、专研内核、为新硬件编写驱动程序的,对于想从上层软件转到底层软件开发的人,应该看懂电路原理图,看得芯片数据手册,清楚的知道软件是怎样和硬件发生作用。总之嵌入式是一门实践性很强的学科,学习不应该局限书本,书本只是辅助资料,只有不断地检测硬件调试程序才能掌握这门技术。由于Linux的开源和可移植性高的特性,以及ARM处理器,性能好价格低廉的特点,本文将会在S3C2440的tq2440上进行系统移植,主要包括:嵌入式系统Linux介绍、Bootloader原理分析和移植、操作系统内核的移植、文件系统的分析和制作、内核驱动。1 嵌入式linu
13、x简介本课题移植的是Linux操作系统内核,这里简单介绍Linux的特点,以及开发平台的建立使用。1.1 linux发展概述20世纪60年代时,大部分计算机都是采用批处理的方式。为了改变这种现状,美国电报及电话公司(AT&T),通用电器公司(GE)及麻省理工学院(MIT)计划合作开发一个多用途,及时及多用户的操作系统,也就是MUTICS.但是由于项目太过复杂,几年下来几乎没有取得任何成果,1969年贝尔实验室退出这个项目。但是贝尔实验室的有个工程师Ken Thompson为了让他的游戏运行快一点。找来一位天才工程师Dennis Ritchie,他们用汇编语言写了一个简单的操作系统Unics。1
14、973年两人发现用汇编语言移植过于困难,先后用B,C语言重写了UNIX,1978年伯克利大学,在UNIX上进行改进,推出了自己的UNIX.同时AT&T公司成立了USG将UNIX变成商品化的产品。这种商业态度,让当时许多UNIX爱好者和软件开发者感到痛心疾首和忧虑,他们觉得这种限制不利于产品的长期发展,于是一个叫做Richard Stallman的领军人物站了出来,他倡导开源概念,认为如果大家能将自己所学贡献出来,这个系统会更加优秀,之后他创立GUN,开发了一套与UNIX兼容的软件,然后又创立自由软件基金会(FSF)为GUN计划提供技术,法律以及财政支持。自20世纪90年代以来,GUN计划开始大
15、量生产或收集各种系统所必备的主件,比如函数库,变压器,调试工具,文本编辑器,网站服务器,以及一个UNIX的使用者接口。由于种种原因,GUN一直没有开发出内核,直到1991年linux内核才真正出现。之后越来越多的计算机爱好者,程序员通过网络,社区,邮件,论坛参与到linux系统的不断完善中。1.2 linux的优点(1) 低成本开发系统因为linux的代码是开源的,任何人都可以免费使用和修改。这样不仅降低了成本而且提高产品开发的效率。(2) 可用于多种处理器平台Linux可支持X86、 PowerPC、 ARM XSCALE、 MIPS 、DSP、FGPA等多种体系结构,并且已经被移植到多种硬
16、件平台。这对于受时间限制,经费的研究与项目开发是很有帮助的、Linux采用统一的标准对硬件进行管理,应用层屏蔽系统层,系统层的改动与平台改动有关,于应用无关。(3) 可定制内核Linux具有独特的内核模块动态裁剪机制,它可以根据用户的需求,实时的将某些模块插入或者删除内核,实现动态的的改变。裁剪后的内核最小可达到150KB以下,适合嵌入式项目中对系统资源有要求的情况。在2.6内核中加入了许多嵌入式个性化选项,如构建用于不需要用户界面的设备的小占板面积内核选项。(4) 性能优异Linux系统内核精简,用于网站服务器高效而且稳定稳定,能够充分发挥硬件的功能,用于个人计算机,功能丰富,界面友好易操作
17、,因此它比其它操作系统的运行效率更高。(5) 良好的网络支持Linux是第一个实现TCP/IP协议栈的操作系统,它有完整支持网络的内核结构,并提供了包括10GB,100GB以及1000GB的以太网,还有Token Ring,无线网络和光纤甚至卫星的支持。大大满足了如今嵌入式设备对网络功能的需求。1.3 Linux 应用领域(1) Internet/Intranet:这是目前Linux用得最多的一项,它可提供包括Web服务器、Gopher服务器、FTP服务器、SMTP/POP3邮件服务器、DNS服务器、Proxy/Cache服务器等全部Internet服务。Linux内核支持IPalias、PP
18、P和IPtunneling,这些功能可用于建立虚拟服务、VPN(虚拟专用网) 、虚拟主机等。主要运行于Linux之上的ApacheWeb服务器。(2) 由于Linux拥有优秀的网络功能,因此它可用于大型分布式服务,如动画制作、数据库及文件服务器科学计算等。 (3) 作为可在低平台下运行的Unix的完整(且免费)的实现,广泛应用于各级院校的教学和科研工作,如墨西哥政府已经宣布在全国的所有中小学配置Linux并为学生提供Internet服务。(4) 桌面和办公应用。目前这方面的应用微软Windows使用人数很多,其原因一方面在于Linux桌面应用软件的数量远不如Windows应用,另一方面也因为自
19、由软件的特性使得其几乎没有广告支持(虽然StarOffice的功能并不亚于MS Office,但知道的人并不多)。如今,通常可以通过两个途径获得Linux的发行版:直接从Internet下载,例如RedHat站点:;更为方便的方法是购买Linux发行商推出的CD-ROM,这样不仅可以节省下载的时间和费用,还可以使用CD-ROM直接启动快速安装,并且CD-ROM上往往还包括非常庞大的应用软件集(多达数百兆),包括各种服务器软件、X-Window、桌面应用、数据库、编程语言、文档等,安装和使用都非常方便。 1.4 Linux系统安装1.4.1 虚拟机安装虚拟机指通过软件模拟的具有硬件系统功能的,运
20、行在一个完全隔离环境中的完整计算机系统。目前流行的虚拟机软件是VMware,VirtualBox和VirualPC,他们都能在Wondows系统上虚拟个计算机。本课程安装的是VMware Workstatian6.5,安装步骤如下:(1) 双击下载好的VMware Workstatian6.5软件打开安装程序,如图1.1:图1.1 虚拟机安装界面(2) 进入图1.2所示界面。图1.2 选择典型安装(3) 选择next,进入安装界面,如图图1.3:图1.3 安装进度(4) 安装完成后,输入序列号。(5) 选择“重新启动计算机按钮”。(6) 到这里虚拟机安装完成,工作界面如图1.4:图1.4 安装
21、完成界面1.4 .2 Linux安装启动虚拟机后接着就是安装Linux系统,本课题选择的是安装Fedora10。(1) 打开虚拟机选择要安装的系统文件如图1.5:图1.5 Fedora安装文件(2) 设置虚拟机内存和网络。(3) 进入分区设置界面,挂载硬盘。(4) 进入系统安装软件界面,将系统自带的软件安装齐全,如图1.6:图1.6 系统自带软件安装(5) 软件安装之后经过一段时间的等待系统会自动安装完成。如图1.7:图1.7系统自动安装进度(6) 安装完成后,登陆配置网络。并安装虚拟机工具。(7) 在windows中新建两个文件,设置与Linux交互目录。1.5 Linux常用工具1.5.1
22、 文本编辑器(1) gedit图形化文本编辑器Gedit是一个图形化文本编辑器,像Windows中的记事本文件一样可以打开、编写并保存文本文件。还可以将其他图形化桌面程序中的文本剪切和粘贴到编辑器中。Gedit有一个清晰而又通俗易懂的界面,使用活页标签,因此可以不必同时打开多个文件打开多个gedit窗口。(2) 文本编辑器vi在Linux操作系统中,如果不使用图形化的桌面,读取并修改某个文件或配置文件,可以使用vi编辑器来创建文本文档、书写脚本、编辑文本;另外,vi编辑器的文本模式查找功能比gedit命令更加强大,它可以在日志文件中以精确的方式查找信息,并且Linux安装程序会自动安装附带的v
23、i编辑器。几乎所有的Linux用户和系统管理员都使用vi编辑器完成自己的而工作。因为vi编辑器不是图形化的软件,所以一定程度上受到了其他文本编辑器的挑战。但是vi编辑器出色的灵活性和强大的功能使它得以广泛应用。1.5.2 软件包管理Linux 系统上的所有软件部分成可安装、升级或删除的RPM软件包。这部分描述了如何使用图形化和命令行工具来管理Red Hat Linux系统上的RPM软件包。RPM软件包管理器是开放打包系统,任何人都可以使用。它在Linux和UNIX系统上运行。RedHat,Inc.鼓励其他销售商在他们自己的产品上使用RPM技术。 对于终端用户来说,RPM简化了系统更新。安装、删
24、除安装、升级RPM软件包使用简短的命令就可完成。RPM维护一个已安装软件包和它们文件的数据库,因此,可以在系统上使用功能强大的查询和校验。如果喜欢图形化界面,可以使用软件包括管理工具来执行许多RPM命令。 在升级中,RPM处理配置文件时非常谨慎,因此绝对不会丢失原先定制的配置。这是使用普通的.Tar.gz文件所无法达到的。 对于开发者来说,RPM允许用户把软件编码和程序打包,然后提供给终端用户。1.6 Linux的常用命令cd 命令:改变工作目录。 mkdir命令:创建一个目录(类似DOS下的md命令)。rmdir 命令:删除空目录。 rm命令:在linux中创建文件很容易,系统中随时会有文件
25、变得过时且毫无用处。用户可以用rm命令将其删除。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。 pwd 命令:在Linux层次目录结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录。然而,没有提示符来告知用户目前处于哪一个目录中。要想知道当前所处的目录,可以使用。pwd命令:该命令显示整个路径名。 ls 命令:ls是英文单词list的简写,其功能为列出目录的内容。这是用户使用频率最多的命令 ,因为用户需要不时地查看某个目录的内容。
26、该命令类似于DOS下的dir命令。 cp命令:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。 mv命令:用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同DOS下的ren和move的组合。ln命令:该命令在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题。 Find命令:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。 cat命令:在标准输出上显示
27、文件;连接两个或多个文件 。more命令:在终端屏幕按屏显示文本文件。 Passwd命令:用来更改使用者的密码 wh命令:该命令主要用于查看当前在线上的用户情况。这个命令非常有用。如果用户想和其他用户建立即时通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。 W命令:该命令也用于显示登录到系统的用户情况,但是与who不同的是w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细和科学,可以认为w命令
28、就是who命令的一个增强版。 chmod 命令:chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 hgrp命令:功能:改变文件或目录所属的组。 chown 命令:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。 Login命令:login的作用是登录系统,它的使用权限是所有用户。 Shutdown命令:shu
29、tdown命令的作用是关闭计算机,它的使用权限是超级用户。 Halt命令:halt命令的作用是关闭系统,它的使用权限是超级用户。 Reboot命令:reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。 Mount命令:mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。 Umount命令:umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。 Exit命令:exit命令的作用是退出系统,它的使用权限是所有用户。 Last命令:last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所
30、有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。 df命令:显示磁盘文件系统与使用状况。 top命令:实时显示 process 的动态。crontab命令:crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 kill命令:杀死僵死的进程。 Ifconfig命令:用于配置网卡。 Netstat命令:显示网络连接、路由表和网络接口信息,可
31、以让用户得知目前都有哪些网络连接正在运作。 nslookup命令:查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。 ping命令:ping命令用于查看网络上的主机是否在工作,它向该主机发送ICMP ECHO_REQUEST包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping命令查看。 mail功能:读取及发邮件。 finger命令:finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell
32、等信息。tar命令:tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。 gzip命令:gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 unzip命令:该命令用于解扩展名为.zip的压缩文件。2 ARM体系结构介绍本课题针对的是操作系统移植侧重于软件,因此关于硬件,只是简单地介绍一下ARM体系结构和和s3c2440的主要硬件。2.1 ARM体系结构的发展体系结构,定义了指令集和基于这一体系结构下处理器的编程模型。基于同种体系结构可以有多种处理器,所面向的应用领域不同,每
33、个处理器性能也就不同,但每个的实现都要遵守这一体系结构。ARM体系结构为嵌入式项目开发提供低功耗高性能的系统性能。目前ARM体系结构一共定义了8个版本,从版本1到版本8,ARM体系的指令功能不断扩大。不同系列的ARM处理器,性能差别很大,应用范围对象也不尽相同,但是,如果是相同的ARM提醒结构,那么基于它们的应用软件是兼容的。V1版本的处理器并没有实现商品化,采用是26位,寻址空间是64MB,在目前的版本中已不再是用这种结构。与V1结构的ARM处理器相比,V2结构的ARM处理器的治理结构有所完善,比如增加了乘法指令并且支持协处理器指令从V3结构开始,ARM处理器的体系结构有了很大的改变,实现了
34、32位的地址空间,指令结构相对前面两种结构有所完善。V4结构的ARM处理器增加了半字指令的读写和写入操作,增加了处理器模式,并且有了T变种V4T,在Thumb状态下支持的是16位的Thumb指令集。V5结构的ARM处理器提升了ARM和Thumb两种指令的交互能力,同时有了DSP指令V5E结构,JAVA指令V5结构的支持。V6体系结构包含ARM体系结构中所有的4种特殊指令集:Thumb指令(T),DSP指令(E),Java指令(J)和Media指令。V7架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的,并且保持了在代码对现存ARM解决方案的完整的兼容性。Thu
35、mb-2技术的代码量比纯32位代码少占用31%的内存,减少了系统资源开销,同时能提高出38%的性能。ARMv7架构还采用了NEON技术,将媒体处理能力和DSP提高了近4倍。并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制因为的需求。ARMv8架构是基于32位的ARMv7而来,保留了TrustZone安全执行环境、NEON、虚拟化等关键技术特征ARMv8架构包括AArch64和AArch32两种执行状态,前者引入了一套新的一套指令集“A64”专门用于64位处理器,而后者用来兼容现有32位ARM指令集。2.2 ARM处理器简介2.2.1 ARM7处理器系列ARM7内核采用冯
36、.诺伊曼体系结构,数据和指令使用同一条总线。内核有一条3级流水线,执行ARMv4指令集。ARM7系列处理器主要用于对功耗要求比较苛刻的消费类产品。其主频可达130MIPS。包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T四种类型。2.2.2 ARM9处理器系列采用了5级指令流水线,ARM9处理器能够运行在比ARM7更高的时钟频率上,改善了处理器的整体性能;储存器系统根据哈佛结构体系区分数据总线和指令总线。ARM9系列的第一个处理器是ARM920T,它包括独立的数据指令Cache和MMU。此处理器能够被用在要求有虚拟处理器支持的操作系统上。ARM940T包含一个更小的
37、数据指令Cache和一个MPU.它是针对不要求运行操作系统的应用而设计的。2.2.3 ARM9E处理器系列ARM9E系列的处理器基于ARM9E-S架构,这个内核是ARM9内核带有E扩展的一个可综合版本,包括ARM946E-S和ARM966E-S两个变种。两者都执行V5TE架构指令。他们也支持嵌入式跟踪宏单元,开发者可以实时跟踪处理器上指令和数据的执行。当调试对时间敏感的程序段时,这种方法很重要。ARM946E-S包括TCM、Ca车和一个MPC。TCM和Cache的大小可配置。该处理器是针对要求有确定的实时响应的嵌入式控制而设计的。ARM9E系列的ARM926EJ-S内核为可综合的处理器。他针对
38、小型便携式Java是设备,如3G手机和PDA应用而。ARM926EJ-S是第一个包含Jazelle技术,可加速Java字节码执行的ARM处理器内核。它还有一个MMU、可配置的TCM及具有零或非零等待存储器的数据/指令Cache。2.2.4 ARM11处理器ARM1136J-S是第一个执行ARMv6结构指令的处理器。它集成了一条具有独立的Load/Store和算数流水线的8级流水线。ARMv6指令包含了对媒体处理的单指令流多数据流扩展,采用特殊的设计改善视频处理能力。2.2.5 Cortex处理器基于ARMv7架构以后的ARM处理器冠以Cortex的代称。基于v7-A架构的称为“Cortex-A
39、系列”,基于v7-R架构的称为“Cortex-R系列”,基于v7-M架构的称为“Cortex-M系列”。Cortex-M系列的处理器有Cortex-M3、Cortex-M1、Cortex-M0和最新的Cortex-M4架构。Cortex-M3处理器结合了执行Thumb-2指令的32位哈佛微体系结构和系统外设。Cortex-M0处理器能耗低、门数量少、代码占用空间小,使得MCU开发人员能够以8位处理器的价位,获得32位处理器的性能。超低门数还使其能够用于模拟信号设备和混合信号设备及MCU应用中,可望节约成本。Cortex-R4处理器针对Thumb-2指令进行最佳优化设计此项特性带来很多的好处包括
40、:更低的时钟速度所带来的省电效益;更高的性能将各种多功能特色带入移动电话与汽车产品的设计;更复杂的算法支持更高性能的数码影像和内建磁盘的系统。Cortex-A8是有史以来ARM开发的性能最高、最具功率的处理器。Cortex-A8处理器的速率可以在600MHz到超过1GHz的范围内调节,能满足哪些需要工作在300Mw以下的功耗的移动设备的要求;以及满足哪些2000DhrystoneMIPS的性能优化的消费类应用的要求。2.3 s3c2440主要特性S3C2440是韩国三星公司推出的16/32位RISC微控制器,其处理器采用的是ARM920T内核,可以接丰富的片内外设,为PDA和其它智能应用,提供
41、了低功耗、低价格、高性能微控制器的解决方案。主要特点有一下几点:l 具有16KB指令高速缓冲储存器、16KB数据高速缓冲储存器和内存管理单元MMU。l 外部储存器控制器、可扩展8组,每组128MB,总容量达1GB;支持从Nand flash存储器启动。l 4通道的DMA,并且有外部请求引脚。l 3个通道的UART,带有16字节的TX/RX FIFO,支持IrDA1.0功能。l 具有2通道的SPI,1个通道的IIC串行总线和1个通道的IIS音频总线接口 。l 1个USB设备总线的端口,2个USB主机总线的端口。l 1个16位内部定时器和有4个具有PWM功能的16位定时器。l 8通道的10位A/D
42、转换器,提供触摸屏接口。l 具有130个通用I/O口和24通道的外部中断源。l 兼容MMC的SD卡接口。l WhathDog。l 具有日历功能的RTC。l 有LCD控制器,支持4K色的STN和256K的TFT,配置有DMA通道l 具有PLL功能的时钟发生器,时钟频率高达533MHz。l 具有电源功能:可以使系统以慢速方式,普通方式,空闲方式和空闲方式、掉电方式和掉电方式工作。l 电源系统:1.2V供电电压,1.8V/2.5V/3.3V存储器供电,3.3VI/0供电。l AC97编街码器接口。l CMOS摄像头接口。 2.4 s3c2440存储器控制器2.4.1 S3C2440存储控制器特性在以
43、后的章节中需要移植uboot,分析启动代码会涉及存储器的配置,所以需要了解存储空间的布局,掌握SDRAM的配置方法以及Nand Flash的操作。S3C2440的存储器提供了访问外部存储器的所有控制信号,27位的地址信号、32位数据信号、8个片选信号、以及读写控制信号等。总共有八个存储器bank(bank0-bank7)bank0-bank5为固定128MB,bank6和bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB最大共1GB。如图2.1:图2.1 内存分布图(1) bank0可以作为引导ROM,其数据线宽只能是16位和32位,其它存储器的数据线宽可以是8位、16
44、位和32位,一般将Nor Flash接在bank0上。(2) 7个固定存储器bank(bank0-bank6)起始地址,bank7的开始地址与bank6的结束地址相连接,但二者的容量必须相等。(3) 所有存储器bank的访问周期都是可编程的。(4) 支持SDRAM的自刷新和掉电模式。(5) 支持大小端(软件选择)。2.4.2 SDRAM原理分析ARM中的SDRAMJ相当于目前电脑中使用的DDR内存,它是程序运行的地方。TQ2440开发板使用的是型号:K4S561632的SDRAM,连接在BANK6,片选信号nGCS6,地址范围是:0x30000000-0x33FFFFFF。如图2.2:0x30
45、000000-0x31000000程序代码区,文字常量区0x33ff0000-0x33ff4800堆区0x33ff4800-0x33ff8000栈区0x33fffff00-0x34000000偏移中断向两边图2.2 SDRAM存储区域分配图2.4.3 FLASHFLASH(闪存)是ARM上重要的存储设备,由于其具有非易失性,电可擦除性、可重复编程以及高密度。低功耗等特点,被广泛应用于手机、MP3、数码相机,笔记本电脑等数据存储设备中。它包括NAND FLASH和NOR FLASH。(1) NOR FLASH大小:2M,数据长度:16bit,连接在nGCS6上,它的特点是:线性寻址可按地址直接进
46、行读写操作。写操作之前需要进行擦除操作。写入、擦除速度慢,读取速度较快,单位密度低、成本较高。(2) NAND FLASH 大小:256M,数据宽度:8bit。地址范围:有专门的时序控制总线,不占用系统总线资源。非线性寻址。读操作,一次读一个扇区(512字节)。写操作,可直接擦除指定地址。写之前必须进行擦除操作。成本低,单位密度高,擦除速度快。3 Bootloader原理分析和移植前面介绍了有关软件硬件方面的基础知识,下面几章将进行正式的移植,Bootloader是操作系统运行前首先运行的一段代码,本章将介绍Bootloader的原理、启动过程以及移植过程。3.1 Bootloader概述一个
47、嵌入式系统从软件上分析一般分为四个层次,它们分别是分别是:Bootloader、Linux内核、文件系统、应用程序。简单的说Bootloader就是操作系统运行之前运行的一段小程序。通过这段程序,可以初始化硬件设备,建立系统的内存空间映射图、从而将系统的软件硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境。最终Bootloader把操作系统内核影响加载到RAM中并将控制权交给它。不同的处理器上电或复位后的第一条指令地址并不相同,对于ARM处理器来说,改地址为0x00000000.对于一般的嵌入式系统通常把Flash等非易失存储器映射到这个地址,而Bootloader就位于该存储器的最前端。所以系统上电或复位后执行的第一段程序便是Bootloader。因为储存Bootloader的存储器不同,Bootloader的执行过程也不同。嵌入式系统中广泛采取的非易失