《arm9的gps定位程序在linux26下的移植----大学毕业(论文)设计.doc》由会员分享,可在线阅读,更多相关《arm9的gps定位程序在linux26下的移植----大学毕业(论文)设计.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 目录摘要IABSTRACTII引言11绪论21.1儿童定位系统背景及应用现状21.2所需做的工作22硬件平台系统简介42.1博创平台简介42.2嵌入式Linux简介42.3GPS模块简介52.3.1GPS实现原理52.3.2GPS接口73开发工具软件与系统软件部分83.1儿童定位系统程序框图83.2开发工具软件的安装83.3开发环境配置83.4超级终端93.5FlashFXP103.6程序分析104移植过程134.1Linux2.6内核驱动与2.4的区别134.2平台升级操作步骤154.3.1烧写 u-boot164.3.2烧写内核、文件系统及应用程序184.3.3烧写文件系统194.3.4
2、烧写应用程序195实验验证216结论24致谢25参考文献26摘要随着生活节奏的日益加快,人们把越来越多的精力投入到了工作之中,对于子女尤其是儿童的照顾就显得力不从心了。现代通信技术的发展,已经可以使这样的设计实现利用GPS定位。GPS具有高效的定位功能,定位频率高,误差小。嵌入式设备功能强大、可靠性高,开源的Linux操作系统又为其添加了新的生命力。 该GPS程序之前在博创2.4开发平台上运行正常,但是考虑到2.6版本比2.4版本有更多的功能函数等优势,在参考了大量资料后,将博创2.4平台升级为2.6版本。但是由于版本不同的问题,程序在2.6平台上运行不正常,于是翻看了大量资料,对其进行了移植
3、工作。关键词: 儿童定位;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 high, the location of hi
4、gh 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 function advantages, in refe
5、rence 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; GPS; Linux; transplant
6、I引言随着生活节奏的加快,人们把越来越多的精力投入到了工作之中,对于子女尤其是儿童的照顾就显得力不从心了。很多儿童的意外就是在无人看管的情况下发生的。因此,一种能够监控儿童活动情况并能够实时和家长互通的系统的开发就显得很有必要了。当父母离开时,该系统可将儿童的位置信息传送到父母携带的接收设备中,使家长对儿童的具体情况能及时掌握,从而达到避免意外事件的发生的目的。目前,国内外厂商已经研发出该类产品,市场前景广阔。因此,儿童定位系统设计所研究的问题是具有实际的意义的。本次毕业设计ARM9的GPS定位程序在Linux2.6下的移植,对博创开发平台进行了升级,并针对版本不同对端口及内核进行了分析,对该
7、程序进行了移植。本论文共五章,第一章为绪论,主要概述儿童定位的现状及发展前景;第二章开发平台简介,主要介绍博创开发平台;第三章为开发工具软件的安装与配置,介绍其软件环境;第四章为开发平台升级,说明了2.4版本与2.6版本在驱动上的区别;第五章为GPS,主要说明GPS的实现原理和接口。 ARM9的GPS定位程序在Linux2.6下的移植241绪论1.1 儿童定位系统背景及应用现状随着生活节奏的日益加快,人们把越来越多的精力投入到了工作之中,对于子女尤其是儿童的照顾就显得力不从心了。儿童的很多意外都是在无人看管的情况下发生的。因此,一种能够实时监护儿童的日常活动,并可以及时和家长通信的系统的设计就
8、显得很有必要了。当父母离开时,该系统可将儿童的位置、活动范围、声音等信息传送到父母携带的接收设备中,使家长对儿童的具体情况能及时掌握,从而达到避免意外事件的发生的目的。目前,国内外厂商已经研发出该类产品,市场前景广阔。因此,儿童定位系统设计所研究的问题是具有实际的意义的。现代通信技术的发展,已经可以使这样的设计实现利用GPS定位、GSM通信、QT、嵌入式Linux平台进行系统的设计。GPS(Global Positioning System全球定位系统)是在海、陆、空 进行全方位实时三维导航与定位的新一代卫星导航与定位系统。GPS具有高效的定位功能,定位频率高,误差小等优点。GPS由三个独立的
9、部分组成【1】:空间部分:21颗工作卫星,3 颗备用卫星。地面支撑系统:1个主控站,3个注入站,5个监测站。用户设备部分:接收GPS 卫星发射信号,以获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS 接收机硬件一般由主机、天线和电源组成。Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这
10、个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统【1】。1.2 所需做的工作基于Linux操作系统的应用开发环境是由开发板和pc机所构成。目标硬件开发板用于运行操作系统的内核编译、应用程序的开发和调试则需要通过pc机来完成。实现交叉编译。因为Linux版本问题以及开发平台的不同,需要自己摸索和修改。首先需要查找有关于系统升级的资料1,了解升级方法和步骤,搭建平台,为程序移植做准备。所谓 Linux 移植就是把Linux 操作系统针对具体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。这个概
11、念目前在嵌入式开发领域讲的比较多。其基本内容是:获取某一版本的Linux 内核源码,根据我们的具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于我们目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC 机)的新操作系统,对该系统进行针对我们目标平台的交叉编译,生成一个内核映象文件,最后通过一些手段把该映象文件烧写(安装)到我们目标平台中。而通常对Linux 源码的改写工作难度较大,它要求你不仅对Linux内核结构要非常熟悉,还要求你对目标平台的硬件结构要非常熟悉。同时还要求你对相关版本的汇编语言较熟悉,因为与体系结构相关的部分源码往往是
12、用汇编写的。所以这部分工作一般由目标平台提供商来完成。比如说针对目前嵌入式系统中最流行的ARM 平台,它的这部分工作就是由英国ARM 公司的工程师完成的,我们所要做的就是从其网站上下载相关版本Linux 内核的补丁(Patch)。把它打到我们的Linux 内核上,再进行交叉编译就行。升级成功后根据移植步骤,首先了解GPS接口原理和各个管教的函数定义及其参数设置,包括串口连接的方式。其次,还要更深入的了解其内核设置,对内核驱动有个详细的了解,学习两个版本的区别。最后将程序成功调试出来。2硬件平台系统简介2.1 博创平台简介本次毕设所使用的硬件系统为博创UP-CUP S2410/P270嵌入式开发
13、平台如图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主口可选择的模块有蓝牙模块和摄像头
14、模块;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 的 Li
15、nux 分发版)、ARM-Linux(ARM 上的 Linux)和其它 Linux 系统。嵌入式Linux 的发展比较迅速。NEC、索尼已经在销售个人视频录像机等基于Linux 的消费类电子产品,摩托罗拉则计划在其未来的大多数手机上使用Linux,IBM 也制定了在手持机上运行Linux 的计划。数年来,“Linux 标准库”组织一直在从事对在服务器上运行的Linux 进行标准化的工作,现在,嵌入式计算领域也开始了这一工作。嵌入式Linux 标准吸引了“Linux 标准库”以及Unix 组织中有益的元素。2.3GPS模块简介GPS(Global Positioning System全球定位系统
16、)GPS 的主要优点包括:(1)全球,全天候工作:能为用户提供连续,实时的三维位置,三维速度和精密时间。不受天气的影响。(2)定位精度高:单机定位精度优于10 米,采用差分定位,精度可达厘米级和毫米级。(3)功能多,应用广:目前已广泛的应用于大地测量、工程测量、航空摄影测量、运载工具导航和管制、地壳运动监测、工程变形监测、资源勘察、地球动力学等学科领域。GPS 由三个独立的部分组成:空间部分:21 颗工作卫星,3 颗备用卫星。地面支撑系统:1 个主控站,3 个注入站,5 个监测站。用户设备部分:接收GPS 卫星发射信号,以获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS 接收机
17、硬件一般由主机、天线和电源组成。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) 分别为
18、卫星1、卫星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技术:将
19、一台GPS 接收机安置在基准站上进行观测。根据基准站已知精密坐标,计算出基准站到卫星的距离改正数,并由基准站实时将这一数据发送出去。用户接收机在进行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,
20、GPVTG(NMEA 标准语句);PGRMB,PGRME,PGRMF,PGRMM,PGRMT,PGRMV(GARMIN定义的语句)。还可将串口设置为输出包括GPS 载波相位数据的二进制数据。输入:初始位置、时间、秒脉冲状态、差分模式、NMEA 输出间隔等设置信息。在缺省的状态下,GPS 模块输出数据的波特率为4800,输出信息包括:GPRMC、GPGGA、GPGSA、GPGSV、PGRME 等,每秒钟定时输出。3开发工具软件与系统软件部分3.1 儿童定位系统程序框图整个儿童定位系统程序框图如图3-1所示,本次毕业设计主要研究GPS模块。GSM通信用户显示信息QT界面提供信息提供信息GPS信息通
21、信控制图3-1 儿童定位系统程序框图3.2 开发工具软件的安装参考linux 虚拟机使用说明里的Samba服务器的的配置。参照执行安装环境脚本命令:./install安装脚本程序将自动建立/arm2410cl 目录,并将所有开发软件包安装到/arm2410cl 目录下,同时自动配置编译环境,建立合适的符号连接。注意: 安装完成后看一下主编译器Armv4l-unknown-linux-gcc 是否在/opt/host/armv4l/bin/,如果不是这个路径,请使用vi 修改/root/.bash_profile 文件中PATH变量为PATH=$PATH:$HOME/bin:/opt/host/
22、armv4l/bin/ , 存盘后执行: source/root/.bash_profile,则以后armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入armv,然后按tab 键,会自动显示armv4l-unknown-linux-3.3 开发环境配置配置网络,包括配置IP 地址、NFS 服务、防火墙。网络配置主要是要安装好以太网卡,对于一般常见的RTL8139 网卡,REDHAT9.0 可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。然后配置宿主机IP 为192.168.0.121。双击设备eth0 的蓝色区域,进入以太网设置界面,对于REDHAT
23、9.0,它默认的是打开了防火墙,因此对于外来的IP 访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFS mount 它,许多网络功能都将无法使用。因此网络安装完毕后,应立即关闭防火墙。操作如下:点击红帽子开始菜单,选择安全级别设置,选中无防火墙。在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables 服务的勾去掉,并确保nfs 选项选中。配置NFS:点击主菜单运行系统设置-服务器设置-NFS 服务器(英文为:SETUP-SYSTEMSERVICE-NFS),点击增加出现如下在界面,在目录(Drictory):中填入需要共享的路径,在主机(Hosts):中填入允许进行
24、连接的主机IP 地址。并选择允许客户对共享目录的操作为只读(Readonly)或读写(Read/write)。配置完成后,可用如下办法简单测试一下NFS 是否配置好了:在宿主机上自己mount 自己,看是否成功就可以判断NFS 是否配好了。例如在宿主机/目录下执行:mount 192.168.0.10:/arm2410cl /mnt其中192.168.0.10 应为主机的IP 地址。然后到/mnt/目录下看是否可以列出/arm2410cl 目录下的所有文件和目录,可以则说明mount 成功,NFS 配置成功。3.4 超级终端超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应
25、程序,通过这些程序,可以通过超级终端与嵌入式系统交互,使超级终端成为嵌入式系统的“显示器”。超级终端的原理是将用户输入随时发向串口(采用TCP协议时是发往网口,这里只说串口的情况),但并不显示输入。它显示的是从串口接收到的字符。所以,嵌入式系统的相应程序应该完成的任务便是:1、将自己的启动信息、过程信息主动发到运行有超级终端的主机;2、将接收到的字符返回到主机,同时发送需要显示的字符(如命令的响应等)到主机。3、在单片机开发时使用。如图3-2所示图3-2 设置步骤将波特率设为115200,数据流控制设为无。3.5 FlashFXPFlashFXP是一款功能强大的FXP/FTP软件,集成了其它优
26、秀的FTP软件的优点,如CuteFTP的目录比较,支持彩色文字显示;如BpFTP支持多目录选择文件,暂存目录;又如LeapFTP的界面设计。支持目录(和子目录)的文件传输,删除;支持上传,下载,以及第三方文件续传;可以跳过指定的文件类型,只传送需要的本件;可自定义不同文件类型的显示颜色;暂存远程目录列表,支持FTP代理及Socks 3&4;有避免闲置断线功能,防止被FTP平台踢出;可显示或隐藏具有“隐藏”属性的文档和目录;支持每个平台使用被动模式等。GPS连接后,需要通过FlashFXP来完成代码的导入。3.6 GPS程序3.6程序分析GPS 原始采集的数据如上图所示。在接收进程receive
27、 中收到“n”之后,表示收到一条完整的信息。在show_gps_info 进程中进行数据的解析和显示: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,en
28、d;char c;char* buf=line;c=buf5;if(c=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
29、=(buftmp+4-0)*10+(buftmp+5-0)+2000;/读取年/-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(
30、&GPS-D);#endifif(c=A) /$GPGGAGPS-high = 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中两种都可以用,对如后面的入口函
31、数不必要显示包含任何头件。2、 模块参数必须显式包含module_param(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);这是新增的,在老版本中需在
32、/etc/modules.conf配置,现在在代码中就可以实现。4、 结构体的初试化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_
33、check_resched();6、 新增完成事件(completion events)init_completion(&my_comp);void wait_for_completion(struct completion *comp);void complete(struct completion *comp);void complete_all(struct completion *comp);7、 中断处理1、中断处理有返回值了。IRQ_RETVAL(handled);2、cli(), sti(), save_flags(), 和 restore_flags()不再有效,应该使用loc
34、al_save_flags() 或local_irq_disable()。3、synchronize_irq()函数有改动4、新增int can_request_irq(unsigned int irq, unsigned long flags);8、 网络驱动1、struct net_device *alloc_netdev(int sizeof_priv, const char *name,void (*setup)(struct net_device *);struct net_device *alloc_etherdev(int sizeof_priv);2、新增NAPI(New AP
35、I)void netif_rx_schedule(struct net_device *dev);void netif_rx_complete(struct net_device *dev);int netif_rx_ni(struct sk_buff *skb);(老版本为netif_rx()9、 USB驱动老版本struct usb_driver取消了,新的结构体为struct usb_class_driver char *name;struct file_operations *fops;mode_t mode;int minor_base;int usb_submit_urb(stru
36、ct urb *urb, int mem_flags);int (*probe) (struct usb_interface *intf,const struct usb_device_id *id);4.2 平台升级操作步骤烧写2410CL linux 操作系统包括烧写vivi,kernel,root三个步骤,除此我们还要烧写应用程序,这四个文件分别为:u-boot.bin - linux操作系统启动的bootloader;uImage - linux操作系统内核;root.cramfs - 根文件系统;yaffs.tar.bz2 - 应用程序压缩包。4.3.1 烧写 u-boot1.把并口
37、线插到pc机的并口,并把并口的另一端与实验箱上端的UP-LINK相连,(确保跳线1、2相连即使用UP-LINK)打开2410CL电源(12V)。2.把整个GIVEIO目录(在光盘的img/flash-uboot目录下)拷贝到c:/windows下,并把该目录下的giveio.sys文件拷贝到c:/windows/system32/drivers下。3.在我的电脑里打开控制面板,选添加硬件,点击“下一步”,选择“是,我已经连接了此硬件”然后点击“下一步”,选中“添加新的硬件设备”然后点击“下一步”,选中“安装我手动从列表选择的硬件”后点击“下一步”,选择“显示所有设备”然后点击“下一步”, 选择
38、“从磁盘安装”然后点击“下一步”, 选择“浏览”,指定驱动为C:WINDOWSGIVEIOgiveio.inf文件,选择giveio.inf文件,然后点击“打开”, 然后选择“确定”, 点击“下一步”至“完成”即安装好驱动。4.在d盘新建一目录bootloader,把sjf2410-s.exe(在flash-uboot 目录下)和要烧写的u-boot.bin,linux操作系统内核,根文件 系统和应用程序压缩包拷贝到该目录下。 在所有程序附件命令提示符下,进入D:bootloader目录,运 行sjf2410-s命令如下:sjf2410-s /f:u-boot.bin。然后按回车,显示结果如图
39、4-1图4-1 烧写过程1在此后出现的三次要求输入参数,第一次是让选择Flash,选0,然后回车,第二次是选择jtag对flash的两种功能,也选0,然后回车,第三次是让选择起始地址,选0,然后回车,等待大约35分钟的烧写时间,如下图4-2所示:图4-2 烧写过程2当u-boot 烧写完毕后选择参数2,退出烧写。如下图所示。烧录后关闭2410CL,拔掉并口线与开发板的连线。 在这一步应该注意所传的文件夹要选对,否则这一步出不来。4.3.2 烧写内核、文件系统及应用程序1.并用串口线连接pc和2410CL。并连接好PC机与设备网线。打开超级终端,然后启动2410CL,按任意键进入u-boot控制
40、台,设置开发板IP,其命令为:setenv serverip/ipaddr如下图所示: 设置本机服务器IP地址:(根据具体主机环境更改IP) setenv serverip 192.168.1.113 设置ARM设备IP地址:(随意设置成与上面主机同一网段IP即可) setenv ipaddr 192.168.1.199 保存变量设置: saveenv2.Windows平台下tftp服务的配置: 双击“D:bootloader”目录下的tftpd32.exe文件,对Windows下 的tftp服务进行配置。3、烧写内核tftp 0x30008000 uImage 将uImage内核文件下载到地
41、址为0x30008000的RAM中 nand erase 0x80000 0x250000 擦除nandflash 第一个参数0x80000为nandflash起始地址 第二个参数0x250000为擦除nandflash大小 nand write 0x30008000 0x80000 0x250000 第一个参数0x30008000为存放要写入nandflash文件的RAM地址 第二个参数0x80000为nandflash写入起始地址 第三个参数0x350000为写入nandflash内容大小 以上三个命令可以用分号连接同时输入,如图: tftp 0x30008000 uImage;nand
42、erase 0x80000 0x250000;nand write 0x30008000 0x80000 0x2500004.3.3 烧写文件系统tftp 0x30008000 root.cramfs 将root.cramfs文件系统镜像下载到RAM nand erase 0x380000 0x400000 将nandflash文件系统地址空间擦除 nand write 0x30008000 0x380000 0x400000 将RAM中文件系统内容写入到nandflash中文件系统空间 三条命令同样可以用分号连接写成一条命令 tftp 0x30008000 root.cramfs;nand
43、erase 0x380000 0x400000;nand write 0x30008000 0x380000 0x4000004.3.4 烧写应用程序1. 用网线连接好2410CL的ETHERNET-1口和PC机的网口,配置IP在同一网段,重启2410CL进入linux系统(用户名root)。如图所示进行设置开发板IP(开发板IP要与FTP服务器端(windows xp)系统IP同一个网段) 以上根据FTP windows端 ip 192.168.1.113 设置开发板ip 为192.168.1.195 2. 在windows端启动FTP(关盘linux/img/FlashFXP文件夹下)点击
44、FTP选择Quick Connent. 在弹出的小窗口里录入:192.168.1.195,用户名:无,密码: 无,匿名登陆。点击Connect, 登陆到开发板TFP用户目录下,此时即可向开发板传输文件。在左侧一栏中选择要下载的yaffs压缩包文件,右键-transfer 即可下载到ARM开发板内解压到相关目录下由于开发板FLASH空间有限,建议将FLASH中内容先搬移到SDRAM中,在加压到FLASH中: 拷贝到RAM中 up-tech: #cp system/var/ftp/pub/2410cl-yaffs-2.6.24.tar.bz2 /tmp/ 删除FLASH中内容 up-tech: #
45、rm system/var/ftp/pub/2410cl-yaffs-2.6.24.tar.bz2 进入到RAM中重新解压到FLASH中 up-tech: #cd /tmp/ up-tech:/tmp #tar xvjf 2410cl-yaffs-2.6.24.tar.bz2 -C /root/ 2410cl_yaffs_2.6.24/16xkbd/ 2410cl_yaffs_2.6.24/16xkbd/getkey 2410cl_yaffs_2.6.24/16xkbd/mega8.ko 2410cl_yaffs_2.6.24/ad/ 2410cl_yaffs_2.6.24/ad/ad 2410cl_yaffs_2.6.24/ad/s3c2410-adc.ko 2410cl_yaffs_2.6.24/ad/test.sh 2410cl_yaffs_2.6.24/bluetooth/ 2410cl_yaffs_2.6.24/bluetooth/bluzmodule.sh 2410cl_yaffs_2.6.24/camera_zc301/ 2410cl_yaffs_2.6.24/camera_zc301/v4lcap . 5实验验证