嵌入式linux在经济社会中的应用实例—GPS系统

上传人:dfg****19 文档编号:180736068 上传时间:2023-01-07 格式:DOC 页数:22 大小:757.50KB
返回 下载 相关 举报
嵌入式linux在经济社会中的应用实例—GPS系统_第1页
第1页 / 共22页
嵌入式linux在经济社会中的应用实例—GPS系统_第2页
第2页 / 共22页
嵌入式linux在经济社会中的应用实例—GPS系统_第3页
第3页 / 共22页
点击查看更多>>
资源描述
Linux编程及应用 课程论文华东交通大学理工学院Institute of Technology.East China Jiaotong University课 程 论 文Course Thesis题 目 嵌入式linux在经济社会中的应用实例GPS系统 分 院: 电 信 分 院 专 业: 通 信 工 程 班 级: 2008-2 学 号: 20080210420224 学生姓名: 骆 玉 春 指导教师: 徐 涢 基 摘 要本文以S3C2410处理器的GPS手持设备开发过程为例,介绍了嵌入式 Linux系统软硬件的设计与开发。通过本文的实例,可以加深对嵌入式Linux开发流程的概念的理解,了解嵌入式Linux系统开发的基本过程。 随着全球定位系统(GPS,Globe Positioning System)的广泛应用,GPS手持终端设备的市场需求越来越大。首先,分析系统工作原理,再选择合适的参考硬件平台,然后选择合适的操作系统和软件。Linux对S3C2410处理器支持得相当好,操作系统内核和应用程序都是开放源码的。因此,Linux可以完全按照自己的需要裁减配置系统,使得尺寸更小,而且Linux操作系统性能比Windows操作系统性能更优越。关键词:GPS系统;linux;系统硬件;系统软件;设计;目 录摘 要1目 录2第一章 需求分析31.1 系统工作原理31.2 选择参考硬件平台31.3 选择操作系统和软件4第二章 系统硬件设计52.1 电源电路设计52.2 复位电路设计72.3 时钟电路设计72.4 SDRAM接口电路设计82.5 Flash接口电路设计92.6 JTAG接口电路设计122.7 USB接口电路设计122.8 键盘输入接口电路设计132.9 LCD(触摸屏)接口电路设计132.10 GPS接口电路设计132.11 PCB设计制作14第三章 系统软件设计153.1 U-Boot的移植153.2 linux内核的移植163.3 应用程序的开发移植17第四章 系统集成与部署17参考文献21第一章 需求分析随着全球定位系统(GPS,Globe Positioning System)的广泛应用,GPS手持终端设备的市场需求越来越大。本项目要设计开发一款手持GPS工程样机。首先,分析系统工作原理,再选择合适的参考硬件平台,然后选择合适的操作系统和软件。1.1系统工作原理系统首先通过GPS模块获得绝对位置数据,并将数据通过UART通信方式传给处理器,经处理器处理后得到当前地图的相对位置,并实时显示到LCD上,使用户随时知道自己的方位;键盘和触摸屏作为人机接口,进行进一步的查询工作;USB用于同微机通信,是可选功能;存储器单元用于存储数据,包括操作系统和应用程序。1.2选择参考硬件平台目前半导体供应商提供各种ARM/XSCAE体系结构的处理器,有些ARM926和XSCALE核的处理器都已经用来设计手机等高端移动通信设备,有些则可以用来设计中低端的PDA设备。考虑价格因素,采用Samsung的S3C2410ARM920T处理器。S3C2410属于中低端的处理器,适合手持设备并且国内外参考硬件平台很多,系统大部分模块在硬件平台上可以直接测试。系统包括CPU、GPS模块、存储器单元、LCD模块、触摸屏、键盘、USB接口等部分组成,功能框图如图1-1所示。 图 1-1 系统功能框图根据项目的需求,可以适当调整硬件配置。例如:总共需要多少存储空间,使用什么型号的Flash等。同时也要考虑软件支持的程度,驱动程序能否支持新的接口芯片等。本项目的硬件参考配置如下:1、CPU单元(S3C2410X16/32-bit ARM920T内核)。2、存储器单元(2MB NOR Flash和32MB NAND Flash,64MB SDRAM)。3、复位电路(包括上电复位和手段复位,至少保持4个时钟周期的有效低电平,保证系统的可靠复位)。4、电源电路。5、时钟电路(外部 12MHz时钟输入,经内部PLL倍频至200MHz及32.768KHz的RTC时钟输入)。6、实时时钟(内部RTC带日历功能)。7、LCD接口。8、触摸屏接口。9、键盘接口。10、GPS模块。11、USB接口。1.3选择操作系统和软件Samsung S3C2410是最开放的开发设计平台。它的软件和硬件设计资料可以免费从互联网上获取,并且WindowsCE和Linux两种操作系统都能支持。在参考板上一般可以直接对Windows CE和Linux进行测试。Linux对S3C2410处理器支持得相当好,操作系统内核和应用程序都是开放源码的。因此,Linux可以完全按照自己的需要裁减配置系统,使得尺寸更小,而且Linux操作系统性能比Windows操作系统性能更优越。另外,可以避免支付 Windows产品的版税。S3C2410在Linux社区有庞大的用户群,可以获取丰富的开发调试信息。我们选择Linux作为工程样机的操作系统。由于图形界面要求并不复杂,可以选择QT/Embedded图形系统。第二章 系统硬件设计2.1电源电路设计电源电路的设计是非常重要的,特别是对于手持设备来说,如何减少系统的功耗往往成为工程师最为头疼的问题。不过本节不会深入研究如何降低功耗,只是用一个最普通的方案实现。电源框图如图2-1所示。 图2-1 电源管理系统功能框图电源由电池提供的2.4V电压输入,经DC/DC开关电源变换器升压至5V输出,3.3V由低压差线性电压源LDO通过5V调整输出得到,1.8V则由LDO通过3.3V调整输出得到,这样完成了系统供电。我们知道电源分开关电源和线性电源,那么在嵌入式系统中我们该如何选择呢?每种方式都有自己的优点和弱点,表2-1总结了这两种电源的优缺点。表2-1 开关电源和线性电源的优缺点线性电源通常由一只工作在电网频率的变压器、一个桥式整流器和一只电容器组成。变压器能够升压也能够降压,同时还与电网隔离。交流正弦波经过桥式整流器整流后的信号,再用电容器平滑为直流电压,这是未经调节的直流电压。为了在输出端得到调节性能较好的电压,增加了一只线性电压调节器。这样,电压的调节性能较好,但是电源的元件数量增多了,成本也提高了,效率通常低于 50%。开关电源输出电压的调节性能很好,频率较高,可以在输入端加上通用范围的电压,而且发热少、尺寸小、重量轻。开关电源的主要元件有脉冲宽度调制驱动器、MOSFET功率晶体管、一只变压器以及反馈电路。效率通常高于50%,既省电,元器件的寿命也更长。根据以上的分析,在输入输出压降幅度大、功耗高,或是要求升压的场合,往往采用开关电源方案;在压降小、功率要求不是很大的时候,使用线性电源为宜。电源是整个系统中最重要的环节,大多数不稳定的因素或故障都是由于电源方面的设计造成的,因此必须加以重视,否则后患无穷。本例中使用的DC/DC变换器是ST(意法半导体)公司的L6920,该产品广泛用于手持系统、移动电话、数模照相机等应用领域,原理图如图2-2所示。L6920 管脚说明如表2-2所示。图2-2 L6920电路原理图表 2-2 L6920管脚说明此外,电感电容的选取很重要,直接影响DC/DC的效率和输出波形,电感如COILCRAFTS、COILTRONICS、MURATA等公司的产品性能非常好,不过价格比较贵。一些我国台湾产的性价比也不错,电容的选取要容易一些。目前大陆生产的钽电容质量都还可以,如果要求不苛刻的话,完全满足要求。线性电源LDO的电路就简单得多,这里只列出输出3.3V的电路图,如图2-3所示。 图2-3 线性电源LDO的电路原理图当今有很多优秀的电源管理系统设计厂商,如Linear、TI、ADI、ON-SEMI、ST、Semtech,Intersil、Maxim等,有很大的选择余地。2.2复位电路设计复位对于一个系统来说很重要,由于各个单元要进入正常工作状态,都需要可靠的复位。正常情况下,一般有上电复位和手动复位。如果电源电压出现波动,系统会非正常复位,这时候会发生复位时间不够从而造成一些错误甚至死机,所以复位监控电路也是必要的复位。电路原理如图2-4所示。图2-4 复位电路原理图我们的复位电路使用的芯片是 MAX811,管脚说明如表2-3所示。表2-3 MAX811管脚说明根据其型号的后缀,MAX811的复位电平门限有5种规格(表2-4),例如表中用的是MAX811-T,就表示电压低于3.08V时,产生复位信号。表2-4 MAX811的规格如系统需要中有与CPU逻辑相反的复位信号,则在nRESET信号后加入非门反相输出。2.3时钟电路设计CPU部分需要两路时钟输入,一路是CPU工作时钟输入,另一路提供给RTC电路。CPU工作时钟是一个有源晶振,无需外部电容,直接输出12MHz时钟信号到CPU,由CPU内部PLL倍频到200MHz,两路时钟输入如图2-5所示。这两种是最普遍的时钟电路,在后面的CS8900A接口电路中也有时钟电路,做法是一样的。图2-5 时钟电路原理图2.4 SDRAM接口电路设计SDRAM具有容量大、存取速度快、成本低的特点,因而广泛应用到微机处理系统中。SDRAM主要用来存放执行代码和变量,是系统启动之后主要进行存取操作的存储器。由于SDRAM需要定时刷新以保持存储的数据,因而要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。S3C2410X及其他一些ARM芯片在片内具有独立的SDRAM刷新控制逻辑,可方便的与SDRAM接口。但某些ARM芯片则没有SDRAM刷新控制逻辑,就不能直接与SDRAM接口,在进行系统设计时应注意这一点。目前常用的SDRAM为8位/16位的数据宽度,我们可根据系统需求,构建16位或32位的SDRAM存储器系统。本例中使用的是两片三星K4S561632C-TC75芯片构建32位的SDRAM存储器系统。每片K4S561632C的存储容量为16组16M位(32MB),工作电压为3.3V,常见封装为54脚TSOP,兼容LVTTL接口,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh),16位数据宽度。其管脚说明如表2-5所示。表2-5 K4S561632C-TC75管脚说明SDRAM连接原理图如图2-6所示。图2-6 SDRAM电路原理图2.5 Flash 接口电路设计Flash存储器是一种在系统上(In-System)进行电擦写,掉电后信息不丢失的存储器。它具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。作为一种非易失性存储器,Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。现在市场上两种主要的非易失闪存技术是NOR和NAND。Intel于1988年首先开发出NOR Flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。1989年东芝公司发表了NAND Flash结构,强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级。NOR的特点是芯片内执行,这样应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口。Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。两者的速度差异如下:1、NOR的读速度比NAND稍快一些。2、NAND的写入速度比NOR快很多。3、NAND的4ms擦除速度远比NOR的5s快。4、大多数写入操作需要先进行擦除操作。5、NAND的擦除单元更小,相应的擦除电路更少。基于以上分析,我们用NOR Flash存储Boot代码,NAND Flash存储操作系统和应用程序代码。前者我们选用ST公司的M29W160(1MB16),后者用三星的K9F5608B(32MB8)。M29W160的单片存储容量为16M位(2MB),工作电压为2.7V3.6V,采用48脚TSOP封装或48脚FBGA封装,16位数据宽度,可以以8位(字节模式)或16位(字模式)数据宽度的方式工作。M29W160仅需单3V电压即可完成在系统的编程与擦除操作,通过对其内部的命令寄存器写入标准的命令序列,可对Flash 进行编程(烧写)、整片擦除、按扇区擦除以及其他操作。此外,它还支持任意地址的块写保护,十分方便用户。M29W160的管脚说明如表2-6所示。表2-6 M29W160的管脚说明M29W160的实际应用原理图如图2-7所示。图2-7 M29W160电路原理图三星公司的K9F系列NAND Flash存储器有着容量大、功耗低、成本低、电气性能好等特点是大容量Flash市场的有力竞争者。K9F5608B的单片存储容量为256Mbit,工作电压为2.7V3.6V,采用48脚TSOP封装或63脚TBGA封装,8位数据宽度,带有硬件数据保护功能,支持上电自动引导功能,块擦写时间为2ms,数据存储有效时间达10年以上。K9F5608B的管脚说明如表2-7所示。表2-7 K9F5608B的管脚说明K9F5608B的实际应用原理图如图2-8所示。图2-8 K9F5608B的电路原理图随着嵌入式技术的高速发展,Flash被广泛应用到各个领域,功能越来越强大,电路也日趋复杂。不过各大存储器生产厂商采用统一的标准进行设计生产,所以常用的型号往往是完全兼容的,可以直接替代。我们在应用Flash时,只要注意遵循数据手册的指导,按说明进行设计即可,一般不会出现问题。2.6 JTAG接口电路设计JTAG接口对于开发调试非常重要。对于产品来说也可以通过JTAG修复或者更新软件,所以最好预留这个接口,至少引出JTAG接口线。JTAG接口电路原理图如图2-9所示。 图2-9 JTAG电路原理图2.7 USB 接口电路设计S3C2410X提供了方便的USB 1.1接口,片内包括2个USB控制器,可设置为两个主机或1主机1设备。USB接口原理图如图2-10所示。图2-10 USB 电路原理图接口说明:CON14工作在A-TYPE(主机)状态,跳线J35、J36的2、3脚接通时CON16有效,工作在A-TYPE(主机模式)状态,跳线J35、J36的1、2脚接通时,CON17有效,工作在B-TYPE(设备模式)状态。2.8 键盘输入接口电路设计键盘采用中断方式连接,共6个功能键,占用6个中断源。当有按键被按下时,会实时产生中断请求信号,通知CPU处理。电路比较简单,如图2-11所示。图2-11 键盘输入电路原理图2.9 LCD(触摸屏)接口电路设计S3C2410X支持TFT/STN型的LCD及触摸屏,但是不能直接与LCD相连,需要接口板驱动LCD。S3C2410X通过50pin的插座作为LCD与触摸屏接口,至于接口板,市场上可以买到,管脚定义都是标准的。原理图如图2-11所示。图2-12 LCD 电路原理图2.10 GPS接口电路设计本设计选用的GPS模块是HIMARK的AR2010-GM,该产品体积小、功耗低,具备标准GPS功能,技术参数如下:定位精度 525 m CEP w/o S/A;速率 0.1 m/sw/o S/A;时间1sec(卫星时间);海拔高度 max.18000 m;速度 max.500 m/s;加速度 max.4g;端口 RS232 串口 x1,TTL x1; 速率 4.8、9.6、19.2 和 38.4kbit/s(可选择升级至 115.2kbit/s);输出协议 NMEA 0183:GGA、GLL、GSV、GSA、RMC、VTG;电源 3 VDC9VDC;消耗电流小于 27mA;卫星信道 12-channel;工作温度4085;储存温度55100;工作适度 5%95%;AR2010-GM 模块通信端口定义如表2-8所示。 表2-8 AR2010-GM模块通信端口定义虽然AR2010-GM模块的功能强大,内部结构复杂,但是与CPU的通信非常简单,采用标准 UART方式,只需4根信号线即可,无需任何附加元件就能和 S3C2410X 连接。2.11 PCB 设计制作随着处理器频率的不断加快,对PCB的布局和走线要求越来越高,早已不是仅仅布通就可以的时代了。当今的PCB板制造技术向高密度、高精度、细孔径、细导线、细间距、高可靠、多层化、高速传输、轻量、薄型方向发展,在生产上同时向提高生产率、降低成本、减少污染、适应多品种、小批量生产的方向发展。对于主频高达200MHz的S3C2410X处理器来说,它的PCB设计是硬件工作中的难点,前面所有工作都集中体现在电路板上,因而PCB的设计直接影响整个系统的性能。掌握好PCB设计的步骤和要点,不仅能加快开发进度,更会增加系统的稳定性,也为软件开发创造更好的条件。在PCB布板之前,一定要保证原理图的正确性,PCB的电气关系是由原理图的网表生成的,错误的原理图会直接导致错误的PCB板,还要重新返工,这一点相信所有的硬件工程师都有切身体会。第三章 系统软件设计在样机硬件设计阶段,就可以在参考硬件平台上进行软件开发。软件开发是一个反复修改编译的过程,交叉开发环境的软件开发流程如图3-1所示。 图3-1 程序开发流当样机电路板做好以后,还需要移植到新的平台上。因为样机是参照参考板设计的,所以大部分接口(特别是片上的设备接口)都相同。但是可能增减个别的接口或者替换外围芯片,例如:Flash 由 AMD 公司的 Am29LV800B 替换成 ST 公司的 M29W160(1Mbit16),容量增加了,擦写 Flash的指令也要相应修改。软件移植包括 Linux 系统的 3 个组成部分:U-Boot 移植、内核移植和应用程序移植。样机开发板名称假设为 GPS2410,程序移植时将引用这个名称。 3.1 U-Boot 的移植S3C2410的参考平台上一般使用vivi作为Linux引导程序。如果不习惯 vivi或者觉得U-Boot好用,那就把U-Boot移植到硬件板上吧。(1)在顶层Makefile 中为开发板添加新的配置选项,添加下面两行: gps2410_config : unconfig主机端编辑程序./mkconfig $(:_config=) arm arm920t gps2410 NULL s3c24x0(2)创建一个新目录存放开发板相关的代码,并且添加文件:board/gps2410/config.mkboard/gps2410/flash.cboard/gps2410/gps2410.cboard/gps2410/Makefileboard/gps2410/memsetup.Sboard/gps2410/u-boot.lds(3)为开发板添加新的配置文件。可以先复制参考开发板的配置文件,再修改。例如:$ cp include/configs/smdk2410.h include/configs/gps2410.h(4)配置开发板。$ make gps2410_config(5)编译 U-Boot。执行make命令,编译成功可以得到U-Boot映像。有些错误是跟配置选项是有关系的,通常打开某些功能选项会带来一些错误。一开始可以尽量跟参考板配置相同。(6)添加驱动或者功能选项。GPS2410开发板的以太网驱动仍然采用常见的CS8900以太网接口芯片。可能变化的是以太网控制寄存器基地址,只要在include/config/gps2410.h文件中修改即可。非常幸运,只要改一下基地址,gps2410的以太网接口就能够正常工作了。因为Flash换成了ST公司的M29W160,所以必须修改Flash的擦写函数。阅读Flash芯片手册或者擦写例程,确定Flash的扇区大小、块大小、块数和芯片大小,明确Flash的擦写操作指令。然后在源程序board/gps2410/flash.c 中修改。(7)调试U-Boot源代码,直到U-Boot在开发板上能够正常启动。这最好借助硬件仿真器来调试,至少需要烧写 Flash 的工具。3.2 Linux内核的移植S3C2410属于片上系统,处理器芯片具备串口、显示等外围接口的控制器。参考板上的设备驱动程序多数可以直接使用。但是有些驱动程序也需要移植或者重新开发。Linux-2.6.14的内核可以对S3C2410有基本的支持。第1个驱动是串口控制台。2.6内核的串口设备名称有了改变,由“ttyS”变成了“ttySAC”。所以只要内核命令行参数相应的修改成为:console=ttySAC0,115200。第2个驱动是以太网接口。GPS2410开发板的网络接口使用CS8900A芯片,但是Linux2.6内核中并没有支持S3C2410平台的驱动。幸运的是从Linux社区搜到了针对CS8900接口的补丁,这可省了不少力气。不然,还要认真分析一下网络驱动程序了。第3个驱动是LCD驱动。这个驱动程序是s3c2410的Frame Buffer驱动:s3c2410fb,源文件是drivers/video/s3c2410fb.c。问题是参考板和样机的LCD 不是同一品牌的,有些显示参数的设置需要修改。其他的驱动跟硬件参考平台很接近,只需要小修小改,就可以跑通了。最后还要考虑一下MTD驱动。MTD可以对Flash建立分区表,以便分别存储U-Boot、内核和文件系统。3.3 应用程序的开发移植应用程序的功能包含两个方面:一方面是实现图形用户界面,另一方面是GPS数据处理。图形用户界面可以基于QT/Embedded实现。使用QT/E空间可以开发一些简单便捷的图形应用程序,可以支持触摸屏和按键接口。GPS数据是通过串口通信的,所以这部分程序主要是Linux串口编程。另外程序还需要具体分析处理接收和发送的数据。当然也离不开Linux基本的系统工具,使用Busybox工具集就可以了。第四章 系统集成与部署各部分软件开发完成以后,就可以对样机进行彻底测试了。可以先通过NFS方式测试,再部署到Flash中测试。当然,这很可能是反复测试的过程。对于GPS2410样机,只对功能方面做了测试,没有测试性能方面的问题。本项目采用了RAMDISK文件系统,因为它是简单实用的。为了尽量使文件系统最小,按照下列步骤定制文件系统。(1)创建目录结构。在工作区中建立新目录 myfs,作为定制文件系统。执行下列命令创建目录结构。$ cd /workspace$ mkdir ./myfs$ cd ./myfs$ mkdir bin dev etc lib mnt proc sbin usr(2)创建设备节点。如果内核配置了 devfs,就不需要创建这些节点了。如果找到一个 MAKEDEV 脚本,可以很快地创建所有节点。$ cd dev/$ mknod m 660 mtd0 c 90 0$ mknod m 660 mtd2 c 90 4$ mknod m 660 mtdblock0 b 31 0$ mknod m 660 mtdblock1 b 31 1$ mknod m 660 mtdblock2 b 31 2(3)添加应用程序。编译安装 Busybox 及其链接,可以直接从测试过文件系统中复制。$ cd /workspace/myfs$ cd ./bin$ cp /usr/local/arm/3.3.2/rootfs/bin/busybox ./$ ln -s /bin/busybox basename$ ln -s /bin/busybox cat$ ln -s /bin/busybox chgrp$ ln -s /bin/busybox chmod$ ln -s /bin/busybox chown$ ln -s /bin/busybox clear$ ln -s /bin/busybox cp$ ln -s /bin/busybox cut$ ln -s /bin/busybox date$ ln -s /bin/busybox dd$ ln -s /bin/busybox df$ ln -s /bin/busybox dmesg$ ln -s /bin/busybox du$ ln -s /bin/busybox echo$ ln -s /bin/busybox env$ ln -s /bin/busybox expr$ ln -s /bin/busybox false$ ln -s /bin/busybox free$ ln -s /bin/busybox grep$ ln -s /bin/busybox gunzip$ ln -s /bin/busybox gzip$ ln -s /bin/busybox head$ ln -s /bin/busybox hostname$ ln -s /bin/busybox kill$ ln -s /bin/busybox killall$ ln -s /bin/busybox ln$ ln -s /bin/busybox ls$ ln -s /bin/busybox mkdir$ ln -s /bin/busybox mknod$ ln -s /bin/busybox more$ ln -s /bin/busybox mount$ ln -s /bin/busybox mv$ ln -s /bin/busybox ping$ ln -s /bin/busybox ps$ ln -s /bin/busybox pwd$ ln -s /bin/busybox rdate$ ln -s /bin/busybox rm$ ln -s /bin/busybox rmdir$ ln -s /bin/busybox sed$ ln -s /bin/busybox sh$ ln -s /bin/busybox sleep$ ln -s /bin/busybox sync$ ln -s /bin/busybox tail$ ln -s /bin/busybox telnet$ ln -s /bin/busybox test$ ln -s /bin/busybox time$ ln -s /bin/busybox true$ ln -s /bin/busybox umount$ ln -s /bin/busybox uname$ ln -s /bin/busybox uptime$ ln -s /bin/busybox usleep$ ln -s /bin/busybox vi$ ln -s /bin/busybox wget$ ln -s /bin/busybox zcat$ cd ./sbin$ ln -s /bin/busybox halt$ ln -s /bin/busybox ifconfig$ ln -s /bin/busybox init$ ln -s /bin/busybox reboot$ ln -s /bin/busybox route另外还要把开发的图形和应用程序安装到相应目录下。(4)添加库。应用程序运行是依赖于动态库的,还需要安装依赖的库。$ cd lib$ cp /opt/target/rootfs/lib/ld-linux.so.2 ./$ cp /opt/target/rootfs/lib/libc.so.6 ./$ cp /opt/target/rootfs/lib/libnss_dns.so.2 ./$ cp /opt/target/rootfs/lib/libnss_files.so.2 ./$ cp /opt/target/rootfs/lib/libresolv.so.2 ./(5)添加配置脚本。Linux 系统的启动脚本大部分在etc目录下,复制etc下的一些脚本,并且配置修改。也可以自己定制一个简单的脚本/linuxrc,完成全部初始化工作。#/linuxrc(6)制作RAMDISK。$ mkdir /mnt/initrd$ dd if=/dev/zero of=initrd.img bs=1k count=8192$ mkfs.ext2 F initrd.img$ mount o loop initrd.img /mnt/initrd$ cp a ./myfs/* /mnt/initrd$ umount /mnt/initrd$ gzipbestc initrd.img initrd.img.gzinitrd.img.gz 就是一个RAMDISK文件系统映像的压缩格式。接下来还要重新配置编译一下内核。去掉一些用于交叉开发的选项,还要修改内核命令行参数,确定启动挂接本地的 RAMDISK 文件系统。因为使用U-Boot引导程序,需要使用U-Boot格式的内核映像和RAMDISK映像。内核映像只要执行“make uImage”就可以得到。RAMDISK需要通过mkimage 工具手工转换,命令如下。$ mkimage -n RAM disk -A arm -O linux -T ramdisk -C gzipa 0x30800000e 0x30800000 -d initrd.img.gz initrd.uboot然后,通过U-Boot把uImage和initrd.uboot烧写到Flash对应分区中去。= tftp 30100000 uImage= erase 40000 13ffff= cp.b 30100000 40000 100000= tftp 30100000 initrd.img.gz= erase 140000 3fffff= cp.b 30100000 100000 200000最后,还要设置U-Boot环境变量,让系统自动启动。= setenv bootargs root=/dev/ram rw initrd=0x30800000,8M= setenv bootcmd bootm 40000 140000= setenv bootdelay 3= saveenv系统复位,Linux系统就可以完全自动地从本地Flash中启动了。至此,一个GPS定位系统可以正常工作了。但是考虑到产品成本控制,升级和维护,真正产品化还需要大量工作。参考文献1嵌入式Linux程序设计案例与实验教程机械工业出版社出版 2高成发.GPS测量.北京:人民交通出版社,20013uBlox Co.GPS定位元件目录.Rev3,2004104 倪继利.Qt及Linux操作系统窗口设计.北京:电子工业出版社,2006.5 李征航.黄劲松.GPS测量与数据处理M.湖北:武汉大学出版社,2005.6 刘淼.嵌入式系统接口设计与Linux驱动程序开发M.北京:北京航空航天大学出版社,2006.7 严盈富.触摸屏与PLC入门M.北京:人民邮电出版社,2006.- 21 -
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!