《[优秀嵌入式毕业设计]基于Linux的嵌入式串口通讯程序设计.doc》由会员分享,可在线阅读,更多相关《[优秀嵌入式毕业设计]基于Linux的嵌入式串口通讯程序设计.doc(54页珍藏版)》请在三一办公上搜索。
1、xxx 毕业设计(论文)基于Linux的嵌入式串口通讯程序设计Based on Linux embedded serial communication program design学 校: xxx 学 院: 应用技术学院 班 次: 电子信息工程 学 号: xxx9 学生姓名: xxx 教师单位: 应用技术学院 指导教师: xxx 教师职称: 讲师 目录摘要1Abstract2第一章绪论11.1课题研究11.2 嵌入式串口通信国内外现状11.3 课题主要研究工作2第二章通信原理32.1 通信原理32.1.1 通信原理32.2.2 通信现状及前景42.2 串口通信52.2.1 串口通信52.2.2
2、 串口通信现状及前景6第三章设计平台及软硬件环境构架83.1 硬件平台83.1.1 设计平台83.1.2 通信平台83.2 软件平台83.2.1 嵌入式Linux83.2.2 虚拟机103.3 软件与硬件平台搭建103.3.1交叉编译工具的建立103.3.2 u-boot的编译和烧写113.3.3 内核的移植和烧写123.3.4 文件系统的制作与烧写14第四章 串口网络通讯设计164.1 Linux简单串口上网164.2 Linux串口上网设备加载和注销形式174.3 字符设备驱动程序194.4 伪网络设备驱动程序254.5 用户空间串口通信程序33第五章 总结与展望385.1 总结385.2
3、 展望38总结和体会39致谢40参考文献41附录43英文原文43中文翻译50摘要在控制领域之中,入式串口通信设备通讯能力的优劣已经成为了一个尤为重要的评判标准,是否能够进行网络通信将是十分重要的。对于由于特殊要求而不能订制一些网络硬件的嵌入式设备来说,希望通过最为简单且经济的方式来解决网络问题,由此自然希望在尽力不改变设备原有资源的情况下给设备添加网络功能,并且将设备原先的功能所产生的冲突减到最小,选择具有普遍广泛应用的串口来实现串口联网将是十分具有现实意义的。本次设计结合嵌入式开发流程,以UP-TECH2410为硬件平台,基于该平台搭建嵌入式Linux系统,将设计好的串口通讯程序移植到该嵌入
4、式系统中,完成整个设计过程。串口通信的设计是在UP-TECH2410开发板自身串口基础上,加载模块时完成伪网络设备、发送字符设备、接收字符设备的初始化和注册,最终实现串口联网问题。本文先介绍通信原理,再介绍设计的平台及嵌入式Linux系统的构建,包括U-boot、内核、文件系统的烧写。然后介绍串口网络通讯的设计,包括上网设备的加载和注销,字符设备、伪网络设备的驱动和用户串口通信程序。关键字:Linux,串口通讯,S3C2410,嵌入式AbstractAmong the control area, the capacity of communications has become a parti
5、cularly important evaluation criterion in the embedded equipment. For some embedded equipments as a special request which can not be made in some of the embedded network hardware equipments, we hope that through the most simple and economical way to solve network problems. By the time we naturally h
6、ope to make every effort not to change the original equipment resources that we can add to the network function under the equipment, and the original equipment functions arising from the conflict could be minimized. It is very realistic significance to select the widespread application serial to ach
7、ieve serial network link. The design combines the embedded development process to UP-TECH2410 as the hardware platform, based on the platform to build embedded Linux systems, serial communication program will be designed ported to the embedded system, complete the entire design process. The design o
8、f serial communication is UP-TECH2410 development board based on its serial port, load the module to complete pseudo-network device, character device to send, receive character device initialization and registration, and ultimately the serial interconnection issues. This article first describes comm
9、unication theory, and later designed the platform and embedded Linux system construction, including the U-boot, kernel, file system programming. Then describes the design of serial network communications, including Internet equipment, loading and off, character device, pseudo network device driver a
10、nd user serial communication program.Keywords:Linux, serial communication, S3C2410, embedded第一章 绪论众所周知,互联网最早于1969年起源于美国,可以说互联网是20世纪最伟大的发明之一。时至今日,信息化浪潮正席卷全球,方兴未艾。互联网已成为信息化的重要平台、信息化的重要工具和信息化的重要组成部分,互联网已经与信息化分不开,而且相互促进。随着互联网的迅速发展,互联网已经逐步渗透到人们工作、生活的方方面面,并对人们生活、企业发展和社会进步产生了巨大影响。1.1课题研究 互联网在经历过以“大型主机”、“服务
11、器和 PC 机”、“手机和移动互联网终端(MID)”为载体的三个发展阶段后,将逐步迈向以嵌入式设备为载体的第四阶段,英特尔称之为“嵌入式互联网”。在这个即将到来的第四阶段中,嵌入式设备和应用将真正让互联网无处不在,人们不论是在工作、娱乐、学习甚至休息的时候,都能 7*24 小时的与互联网保持连接。英特尔相信嵌入式互联网的快速崛起将到 2011 年时孕育出价值 100 亿美元,并预测到 2015 年将新增 150 亿个嵌入式计算设备与互联网的连接。而对于一些由于特殊要求而不能订制一些网络硬件的嵌入式设备来说,在不改变设备原有资源的情况下给设备添加网络功能,并且将设备原先的功能所产生的冲突减到最小
12、,应用的串口来实现串口联网将是十分具有现实意义的。 1.2 嵌入式串口通信国内外现状嵌入式互联网是是一个差异化的计算平台,它对于使用者来说是“隐形的”,它拥有预先设定的功能,与个人电脑的不同是,嵌入式设备需要把有限的计算能力用在一个主要应用中。嵌入式技术的特点非常适合终端市场的发展趋势和特点。嵌入式平台一般都是针对某些特定应用而开发,有一定的针对性,易于上手,灵活,成本低,便于升级。国际电联将互联网的发展分成四个阶段:第四个阶段就是所有的各种专业设备,包括家用电器、医疗设备、工业机器等等,全部都可以联网,彻底改变人们的生活方式。这第四个阶段就标志着“嵌入式互联网时代”的到来。嵌入式互联网将给市
13、场带来巨大的发展机遇。Intel公司CEO欧德宁先生最初是为公司设定了三个有增长潜力的目标领域:一是消费电子产品领域,二是移动互联网终端领域,三是上网本市场。每一个市场领域的潜在市场容量达到100亿美金,但很快欧德宁先生认识到,嵌入式市场的空间更大,将超过100亿美金。对于嵌入式市场的发展来说,中国市场的意义更加重大。中国市场对于嵌入式互联网这场革命来说非常关键。勃勃的生机,很好的产业互动,良好的协作精神,中国现在正在形成一个健康的嵌入式的发展模式和转型模式。中国可能是一个引发点,嵌入式市场先在中国蓬勃发展,然后辐射到全球其他地区。随着嵌入式Internet技术的不断应用和普及,嵌入式产品的需
14、求将变得越来越规范,巨大的市场需求将带动SOC(System On A Chip,系统级芯片 )产品的规模化生产。可以预见,在不久的将来,面向不同需求的系列化嵌入式Internet芯片必将大量上市,而其价格将非常低廉。1.3 课题主要研究工作 本文在嵌入式系统开发技术的基础上,提出了串口通信的设计方案。实现在嵌入式Linux上通过UP-TECH S3C2410的串口来联网通信。主要用到的是UP_TECH S3C2410平台, Vmware workatation 7.1,redhat9.04,linux 2.6.24的内核,超级终端,arm-linux-gcc3.3.2.基于Linux嵌入式串
15、口通信程序设计主要讨论以下几个方面:1. 串口通信的整体架构;2. 开发环境的搭建,包括交叉工具的建立,u-boot、内核、文件系统的烧写;3. 上网设备的加载和注销,字符设备、伪网络设备的驱动;4. 串口通信程序的编写移植。第二章 通信原理通信按照传统的理解就是信息的传输。在当今高度信息化的社会,信息和通信已成为现代社会的“命脉”。信息作为一种资源,只有通过广泛地传播和交流,才能产生利用价值,促进社会生产力的发展,创造出巨大的经济效益。而通信作为传输信息的手段和方式,与传感技术、计算机技术相互融合,已成为21世纪国际社会和世界经济发展的强大推动力。可以预见,未来的通信对人们的生活方式和社会的
16、发展将会产生更加重大和深远的影响。2.1 通信原理2.1.1 通信原理 通信是通过某种媒体进行的信息传递。古代,人们通过驿站、飞鸽传书、烽火报警等方式进行信息传递。今天,随着科学水平的飞速发展,相继出现了无线电,固话,手机,互联网甚至可视电话等各种通信方式.对于点对点之间的通信,按消息传送的方向,通信方式可分为单工通信、半双工通信及全双工通信三种1。 所谓单工通信,是指消息只能单方向进行传输的一种通信工作方式。单工通信的例子很多,如广播、遥控、无线寻呼等。这里,信号(消息)只从广播发射台、遥控器和无线寻呼中心分别传到收音机、遥控对象和 BP 机上。 所谓半双工通信方式,是指通信双方都能收发消息
17、,但不能同时进行收和发的工作方式。对讲机、收发报机等都是这种通信方式。所谓全双工通信,是指通信双方可同时进行双向传输消息的工作方式。在这种方式下,双方都可同时进行收发消息。很明显,全双工通信的信道必须是双向信道。生活中全双工通信的例子非常多,如普通电话、手机等。在数据通信(主要是计算机或者其他数字终端设备之间的通信)中,按数据代码排列的方式,数据通信可以分为两种方式:串行通信和并行通信。串行通信又可分为同步传输模式和异步传输模式。 串行通信是指二进制数据是一位一位的传输,也就是在一条数据线上,1,0,按顺序传输。串行通信的数据传输速率相对较低,但通信距离长,可以从几米到几公里,因此串行适用于长
18、距离而速度要求不高的场合。电脑上的9针座(人称串口)就是串行通信。并行通信是指在多条数据线上,一个字节的二进制位同时传输。并行通信的传输速率高,但传输距离短,一般不超过30米,而且成本高(要采用多条数据线)。电脑输出数据到打印机采用的就是并行通信。 串行通信比并行通信的传输数率低是在工作频率相同的情况下而言的。由于并行通信数据线之间一直存在着无法消除的串扰问题,并行通信的工作频率受到了限制,其传输速率也没法提上去。而串行通信由于用到数据线少,它的串扰小,特别是采用差分传输,能极大地减小串扰,从而提升了串行通信的工作频率(可以比并行通信高很多),传输速率也得到了很大的提高。以前电脑上硬盘和光驱采
19、用的都是并行传输方式,但是随着时代的发展,并行通行的传输速率已经无法满足人们的需求,而采用差分传输的串行通信由于其极高的通信速率,从而将人类引入了串行时代。现在买的电脑的光驱和硬盘都转为采用4线制的串行传输,即一对串行输入线,一对串行输出线。2.2.2 通信现状及前景 电信服务由传统的电报、电话单一品种扩大到传真、数据通信、图像、通信、电视广播、多媒体通信等新业务领域;电信技术的演变日新月异,传输媒介由明线、无线短波、电缆到微波、卫星、海缆和光缆;交换设备由机电制布线逻辑方式向计算机程序控制方式发展;传输设备由模拟载波向数字脉码调制方式发展;终端设备由机电方式向微处理器控制的多功能终端发展;通
20、信方式由人工、半自动向全自动方向发展;通信网由单一的业务网向综合方向发展形成综合业务数字网;通信的地点由固定方式转向移动方式,并逐步实现个人化。总之,最近二十年来电信技术和业务发生了巨大变化。当今,世界电信总的发展趋势是在电信网数字化、综合化的基础上,向智能化、移动化、宽带化和个人化方向发展。2.2 串口通信 2.2.1 串口通信 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个
21、设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上
22、的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选
23、取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验
24、,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 2.2.2 串口通信现状及前景由于信息技术的进步,串口通讯也朝高速化方向发展,近年来在个人计算机的快速发展下,使用串口通讯发展USB(Universal Serial Bus,通用串行总线),其信号传输方式也是串行通讯(一次只传送一位)。其通讯速率达12Mbps,在1999年所发表的USB2.0的版本已经将其速度提升到480Mbps2。实验室数据通
25、讯中的应用主要有两种情况。一种是仪器提供USB接口,则可以直接利用USB口进行大批量数据传输(可以传输图片)。另一种,仪器本身没有USB接口,只提供RS-232接口,我们可以将工作站中的USB口转换为RS-232,通过RS-232同仪器进行通讯,这种方式可以利用USB传输速率快,不占用系统资源的优点,将一个USB口转换成多个RS-232口,实现一个工作站连接多台仪器。可见串口通讯显然是一种非常重要并且普遍的通讯方式。第三章 设计平台及软硬件环境构架本次设计的所用的软硬件:UP-NetARM2410-CL开发板,虚拟机:Vmware workatation 7.1, Linux:redhat9.
26、04,超级终端 ,交叉编译工具:arm-linux-gcc 3.3.2 3.1 硬件平台 3.1.1 设计平台 本设计建立在二台北京博创兴业科技有限公司开发的UP-NetARM2410-CL上进行,系统为linux2.6.24,64MB SDRAM 64MB FLASH,芯片S3C2410,主频202MHZ。先用串口线分别把二个开发板连接到PC机上,完成各个模块的驱动后再把二块板用串口线连接起来。 3.1.2 通信平台 通信平台建立在二台北京博创兴业科技有限公司开发的UP-NetARM2410-CL上,操作系统linux2.6.24,两台虚拟机的串口通信进程通过串口通信实现,其中一台为服务器,
27、另一台为客户机。 3.2 软件平台 3.2.1 嵌入式Linux 随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Neculeus和Windows CE。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。另外,结合国内实情,当前国家对自主操作系统的大力支持,也为源码开放的Linux的推广提供的广阔的发展前景。还有,对上层应用开发者而言,嵌入式系统需要
28、的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。在不久的将来,从冰箱到收音机都会内置处理器。因为Linux的开放性,许多人认为Linux非常适合多数Internet设备。他们认为Linux可以支持不同的设备,支持不同的配置3。Linux对厂商不偏不倚而且成本极低,能够很快成为用于各种设备的操作系统。如今,业界已经达成共识:即嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。嵌入式操作系统主要有 Palm OS、Windows CE、EPOC、LinuxCE、QNX,高端嵌入式系统要求许多高级的功能,如图形用户界
29、面和网络支持。很多高端RTOS供应商已经提供了这些功能,但其价格也很高端,一般人难以接受。微软的Windows CE也有此类功能,却不具备大多数嵌入式系统要求的实时性能,而且难以移植,也曾经有人想以DOS为基础用单独的第三方工具拼凑一个系统,但这种努力将是白费。现在需要的是一个便宜,成熟并且提供高端嵌入式系统所必须特性的操作系统,嵌入式Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,所以众多商家纷纷转向了嵌入式Linux4。Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务多进程的操作系统5。支持广泛
30、的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分蕊片。程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNU General Public License)下发行,这样,开发人员可以对操作系统进行定制,再也不必担心像MS Windows操作系统中“后门”的威胁。同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用
31、软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)6。其强大的语言编译器gcc也可以很容易得到。 3.2.2 虚拟机VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。VMware Workstation可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的 IT开发人员和系统管理员而言, VMware 在虚拟网路,实时快照,拖曳共享文件
32、夹,支持 PXE 等方面的特点使它成为必不可少的工具。VMware Workstation允许操作系统和应用程序在一台虚拟机内部运行。虚拟机是独立运行主机操作系统的离散环境。在VMware Workstation中,你可以在一个窗口中加载一台虚拟机,它可以运行自己的操作系统和应用程序。你可以在运行于桌面上的多台虚拟机之间切换,通过一个网络共享虚拟机(例如一个公司局域网),挂起和恢复虚拟机以及退出虚拟机,这一切不会影响你的主机操作和任何操作系统或者它正在运行的应用程序。在其中安装VMware Workstation软件的物理计算机称作主机,它的操作系统称作主机操作系统。在一台虚拟机内部运行的操作
33、系统称作一个客户操作系统7。3.3 软件与硬件平台搭建 3.3.1交叉编译工具的建立搭建交叉编译工具是嵌入式开发的第一步,也是关键的一步。由于嵌入式系统自身的特殊性,注定了它自身所具有的资源和内存空间都是十分有限的,同时不可能具有友好的人机交互界面,不可能像开发PC软件那样在其上运行所有的开发工具,而且很多嵌入式系统都没有像显示器那样的输出设备,这些都决定了嵌入式软件开发应当采用一种特殊的模式:宿主机目标机 模式,使用交叉编译的方式进行开发8。即所有开发环境一般都必须安装在PC上,最终通过工具链生成的最终目标文件将可以运行在相应的目标平台上。另外,交叉编译环境的建立是编译内核的基础,只有建立了
34、正确的交叉编译环境才可以对内核进行编译,既而实现系统开发。3.3.2 u-boot的编译和烧写3.3.2.1 BootloaderBootloader 是在操作系统运行之前执行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。对于嵌入式系统,Bootloader 是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。常见的Bootload
35、er有Redboot、ARMboot、U-Boot、Blob、Bios-lt、Bootldr,其中U-Boot已经能够支持PowerPC、ARM、X86、MIPS体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码Bootloader9。Bootloader有下载和启动加载俩种工作模式10:下载模式:这种方式不需要配置较大的存储介质,跟无盘工作站有点类似。但使用这种启动方式之前,需要把Bootloader 安装到板上的EPROM 或者Flash中。Bootloader 通过以太网接口远程下载Linux 内核映像或者文件系统。启动加载模式:Bootloader从目标机上的
36、某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。大多数嵌入式设备都有Flash存储介质都选择下载模式。3.3.2.2 u-boot的制作和烧写1建立板级支持包2.添加代码,支持从Nand Flash启动由于开发板上没有NOR Flash,只能从Nand Flash启动。而uboot默认不支持从Nand Flash启动,需要添加代码从Nand Flash启动。需要修改cpu/arm920t/下面的start.s,再/board/up2410/下面添加nand.c,最后再进行uptech.h的修改。3.开发板的配置up2410.h是开发板的配置文件,需要进行网卡的配置,环
37、境变量、命令提示符、下载地址、Flash存储地址的修改,最后网卡驱动的修改。4.编译uboot生成u-boot.Bin文件。5.通过JTAG 电缆,转接到计算机并口连接。需要在主机端有开发烧写程序和并口设备驱动程序。开发板上电或者复位的时候,烧写程序探测到处理器并且开始通信,然后把u-boot.bin下载并烧写到Flash 中。3.3.3 内核的移植和烧写3.3.3.1 Linux内核内核是操作系统的核心,Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。Linux最早是由芬兰黑客林纳斯.托瓦
38、兹(Linus B. Torvalds)为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的11。目前linux内核已经发展到2.6.39。SUSE、RedHat、Fedora、Debian、等都采用Linux内核。3.3.3.2 内核的移植1.用tar命令解压源代码包linux-2.6.24.4.tar.bz生成linux-2.6.24.4目录,进入生成的目录对Makefile进行修改:将ARCH=修改为ARCH=arm,将CROSS_COMPIEL=修改为CROSS_COMPIEL=/usr/local/arm/3.3.2/arm-linux-2.编译内核时会依赖于源代码目录
39、下的.config文件,目标板需要相应.config文件,将arch/arm/config/目录下的S3c2410_defconfig 拷贝到源代码的更目录下面即可。3.修改Nand Flash分区;在内核中添加驱动支持;添加网卡驱动支持、添加文件系统支持。4.配置内核:*在终端中进入源代码根目录下用命令make menuconfig进入配置界面。*选择硬件系统,选中System Type选项,再进入ARM system type选项组选择S3C2410 Machines;*配置Nand Flash驱动,在Device Drive选项中选择Memory Technology Device (M
40、TD)support下面的Nand Device,选择下面的NAND Flash support for S3C2410。*接下来进行文件系统的配置,在File system选项中选择Miscellaneous filesystem,然后选择YAFFS file system support;5.编译内核:在源代码根目录下用命令make生成zImage文件,这个文件就是内核的镜像文件。6.u-boot在引导内核启动时需要内核给u-boot提供一些必要的信息(如内核下载地址等)。而刚编译好的zImage 没有这些信息。利用mkimage工具生成uImage内核镜像,则为加上了这些信息。命令如下:
41、./mkimage -A arm -T kernel -C none -O linux -a 0x30008000 -e 0x30008040 -d zImage n Linux-2.6.24.4 uImage7.内核的烧写:用超级终端连接开发板,用tftp下载内核的镜像文件uImage,启动arm进入u-boot界面进行主机和目发板ip的设置。主机ip的设置setenv serverip 192.168.1.123,目标板ip的设置setenv ipaddr 192.168.1.124。再用以下的命令tftp 0x30008000 uImage;nand erase 0x80000 0x20
42、0000;nand write 0x30008000 0x80000 0x200000进行烧写12。3.3.4 文件系统的制作与烧写3.3.4.1 文件系统的介绍Linux内核在启动过程中会安装文件系统,文件系统为linux操作系统不可或缺的重要组成部分,用户通常是通过文件系统同操作系统与硬件设备进行交互。Linux的一个最重要特点就是它支持许多不同的文件系统,支持的常见的文件系统有:JFS、 ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。Linux是通过把系统支持的
43、各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。该树形层次结构把文件系统表示成一个整个的独立实体。无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。该个目录被称为装配目录或装配点。在文件系统卸载时,装配目录中原有的文件才会显露出来13。常见的嵌入式文件系统有:闪存技术;Ext2fs文件系统;日志闪存文件系统JFFS2;YAFFS文件系统;tmpfs文件系统;cramfs文件系统。3.3.4.2 文件系统的制作与烧写1.文件系统制作前首先要在内核中添加文件系统类型的支持,(参照3.3.3.2内核的移植),添加对CRAMFS和YAF
44、FS2文件系统的支持。2.对制作工具busybox进行编译配置和安装。3.用shell脚本创建根文件系统的目录,配置好文件后,用mkcrafs命令将制作好的文件系统目录压缩生成文件系统的镜像文件。4.用命令:tftp 0x30008000 root.cramfs;nand erase 0x280000 0x400000;nand write 0x30008000 0x280000 0x300000 来完成名为root.cramfs文件系统的烧写。第1条命令:将uImage内核文件下载到地址为0x30008000的RAM中;第2条命令:擦除以0x280000为起始地址大小为0x400000的fl
45、ash空间;第3条命令:将RAM中的文件系统烧写到nandflash中。第四章 串口网络通讯设计 Linux为串口上网提供了丰富的支持,比如PPP(Peer-to-Peer Protocol, 端对端协议)和SLIP(Serial Line Interface Protocol, 非常老的串行线路接口协议),这里所说的上网是指把串口当成一个网络接口,通过封装网络数据包(如IP包)以达到无网卡的终端可以通过串口进行网络通信。但是使用这两种协议必须得到内核的支持。例如,如果在没有配置PPP的Linux环境中使用PPP,除了安装PPP应用层软件外,还必须重新编译内核。SLIP是一个比较老的简单的协议
46、,现在的Linux内核缺省配置都支持,不需要重新编译内核,尽管如此,其源代码看上去有点古怪而复杂。在嵌入式Linux系统使用过程中,如果内核已经被烧入Flash中,而为了节省空间内核又没有提供诸如PPP或者SLIP的支持,当然就没有办法在不重新烧写Flash的情况下直接使用PPP或者SLIP了,事实上用户必须动态加载PPP和SLIP的内核实现模块。对某些嵌入式应用来说移植或者修改PPP源代码变成了乏味和繁锁的工作。 4.1 Linux简单串口上网 简单串口上网的实现原理如图4.1.1所示. 图 4.1.1 简单串口上网的实现原理 Linux Box A 和 Linux Box B 是两块S3C
47、2410开发板,它们通过一条串口通信线(null modem cable line)连接。控制串口通信的服务进程server读和写两个字符设备:发送字符设备sending device和接收字符设备receiving device。在内核空间,伪网络设备驱动程序pseudo network driver可以直接读写发送字符设备和接收字符设备,事实上在内核空间它们之间的通信只是对共享缓存区的读写而已。伪网络设备驱动程序具有大部分普通网卡驱动程序提供服务功能,只是没有硬件部分代码的实现而已。当用户空间的进程要发送数据的时候,其首先让数据经过Linux操作系统的TCP/IP处理层进行数据打包,然后把打包后的数据直接写入sending device,等待server进程读取,最后通过串口发送到另一个Linux Box的server进程;而当se