关于Linux操作系统设计研究毕业论文目录中文摘要 (1)ABSTRACT (2)第1章 Linux概述 (3)1.1 Linux操作系统的诞生和发行版 (3)1.1.1 Linux系统的诞生 (3)1.1.2 Linux 发行版 (3)1.2 Linux应用和特性 (4)1.2.1 linux 的应用 (4)1.2.2 linux 的特性 (4)第2章 Tiny210开发板 (6)2.1 Tiny210 简介 (6)2.2 Tiny210硬件配置 (6)2.3 软件支持 (7)第3章移植前准备 (8)3.1软件平台的搭建 (8)3.1.1 虚拟机的安装 (8)3.1.2 Red Hat linux 的安装 (8)3.1.3 软件包和源码包的准备和下载 (8)第4章 Linux 核 (9)第5章 RTC芯片 (10)5.1 RTC芯片简述 (10)5.2I2C总线简介 (10)第6章字符设备驱动相关知识 (11)6.1 模块机制 (11)6.2 字符设备开发基本步骤 (12)6.3 主设备号和次设备号 (12)6.4 实现字符驱动程序 (13)第7章 RTC驱动实现 (16)7.1 设计思路 (16)7.2 RTC程序实现 (16)7.2.1 RTC基本数据结构 (16)7.2.2注册字符设备 (16)7.2.3 定义操作函数 (17)7.2.4 函数声明 (18)7.3 编译生成.ko文件 (18)7.4 实际运行及结果 (18)第8章结论 (20)谢辞 (21)参考文献 (22)附录A RTC驱动程序 (23)附录B Makefile文件 (41)附录C 应用层测试程序 (41)第1章 Linux概述1.1 Linux操作系统的诞生和发行版1.1.1 Linux系统的诞生1981年IBM推出了微型计算机IBM PC。
在它推出的前10年,MS-DOS操作系统主宰了整个计算机操作系统界。
而在当时,计算机硬件的价格在不断下跌,但软件仍处于高位。
苹果的操作系统MacOS的是无疑是最好的性能,但价格高,没有人可以轻易接近。
到1991年,随着GNU计划开发出来了一些工具,以及GNU C编译器的发布。
甚至MINIX 也因为开始需要购买才能获得源代码。
在GNU HURD操作系统的开发工作却不是能在几年完成的。
对于莱纳斯来说,已经等不及了。
起初,他只是为了学习386架构的编程技术,但随后的Linux开发过程已经彻底改变了他的主意。
在1991年初,莱纳斯在学习MINIX的操作系统的时候产生了开发一个新的属于自己的理想中的操作系统的想法。
最早与Linux(当然此时还不叫Linux 这个名称)相关的新闻是莱纳斯在1991年7月3号的comp.os.minix上发布的消息。
而在莱纳斯8 月25 日发布的消息中,他第一次向外界透露出有开发免费的操作系统的意向,可是它并不会象GNU 那种现在已经在行业中成型的系统那样专业,而代码量不会很大[1]。
直到1991 年的10 月 5 日,莱纳斯在comp.os.minix 新闻组上发布消息,正式向外宣布Linux 核系统的诞生(Free minix-like kernel sources for 386-AT)。
这段消息就是直到今日都广为流传的被称为Linux的诞生宣言。
因此对Linux 社区,及其所用用户来说,10月5日都是一个特殊的日子。
直到今天,包括现在的Red Hat公司在的很多公司都会在发布许多Linux 的新版本时选择了这个日子。
Linux是一种源于UNIX的操作系统,虽然从严格意义上讲,Linux这个词实际上是指Linux核,但实际上人们已经习惯了把整个基于Linux核以及在此基础上的各种工具的操作系统统称为Linux。
1.1.2 Linux 发行版通常来讲,一个Linux的发行版不仅仅是指Linux核,还包括了使用Linux的软件的安装工具,以及各种工具软件,而在一些特定的版本中中也有一些特定软件,只不过现在都习惯于把它们统称为Linux发行版。
每一种发行版的开发都是针对着不同的目标,像是支持不同计算机结构,更强调实时应用,和专门面向嵌入式系统等。
主流的Linux 发型版有Ubuntu,Red Hat等等。
1.2 Linux应用和特性1.2.1 Linux 的应用Linux的基本思想就是——万物皆文件,因此它拥有极高的灵活性和可移植性,再加上它的UNIX背景,使它Linux在服务器的操作系统方面具有广泛运用。
直到现在,Linux还是提供服务供应商最常使用的平台。
虽然因为新的编程语言的兴起,它的市场份额在不断减少,但在嵌入式行业,Linux基于其低廉成本与小体积依然是不可动摇的霸主,像在机顶盒、手机及移动装置等硬件平台上,Linux已经是不可或缺的[3]。
1.2.2 Linux 的特性⑴完全兼容因为Linux兼容了POSIX1.0标准,所以一些常见的Windows的程序完全可以在Linux上无障碍运行,这也为用户从Windows转到Linux提供了方便。
因为现在Windows 的巨大影响力,许多用户在使用Linux前,都会因为以前Windows的使用习惯而担心能否适应新的环境,而这一点就使他们不在顾虑。
⑵完全免费,发展迅速Linux是一款完全免费的操作系统。
因为Linux社区的存在,所有的Linux用户都可以轻易的得到当前任意版本的Linux的源代码,并按照自己的意愿来修改它。
正是由于这一点,每时每刻,每一次的技术进步,每一种新平台面世,都有来自世界各地的精英都参与了Linux的更新和实现,无数的灵感跟不断进步的技术与编程思想,让Linux 有了无穷的可能性,并在无数程序员的努力下不断壮大。
⑶多用户、多任务正如当今世界发展的主流那样,Linux也支持多用户。
这保证了各用户的相对独立,之间互不影响,都对于自己的文件设备有自己的权利。
而多任务则是现在各种智能设备的主要特点,为了节省运行时间和解放更多的系统资源,实现了多进程的并行执行,Linux操作系统就是其中的典。
⑷良好的界面因为现在Windows系统的强烈影响,Linux同时具有可以通过键盘输入相应的指令来进行操作的字符界面和类似Windows图形界面的X-Window系统提供的图形界面。
后者使用户可以类似于Windows操作系统使用鼠标对其进行操作,而不会因为转换了操作系统感到不适应。
⑸丰富的网络功能Unix最大的优势就是其强大的网络功能,而从Unix衍生出来的Linux系统也继承了它在网络功能上的优势。
Linux的网络功能和其核紧密相连,在这方面它要比其他操作系统更有优势。
⑹可靠的安全、稳定性能Linux采取了许多安全技术措施为部信息安全提供了保障。
而且Linux的极高的稳定性使它在对要应用到网络服务器这类有较高稳定性要求的服务上有非常高的适应性。
⑺支持多种平台Linux作为一种嵌入式操作系统,在各种移动装置上应用广泛。
Linux因为其开源的特性使它基本可以在市场上绝大部分的硬件平台上运行,这也使它精简体积小的核可以方便地移植多种嵌入式处理器上。
第2章 Tiny210开发板2.1 Tiny210 简介Tiny210是一款高性能的Cortex A8核心板,它由友善之臂设计、生产和发行销售。
它采用三星S5PV210作为主处理器,运行主频可高达1GHz。
S5PV210部集成了PowerVR SGX540高性能图形引擎,支持3D图形流畅运行,并可流畅播放1080P大尺寸视频[4]。
Tiny210主要采用了2.0mm间距的双排针,引出CPU大部分常用功能引脚,并力求和Tiny6410核心板三排引脚兼容(P1,P2,CON2) [5]。
2.2 Tiny210硬件配置如图2-1:2.3 软件支持⑴ Superboot-210⑵ Android 2.3 + Linux-3.0.8⑶ Android 4.0⑷ WindowsCE6第3章移植前准备3.1软件平台的搭建3.1.1 虚拟机的安装在有了硬件平台的支持下(Tiny210开发板)开始进行软件平台的搭建。
在pc机上安装一个虚拟机,本文选用的虚拟机是VMware Workstation 。
虚拟机其实就是在主机中占用一块存在主机的硬件平台上搭建一个类似主机的运行环境,在 VMware中,你可以在一个以主机的分割的存为基础的窗口中加载一台虚拟机,运行自己的操作系统和应用程序,而不影响主机任何操作。
3.1.2 Red Hat Linux 的安装在安装了Vmware Workstation 的条件下,创建一个虚拟机给它分配20G的磁盘大小。
512M的存空间。
然后从网上下载Red Hat Linux 操作系统安装包iso文件,我下载的是Red Hat Linux-5的iso文件,该版本的Linux核时3.0的,相对来说是版本比较高的核。
在获得Red Hat的iso文件后,在创建的虚拟机中安装该Linux操作系统。
3.1.3 软件包和源码包的准备和下载需要的软件有交叉编译器arm-Linux-gcc ,我选用的交叉编译器为Tiny210的开发自带的交叉编译器,该编译器是4.0版本以上的,正是由于我即将下载核源码版本比较高,因此我们选用的交叉编译器的版本也是相对来说比较高的。
从下载Linux的核源代码linux-3.0.8.tar.gzRTC 。
Boot Loader 是在硬件平台运行之前完成对硬件的初始化病唤醒操作系统的程序。
就是通过Boot Loader来实现初始化硬件设备,从而给操作系统提供了一个合适的软硬件环境,并为调用它做好准备。
我选择的Boot Loader是U_boot[6]。
第4章 Linux 核现在自己的当前目录,即~目录下,解压自己的核源代码:tar xvzf linux-3.0.8.tgz解压Linux核源码包,在当前目录下生成一相应的文件夹linux-3.0.8,这就是该核的所有实现代码。
Linux的核的目录包含很多个文件夹,分别用于实现不同的功能(如图4-1)[7]。
(假设相对于Linux-3.0.8):图4-1 Linux根目录其中有几个比较重要的需要着重了解:⑴ /drivers 驱动目录,该目录是所有被加载到核的设备驱动的程序。
其中又把设备驱动进一步划分成几类,如字符设备驱动,块设备驱动等。
⑵ /include 该目录包括编译核心所需要的大部分头文件,也是Linux下程序编译的查找默认路径。
⑶ /net 该目录里不用说就是核心的网络层代码。
⑷ /init 该目录中包含核的所有硬件初始化代码,这是核所有工作的起点,像是main.c和Version.c这两个C语言程序的编译入口文件就在其中,同时也是是所有进程的最初父进程。