ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:1.12MB ,
资源ID:7833453      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7833453.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ARM9的GPS定位程序在Linux26下的移植毕业设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ARM9的GPS定位程序在Linux26下的移植毕业设计.docx

1、ARM9的GPS定位程序在Linux26下的移植毕业设计ARM9的GPS定位程序在Linux2.6下的移植摘要随着生活节奏的日益加快,人们把越来越多的精力投入到了工作之中,对于子女尤其是儿童的照顾就显得力不从心了。现代通信技术的发展,已经可以使这样的设计实现利用GPS定位。GPS具有高效的定位功能,定位频率高,误差小。嵌入式设备功能强大、可靠性高,开源的Linux操作系统又为其添加了新的生命力。 该GPS程序之前在博创2.4开发平台上运行正常,但是考虑到2.6版本比2.4版本有更多的功能函数等优势,在参考了大量资料后,将博创2.4平台升级为2.6版本。但是由于版本不同的问题,程序在2.6平台上

2、运行不正常,于是翻看了大量资料,对其进行了移植工作。关键词: 儿童定位;GPS;Linux;移植ABSTRACTAs the pace of life quickening, people put more energy into work, especially childrens care for children is not. The development of modern communication technology, have been able to make such a design - using GPS. GPS positioning function is h

3、igh, the location of high frequency and small error. Embedded devices has strong function, high reliability, the open-source Linux operating system and to add a new vitality.The GPS program before running on 2.4 development platform, but given the 2.6 version has more features than version 2.4 funct

4、ion advantages, in reference to a large amount of information, will have a 2.4 platform upgrade to version 2.6. But version due to the different problems, programs run on 2.6 platform is not normal, then flicking through a large amount of data, on the porting effort.Key words: childrens positioning;

5、 GPS; Linux; transplant 引言随着生活节奏的加快,人们把越来越多的精力投入到了工作之中,对于子女尤其是儿童的照顾就显得力不从心了。很多儿童的意外就是在无人看管的情况下发生的。因此,一种能够监控儿童活动情况并能够实时和家长互通的系统的开发就显得很有必要了。当父母离开时,该系统可将儿童的位置信息传送到父母携带的接收设备中,使家长对儿童的具体情况能及时掌握,从而达到避免意外事件的发生的目的。目前,国内外厂商已经研发出该类产品,市场前景广阔。因此,儿童定位系统设计所研究的问题是具有实际的意义的。本次毕业设计ARM9的GPS定位程序在Linux2.6下的移植,对博创开发平台进行了升

6、级,并针对版本不同对端口及内核进行了分析,对该程序进行了移植。本论文共五章,第一章为绪论,主要概述儿童定位的现状及发展前景;第二章开发平台简介,主要介绍博创开发平台;第三章为开发工具软件的安装与配置,介绍其软件环境;第四章为开发平台升级,说明了2.4版本与2.6版本在驱动上的区别;第五章为GPS,主要说明GPS的实现原理和接口。 1绪论1.1 儿童定位系统背景及应用现状随着生活节奏的日益加快,人们把越来越多的精力投入到了工作之中,对于子女尤其是儿童的照顾就显得力不从心了。儿童的很多意外都是在无人看管的情况下发生的。因此,一种能够实时监护儿童的日常活动,并可以及时和家长通信的系统的设计就显得很有

7、必要了。当父母离开时,该系统可将儿童的位置、活动范围、声音等信息传送到父母携带的接收设备中,使家长对儿童的具体情况能及时掌握,从而达到避免意外事件的发生的目的。目前,国内外厂商已经研发出该类产品,市场前景广阔。因此,儿童定位系统设计所研究的问题是具有实际的意义的。现代通信技术的发展,已经可以使这样的设计实现利用GPS定位、GSM通信、QT、嵌入式Linux平台进行系统的设计。GPS(Global Positioning System全球定位系统)是在海、陆、空 进行全方位实时三维导航与定位的新一代卫星导航与定位系统。GPS具有高效的定位功能,定位频率高,误差小等优点。GPS由三个独立的部分组成

8、【1】:空间部分:21颗工作卫星,3 颗备用卫星。地面支撑系统:1个主控站,3个注入站,5个监测站。用户设备部分:接收GPS 卫星发射信号,以获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS 接收机硬件一般由主机、天线和电源组成。Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身

9、只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统【1】。1.2 所需做的工作基于Linux操作系统的应用开发环境是由开发板和pc机所构成。目标硬件开发板用于运行操作系统的内核编译、应用程序的开发和调试则需要通过pc机来完成。实现交叉编译。因为Linux版本问题以及开发平台的不同,需要自己摸索和修改。首先需要查找有关于系统升级的资料1,了解升级方法和步骤,搭建平台,为程序移植做准备。所谓 Linux 移植就是把Linux 操作系统针对具体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。这个概念目前在

10、嵌入式开发领域讲的比较多。其基本内容是:获取某一版本的Linux 内核源码,根据我们的具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于我们目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC 机)的新操作系统,对该系统进行针对我们目标平台的交叉编译,生成一个内核映象文件,最后通过一些手段把该映象文件烧写(安装)到我们目标平台中。而通常对Linux 源码的改写工作难度较大,它要求你不仅对Linux内核结构要非常熟悉,还要求你对目标平台的硬件结构要非常熟悉。同时还要求你对相关版本的汇编语言较熟悉,因为与体系结构相关的部分源码往往是用汇编写

11、的。所以这部分工作一般由目标平台提供商来完成。比如说针对目前嵌入式系统中最流行的ARM 平台,它的这部分工作就是由英国ARM 公司的工程师完成的,我们所要做的就是从其网站上下载相关版本Linux 内核的补丁(Patch)。把它打到我们的Linux 内核上,再进行交叉编译就行。升级成功后根据移植步骤,首先了解GPS接口原理和各个管教的函数定义及其参数设置,包括串口连接的方式。其次,还要更深入的了解其内核设置,对内核驱动有个详细的了解,学习两个版本的区别。最后将程序成功调试出来。2硬件平台系统简介2.1 博创平台简介本次毕设所使用的硬件系统为博创UP-CUP S2410/P270嵌入式开发平台如图

12、2-1,这是一款经典的嵌入式开发平台,拥有许多有用的功能模块可供我们进行系统开发。由北京博创兴业科技有限公司开发的UP-NetARM3000、UP-NetARM2410 系列以及UP-TECHPXA270 系列实验仪器。UP-NetARM3000 的CPU为ARM7TDMI内核的三星S3C44B0X01 芯片,由于没有MMU(内存管理单元)只能运行uClinux,UP-NetARM2410 系列的CPU为ARM920T内核的三星S3c2410 芯片。UP-TECHPXA270 系列实验仪器为Intel Xscale系列的PXA270 CPU。 其中USB主口可选择的模块有蓝牙模块和摄像头模块;

13、168pin扩展插槽的可选模块有GPS+GPRS模块,FPGA模块和CAN节点模块。本课题所使用的模块就是GPS+GPRS模块。图2-1 博创平台2.2嵌入式Linux简介 Linux 正在嵌入式开发领域稳步发展。Linux 使用 GPL,所有对特定开发板、PDA、掌上机、可携带设备等使用嵌入式Linux 感兴趣的人都可以从因特网上免费下载其内核和应用程序,并开始移植和开发。许多 Linux 改良品种迎合了嵌入式市场,它们包括 RTLinux(实时 Linux)、uclinu(用于非 MMU 设备的 Linux)、Montavista Linux(用于 ARM、MIPS、PPC 的 Linux

14、 分发版)、ARM-Linux(ARM 上的 Linux)和其它 Linux 系统。嵌入式Linux 的发展比较迅速。NEC、索尼已经在销售个人视频录像机等基于Linux 的消费类电子产品,摩托罗拉则计划在其未来的大多数手机上使用Linux,IBM 也制定了在手持机上运行Linux 的计划。数年来,“Linux 标准库”组织一直在从事对在服务器上运行的Linux 进行标准化的工作,现在,嵌入式计算领域也开始了这一工作。嵌入式Linux 标准吸引了“Linux 标准库”以及Unix 组织中有益的元素。2.3GPS模块简介GPS(Global Positioning System全球定位系统)GP

15、S 的主要优点包括:(1)全球,全天候工作:能为用户提供连续,实时的三维位置,三维速度和精密时间。不受天气的影响。(2)定位精度高:单机定位精度优于10 米,采用差分定位,精度可达厘米级和毫米级。(3)功能多,应用广:目前已广泛的应用于大地测量、工程测量、航空摄影测量、运载工具导航和管制、地壳运动监测、工程变形监测、资源勘察、地球动力学等学科领域。GPS 由三个独立的部分组成:空间部分:21 颗工作卫星,3 颗备用卫星。地面支撑系统:1 个主控站,3 个注入站,5 个监测站。用户设备部分:接收GPS 卫星发射信号,以获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS 接收机硬件一

16、般由主机、天线和电源组成。2.3.1GPS实现原理 GPS 定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。如图所示,假设t 时刻在地面待测点上安置GPS 接收机,可以测定GPS 信号到达接收机的时间t,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式,如图2-1、 图2-1 GPS实现原理方程上述四个方程式中待测点坐标x、y、z 和Vto 为未知参数,其中di=cti (i=1、2、3、4)。di (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4 到接收机之间的距离。ti(i=1、2、3、4) 分别为卫星1

17、、卫星2、卫星3、卫星4 的信号到达接收机所经历的时间。c 为GPS 信号的传播速度(即光速)。四个方程式中各个参数意义如下:x、y、z 为待测点坐标的空间直角坐标。xi 、yi 、zi (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4 在t 时刻的空间直角坐标,可由卫星导航电文求得。Vt i (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4 的卫星钟的钟差,由卫星星历提供。Vto 为接收机的钟差。由以上四个方程即可解算出待测点的坐标x、y、z 和接收机的钟差Vto 。目前GPS 系统提供的定位精度是优于10 米,而为得到更高的定位精度,通常采用差分GPS技术:将一台G

18、PS 接收机安置在基准站上进行观测。根据基准站已知精密坐标,计算出基准站到卫星的距离改正数,并由基准站实时将这一数据发送出去。用户接收机在进行GPS观测的同时,也接收到基准站发出的改正数,并对其定位结果进行改正,从而提高定位精度。如图2-2图2-2 GPS2.3.2GPS接口接口特性如下:RS-232 输出,可输入RS232 或者具有RS-232 极性的TTL 电平。可选的波特率为:300、600、1200、2400、4800、9600、19200。串口输出协议:输出NEMA0183 格式的ASCII 码语句,输出:GPALM,GPGGA,GPGLL,GPGSA,GPGSV,GPRMC,GPV

19、TG(NMEA 标准语句);PGRMB,PGRME,PGRMF,PGRMM,PGRMT,PGRMV(GARMIN定义的语句)。还可将串口设置为输出包括GPS 载波相位数据的二进制数据。输入:初始位置、时间、秒脉冲状态、差分模式、NMEA 输出间隔等设置信息。在缺省的状态下,GPS 模块输出数据的波特率为4800,输出信息包括:GPRMC、GPGGA、GPGSA、GPGSV、PGRME 等,每秒钟定时输出。3开发工具软件与系统软件部分3.1 儿童定位系统程序框图整个儿童定位系统程序框图如图3-1所示,本次毕业设计主要研究GPS模块。图3-1 儿童定位系统程序框图3.2 开发工具软件的安装参考li

20、nux 虚拟机使用说明里的Samba服务器的的配置。参照执行安装环境脚本命令:./install安装脚本程序将自动建立/arm2410cl 目录,并将所有开发软件包安装到/arm2410cl 目录下,同时自动配置编译环境,建立合适的符号连接。注意: 安装完成后看一下主编译器Armv4l-unknown-linux-gcc 是否在/opt/host/armv4l/bin/,如果不是这个路径,请使用vi 修改/root/.bash_profile 文件中PATH变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ , 存盘后执行: source/root/.b

21、ash_profile,则以后armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入armv,然后按tab 键,会自动显示armv4l-unknown-linux-3.3 开发环境配置配置网络,包括配置IP 地址、NFS 服务、防火墙。网络配置主要是要安装好以太网卡,对于一般常见的RTL8139 网卡,REDHAT9.0 可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。然后配置宿主机IP 为192.168.0.121。双击设备eth0 的蓝色区域,进入以太网设置界面,对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP 访问它全部拒绝,这

22、样其它网络设备根本无法访问它,即无法用NFS mount 它,许多网络功能都将无法使用。因此网络安装完毕后,应立即关闭防火墙。操作如下:点击红帽子开始菜单,选择安全级别设置,选中无防火墙。在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables 服务的勾去掉,并确保nfs 选项选中。配置NFS:点击主菜单运行系统设置-服务器设置-NFS 服务器(英文为:SETUP-SYSTEMSERVICE-NFS),点击增加出现如下在界面,在目录(Drictory):中填入需要共享的路径,在主机(Hosts):中填入允许进行连接的主机IP 地址。并选择允许客户对共享目录的操作为只读(Reado

23、nly)或读写(Read/write)。配置完成后,可用如下办法简单测试一下NFS 是否配置好了:在宿主机上自己mount 自己,看是否成功就可以判断NFS 是否配好了。例如在宿主机/目录下执行:mount 192.168.0.10:/arm2410cl /mnt其中192.168.0.10 应为主机的IP 地址。然后到/mnt/目录下看是否可以列出/arm2410cl 目录下的所有文件和目录,可以则说明mount 成功,NFS 配置成功。3.4 超级终端超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应程序,通过这些程序,可以通过超级终端与嵌入式系统交互,使超级终端成为嵌

24、入式系统的“显示器”。超级终端的原理是将用户输入随时发向串口(采用TCP协议时是发往网口,这里只说串口的情况),但并不显示输入。它显示的是从串口接收到的字符。所以,嵌入式系统的相应程序应该完成的任务便是:1、将自己的启动信息、过程信息主动发到运行有超级终端的主机;2、将接收到的字符返回到主机,同时发送需要显示的字符(如命令的响应等)到主机。3、在单片机开发时使用。如图3-2所示图3-2 设置步骤将波特率设为115200,数据流控制设为无。3.5 FlashFXPFlashFXP是一款功能强大的FXP/FTP软件,集成了其它优秀的FTP软件的优点,如CuteFTP的目录比较,支持彩色文字显示;如

25、BpFTP支持多目录选择文件,暂存目录;又如LeapFTP的界面设计。支持目录(和子目录)的文件传输,删除;支持上传,下载,以及第三方文件续传;可以跳过指定的文件类型,只传送需要的本件;可自定义不同文件类型的显示颜色;暂存远程目录列表,支持FTP代理及Socks 3&4;有避免闲置断线功能,防止被FTP平台踢出;可显示或隐藏具有“隐藏”属性的文档和目录;支持每个平台使用被动模式等。GPS连接后,需要通过FlashFXP来完成代码的导入。3.6 GPS程序3.6程序分析GPS 原始采集的数据如上图所示。在接收进程receive 中收到“n”之后,表示收到一条完整的信息。在show_gps_inf

26、o 进程中进行数据的解析和显示:void* show_gps_info(void * data)while(1)if(GET_GPS_OK)GET_GPS_OK=FALSE;printf(%s,GPS_BUF);gps_parse(GPS_BUF,&gps_info);show_gps(&gps_info);usleep(100);if(STOP)break;gps_parse 实现GPRMC 格式数据的解析:void gps_parse(char *line,GPS_INFO *GPS)int i,tmp,start,end;char c;char* buf=line;c=buf5;if(c

27、=C) /判断GPRMC语句GPS-D.hour =(buf 7-0)*10+(buf 8-0); /读取小时GPS-D.minute =(buf 9-0)*10+(buf10-0); /读取分钟GPS-D.second =(buf11-0)*10+(buf12-0); /读取秒tmp = GetComma(9,buf);GPS-D.day =(buftmp+0-0)*10+(buftmp+1-0); /读取日GPS-D.month =(buftmp+2-0)*10+(buftmp+3-0); /读取月GPS-D.year =(buftmp+4-0)*10+(buftmp+5-0)+2000;

28、/读取年/-GPS-status =bufGetComma(2,buf); /读取小时GPS-latitude =get_double_number(&bufGetComma(3,buf); /读取纬度GPS-NS =bufGetComma(4,buf); /南纬or 北纬GPS-longitude=get_double_number(&bufGetComma(5,buf); /读取经度GPS-EW =bufGetComma(6,buf); /东经或者西经#ifdef USE_BEIJING_TIMEZONEUTC2BTC(&GPS-D);#endifif(c=A) /$GPGGAGPS-hi

29、gh = get_double_number(&bufGetComma(9,buf);/读取小时4移植过程4.1 Linux2.6内核驱动与2.4的区别随着Linux2.6的发布,由于2.6内核做了新的改动,各个设备的驱动程序在不同程度上要进行改写。1、 使用新的入口必须包含 module_init(your_init_func);module_exit(your_exit_func);老版本:int init_module(void);void cleanup_module(voi);2.4中两种都可以用,对如后面的入口函数不必要显示包含任何头件。2、 模块参数必须显式包含module_pa

30、ram(name, type, perm);module_param_named(name, value, type, perm);参数定义module_param_string(name, string, len, perm);module_param_array(name, type, num, perm);老版本:MODULE_PARM(variable,type);MODULE_PARM_DESC(variable,type);3、 模块别名MODULE_ALIAS(alias-name);这是新增的,在老版本中需在/etc/modules.conf配置,现在在代码中就可以实现。4、

31、结构体的初试化gcc开始采用ANSI C的struct结构体的初始化形式:static struct some_structure = .field1 = value,.field2 = value,.;老版本:非标准的初试化形式static struct some_structure = field1: value,field2: value,.;5、 内核可剥夺preempt_disable();preempt_enable_no_resched();preempt_enable_noresched();preempt_check_resched();6、 新增完成事件(completion events)init_completion(&my_comp);void wait_for_completion(struct completion *comp);void complete(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1