




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LINUX 嵌入式实验报告 目录目录 目录.1 实验一:嵌入式 Linux 开发流程 .2 实验二:嵌入式 Linux 开发环境搭建 .6 实验三:串行端口程序设计.11 实验四:A/D D/A 接口实验.16 实验五:图形界面应用程序设计.18 实验六:内核与根文件系统实验.23 实验七:驱动程序设计实验.29 实验八:无线通信实验.33 实验一:嵌入式实验一:嵌入式 Linux 开发流程开发流程 一 实验目的 了解嵌入式 Linux 的开发流程,会进行简单的开发。 二 实验内容 进行 Linux 的开发流程的简单介绍。 三 实验步骤 嵌入式 Linux 开发,根据应用需求的不同有不同的配置开 发方法,但是一般都要经过以下过程: 建立开发环境,操作系统一般使用 REDHAT-LINUX,版本 7 到 9 都可以,选择定制安装或全部安装,通过网络下载 相应的 GCC 交叉编译器进行安装(比如 arm-linux- gcc、arm-uclibc-gcc) ,或者安装产品厂家提供的交叉编译 器。 使用 Linux 的 Red Linux 9 的开发界面截图如下: 配置开发主机,配置 MINICOM,一般参数为波特率 115200,数据位 8 位,停止位 1,无奇偶校验,软硬件控 制流设为无。在 WINDOWS 下的超级终端的配置也是这 样,MINICOM 软件的作用是作为调试嵌入式开发板信息 输出的监视器和键盘输入的工具;配置网络,只要是配置 NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调 试环境设置过程。 系统配置截图如下: 建立引导装载程序 BOOTLOADER,从网络上下载一些公开源代 码的 BOOTLOADER,如-BOOT、BLOB、VIVI、LILO、ARM- BOOT、RED-BOOT 等,根据自己具体芯片进行移植修改。有 些芯片没有内置引导装载程序,比如三星的 ARM7、ARM9 系 列芯片,这样就需要编写烧写开发板上的 flash 的烧写程序,网 络上有免费下载的 WINDOWS 下通过 JTAG 并口简易仿真器烧 写 ARM 外围 flash 芯片程序。 ViVi 运行的截图如下: 开发应用程序,可以下载到根文件系统中,也可以放在 YAFFS、JFFS2 文件系统中,有的应用程序不使用根文件系统, 而是直接将应用程序和内核设计在一起,这有点类似于 UCOS- II 的方式。烧写内核,根文件系统,应用程序,发布产品。 实验二:嵌入式实验二:嵌入式 Linux 开发环境搭建开发环境搭建 一、实验目的 了解并且掌握 Linux 的开发环境搭建方法。 二、实验内容 进行嵌入式 Linux 开发环境搭建 三、实验步骤 1.REDHAT LINUX 9.0 的安装 在一台 PC 上安装 RedHat LINUX9.0,选择 Custom 定制安装,在选择软件 Package 时最好 将所有包都安装,需要空间约 2.7G,如果选择最后一项:everything,即完全安装,将安装 3 张光盘的全部软件,需要磁盘空间大约 5G。因此建议提前为 REDHAT LINUX 的安装项, 留大约 515G 的空间,具体视用户的磁盘空间大小来确定,在安装完 Redhat 后还要安装 Linux 的编译器和开发库以及 ARM-Linux 的所有源代码,这些包安装后的总共需要空间大 约为 800M。 安装如下: 安装好的 Linux 如下; 2.开发工具软件的安装 安装环境搭建如上。 3.开发环境配置 配置网络,包括配置 IP 地址、NFS 服务、防火墙。网络配置主要是要安装好以太 网卡,对于一般常见的 RTL8139 网卡,READHAT9.0 可以自动识别并自动安装好, 完全不要用户参与,因此建议使用该网卡。然后配置宿主机 IP 为 21。 如果是在有多台计算机使用的局域网环境使用此开发设备,IP 地址可以根据具体 情况设置,如图所示: 双击设备 eth0 的蓝色区域,进入以太网设置界面 对于 REDHAT9.0,它默认的是打开了防火墙,因此对于外来的 IP 访问它全部拒 绝,这样其它网络设备根本无法访问它,即无法用 NFS mount 它,许多网络功能 都将无法使用,因此网络安装完毕后,应立即关闭防火墙。 Minicom 的配置如下: 四、实验总结 通过本次实验我学会了关于 Linux 配置的一些基本的应用,感觉收获特别大,这就算 入门了。 实验三:串行端口程序设计实验三:串行端口程序设计 1、实验目的 了解在 Linux 环境下串行程序的基本方法。 掌握终端的主要属性及设置方法,熟悉终端 I/O 函数的使用。 学习使用多线程完成串口的收发处理。 2、实验内容 读懂程序源代码,学习终端 I/O 函数的使用方法,学习将多线程编程应用到串口的接受和 发送程序设计中。 3、预备知识 有 C 语言的基础 掌握在 Linux 下常用编辑器的使用。 掌握 Makefile 的编写和使用。 掌握 Linux 下的程序编译与交叉编译过程。 4、实验原理 异步串行 I/O 方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。 数据的各不同位可以分时使用同一传输通道,因此串行 I/O 可以减少信号连接线,最后用 一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组 成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行 I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。 但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步) ,字符和字符间还 可能有长度不定的空闲时间,因此效率较低。 上图给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续 “1” 。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编 码数据。每个字符的数据位长可以约定为 5 位、6 位、7 位或 8 位,一般采用 ASCII 编码。 后面是奇偶校验位,根据约定,用奇偶检验位将所传字符中“1”的位数凑成奇数个数或偶 数个数。也可以也可以约定不要奇偶校验位,这样就取消奇偶校验位。最后是表示停止位 的“1”信号,这个停止位可以约定持续 1 位、1.5 位或 2 位的时间宽度。至此一个字符传 送完毕,线路又进入空闲,持续为“1” 。经过一段随机的时间后,下一个字符开始传送才 有发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用 的波特率为 50.95,110,150,300,600,1200,2400,4800,9600 等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: 奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 帧格式错:一个字符从起始位到停止位的总尾数不对。 溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。每一 种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的 MODEM 连接 电缆,其连接方式如下: 5、程序分析 本实验的代码如下: #include #include #include #include #include #include #define BAUDRATE B115200 #define COM1 “/dev/ttyS0” #define COM2 “/dev/ttyS1” #define ENDMINITERM 27 /*ESC to quit miniterm*/ #define FAL SE 0 #define TRUE 1 volatile int STOP=FALSE; volatile int fd; void child_handler(int s) print(“stop!n”); STOP=TRUE; /*_*/ Void* keyboard(void* date) Int c; For(;) c=getchar(); if(c=ENDMINITERM) STOP=TURE; Break; Return NULL; /*_*/ /*modem input handle*/ Void* receive(void* date) Int c; Printf(“read modemn”); While(STOP=FALSE) Read(fd,/*com port*/ Write(1,/*stdout*/ Printf(“exit form reading modemn”); Return NULL; /*_*/ Void* send(void* date) Int =0; Printf(“send daten”); While(STOP=FALSE)/*modem input handler*/ C+; C%=255; Write(fd,/*stdout*/ Usleep(100000); Return NULL; /*_*/ Int main (int argc,char*argv) Struct termios oldtio,newtio,oldstdio,newstdio; Struct sigaction sa; Int ok; Pthread_t th_a;th_b,th_c; Void *retval* If(argc1) Fd=open(COM2,O_RDWR); Else Fd=open(COM1,O_RDWR);/|O_NOCTTY|O_NONBLOCK); If(fdshow(); Return app.exec(); 现在开始逐行讲解一下每一句的意思,中我了这些以后可以帮助我们更加了解 QT 的程序 设计。 第 1 行和第二行包含了两个头文件,这两个头文件中包含 qapplication 和 qlabel 类的定义。 第 5 行创建了一个 qapplication 对象,用于管理整个程序的资源,它需要两个参数,因为 qt 本身需要一些明林行的参数。 第 6 行创建了一个用来显示 hello qt/embedded!的部件。在 QT 中,都是一个可视化的用户 接口,按钮,菜单,滚动条都是部件的实例。部件可以包含其他部件,例如,一个应用程 序窗口通常是一个包含 QMenuBar,QToolBar,QStatusBar 和其他的部件。 在 QLable 含糊中的参数 0 表示,这是一个窗口而不是嵌入到其他窗口中的部件。 第 7 行设置 hello 部件为程序的主部件,当用户关闭主部件后,应用程序将会被关闭。 如果没有主部件的话,即使用户关闭了程序也会在后他继续运行。 第 8 行使 hello 部件可视,一百年来说部件被创建后都是被隐藏的,因此可以显示在前根据 需要来定制部件,这样的好处是可以避免部件创建所造成的闪烁。第 9 行把程序的控制权 交还给 Qt,这时候程序就进入就绪模式,可视随时被用户行为激活,例如点击鼠标,敲击 键盘等。 下面我们哟啊让我们的程勋运行起来,首先要让它能够在 Virtual framebuffer 中显示出来, 然后再通过交叉编译在开发板上运行。要在本机的 Virtual framebuffer 中显示结果,下面几 个步骤是必须的: 1.生成工程文件(.pro)每一个 qt 程序都对应一个工程文件,因为 tmake 工具要借此 工程生成相应 makefile 文件。生成工程文件使用 progen 工具,他的位置在 $tmakedir/bin 下使用 progen 生成工程文件的方法如下: $TMAKEDIR/bin/ 生成的这个 工程文件是可以被修饰的, 可以编辑里面的头文件,源文件等内容。 2.生成 makefile 文件 3.QT 提供生成 makefile 文件的工具 tmake,这极大地方便了应用程序的开发,节省 了大量的时间,而且还可根据不同平台的需要生成适合于不同平台的 makefile 文 件。 在使用 tmake 工具前,必须查看相应的环境便令是否正确,由于我们要编译在本机上 运行的 QT 程序,所以指定的编译器应为“linux-x86-g+” ,在命令行中输入下面的命 令来检查环境变量是否正确: echo$TMAKEPATH 查看返回的结果的结尾字符是否是“/qws/linux-x86-g+”,如 果不是的话,需要在命令行中重新设置 TMAKEPATH export TMAKEPATH=/tmake 的 安装路径(如$TMAKEDIR)/lib/qws/linux-x86-g+此外还要使 QTDIR 指向 QT/EMBEDDED 的安装路径,如:export QTDIR=$QTEDIR 或者直接指定路径 export QTDIR=/qt-2.3.10 完成了上面的环境变量的设置,并用 echo 命令检查无误以后,就 可以以使用 tmake 工具来生生我们需要的 makefile 文件,在命令行中如下命令: $TMAKEDIR/bin/tmake-0 Makefile 完成上面的步骤以后就可以在当前的目录中生成一个 makefile 文件,关于 makefigure 文件的功能和结构这里就不在做过多的介绍了,可以参考前面的张杰来了解 makefile。 最后在命令行中输入“make”命令就可以对整个程序惊醒编译连接了。最后生成一个 二进制的可执行文件 hello。用 Virtual framebuffer 显示效果如下: 我们可以通过对 QLabel*hello QLabel(“Hello Qt/Embedded!”,0)这句话进行修改使我们 的程序显示起来更为美观,修改如下:QLabel*hello QLabel(“Hello” ”Qt/Embedded!”,0); 修改后显示效果如图所示: 四实验总结 通过本次实验我学会 GUI 的基本设计,收获颇多。 实验六:内核与根文件系统实验实验六:内核与根文件系统实验 一实验目的 了解 Linux 的内核与根文件的概念,学会他们的烧写。 二实验内容 结合实验指导书进行内核与根文件系统的烧写。 三实验内容 烧写 Linux 内核程序。 首先安装驱动程序,需要进行相关驱动的安装,点击添加硬件,如图所示: 选择下一步,截图如下: 添加 Giveio 点击下一步安装 安装好了截图如图所示: 好了之后,需要烧写 VIVI 使用 CMD 打开烧写程序 在此后出现的三次要求输入参数,第一次是让选择 Flash,,选 0,然后回车如图所示: 第二次是选择 jtag 对 flash 的两种功能,也选 0,然后回车,如图所示: 第三次是让选择起始地址,选 0,然后回车,等待大约 3-5 分钟的烧写时间,如图所 示: 当 VIVI 烧写完毕后选择参数 2,退出烧写。如图所示: 至此内核烧写完毕 四烧写根文件系统 在 vivi 状态下,输入烧写根文件的命令为:tftp flash root root.cramfs. 如图所示: 至此根文件系统烧写完毕! 四.实验总结 通过本次的实验我学会了 Linux 内核的烧写和根文件系统的烧写,感觉 linux 学起来 很难,以后会继续努力。 实验七:驱动程序设计实验实验七:驱动程序设计实验 1实验目的 学习在 LINUX 下进行驱动设计的原理; 掌握使用模块方式进行驱动开发调试的过程。 2实验内容 在 PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的 各个接口函数的实现,分析并理解驱动与应用程序的交互过程。 3实验步骤 Linux 中的驱动设计是嵌入式 Linux 开发中十分重要的部分,他要求 开发者不仅要熟悉 Linux 的内核机制、驱动程序与用户级应用程序 的接口关系、考虑系统中对设备的并发操作等等,而且还要非常熟 悉所开发硬件的工作原理。这对驱动开发者提出了比较高的要求, 这个实验主要是给大家进入驱动设计提供一个简单入门的实例,并 不需要提供太多与硬件相关的内容,这部分应该是通过仔细阅读芯 片厂家提供的资料来解决。 驱动程序的作用是应用程序与硬件之间的一个中间软件层,驱动程 序应该为应用程序展现硬件的所有功能,不应该强加其他的约束, 对于硬件使用的权限和限制应该由应用程序层控制。但是有时驱动 程序的设计是跟所开发的项目相关的,这时就可能在驱动层加入一 些与应用相关的设计考虑,主要是因为在驱动层的效率比应用层高, 同时为了项目的需要可能只强化或优化硬件的某个功能,而弱化或 关闭其他的一些功能;到底需要展现硬件的那些功能全都由开发者 根据需要而定。驱动程序有时会被多个进程同时使用,这时我们要 考虑如何处理并发的问题,就需要调用一些内核的函数使用互斥量 和锁等机制。 驱动程序主要需要考虑下面三个方面:提供尽量多的选项给用户, 提高驱动程序的速度和效率,尽量使驱动程序简单,使之易于维护。 Linux 的驱动开发调试有两种方法,一种是直接编译到内核,再运行 新的内核来测试;二是编译为模块的形式,单独加载运行调试。第 一种方法效率低,但在某些场合是唯一的方法。模块方式调试效率 很高,它使用 insmod 工具将编译的模块直接插入内核,如果出现故 障,可以使用 rmmod 从内核中卸载模块。不需要重新启动内核,这 使驱动调试效率大大提高。我们的实验在 PC 机和 UP- NETARM2410-S 上都可以运行,编译时使用不同的编译器就可以了。 1.阅读和理解源代码 进入/arm2410s/exp/drivers/demo,使用 vi 编辑器或其他编辑器阅读 理解源代码。 2.编译驱动模块及测试程序 上面介绍了在 Makefile 中有两种编译方法,可以在本机上使用 gcc 也可以使用交叉编译器进行编译。 3.测试驱动程序 如果使用 gcc 编译的话,需要通过下面的命令来建立设备节点,如 果使用交叉编译器的话,不需要建立设备节点。 #mknod/dev/demo c 2540 首先要插入驱动模块 demo.o,然后可以用 lsmod 命令来查看模块是 否已经被插入,在不使用该模块的时候还可以用 rmmod 命令来将模 块卸载。 rootzxt demo#insmod demo.o Warning:loading demo.o will taint the kernel:no license See /lkml/#export-tainted for information about tainted modules Module demo loaded,with warnings 下面使用测试程序来进行测试,按照上面步骤成功后会出现下面的 结果: rootzxt demo#./test demo Write 32 bytes data to /dev/demo 0:0 1 2 3 1:4 5 6 7 2:8 9 10 11 3:12 13 14 15 4:16 17 18 19 5:20 21 22 23 6:24 25 26 27 7:28 29 30 31 Read 32 bytes data from /dev/demo 0:31 30 29 28 1:27 26 25 24 2:23 22 21 11 3:12 13 14 15 4:16 17 18 19 5:20 10 9 8 6:7 6 5 4 7:3 2 1 0 如果模块没有成功插入的话,会出现下面的情况: rootzxt demo#./test demo #DEMO device open fail# 在驱动模块成功插入后,会在/dev 下面建立一个叫做 demo 的设备 文件,我们也可以使用 cat 命令来直接调用 read 函数,来测试读过 程。 rootzxt demo# cat/dev/demo Device open success! 实验八:无线通信实验实验八:无线通信实验 1实验目的 掌握 GPS 通讯原理 学习 NMEA0183 ASCII 接口协议格式 学习 Linux 下对 GPS 通讯信息采发集的编程方法 2实验内容 学习 GPS 通讯原理,阅读 GPS 模块的产品说明,了解模块的电气 指标、串行接口连接方式、NMEA 语句格式。通过软件来设置 GPS 模块的波特率、输出语句和初始化经纬度等内容。 编程实现对 GPS 通讯信息的采集方法,将接收到的数据进行语义的 分析,并在 LCD 上显示当前的地理位置信息。 学习 Linux GPS 数据的解析过程。 GPS(Global Positioning System全球定位系统)是美国从本世纪 70 年代开始研制,历时 20 年,耗资 200 亿美元,具有在海、陆、 空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系 统。 GPS 的主要优点包括: (1)全球、全天候工作: 能为用户提供连续,实时的三维位置,三维速度和精密时间。不受 天气的影响。 (2)定位精度高: 单机定位精度优于 10 米,采用差分定位,精度可达厘米级和毫米级。 (3)功能多,应用广: 目前已广泛的应用于大地测量、工程测量、航空摄影测量、运载工 具导航和管制、地壳运动监测、工程变形监测、资源勘察、地球动 力学等学科领域。 GPS 由三个独立的部分组成: 空间部分:21 颗工作卫星,3 颗备用卫星。 地面支撑系统:1 个主控站,3 个注入站,5 个监测站。 用户设备部分:接收 GPS 卫星发射信号,以获得必要的导航和定位 信息,经数据处理,完成导航和定位工作。GPS 接收机硬件一般由 主机、天线和电源组成。 GPS 定位原理:GPS 定位的基本原理是根据高速运动的卫星瞬间位 置作为已知的起算数据,采用空间距离后方交会的方法,确定待测 点的位置。如图所示,假设 t 时刻在地面待测点上安置 GPS 接收机, 可以测定 GPS 信号到达接收机的时间,再加上接收机所接收到的 卫星星历等其它数据可以确定以下四个方程式: 上述四个方程式中待测点坐标 x、y、z 和为未知参数,其中 0 t V 。di(i=1,2,3,4)分别为卫星 1,卫星 2,卫星)4 , 3 , 2 , 1( itcd ii 3,卫星 4 到接收机之间的距离。分别为卫星 1,卫星)4 , 3 , 2 , 1( iti 2,卫星 3,卫星 4 的信号到达接收机所经历的时间。C 为 GPS 信号 的传播速度(即光速) 。 四个方程式中各个参数意义如下: x,y,z 为待测点坐标的空间直角坐标。 Xi,yi,zi(i=1,2,3,4)分别为卫星 1,卫星 2,卫星 3,卫星 4 在 t 时刻的空间直角坐标,可由卫星导航电文求得。 Vti(i=1,2,3,4)分别为卫星 1,卫星 2,卫星 3,卫星 4 的卫星 钟的的钟差,由卫星星历提供。Vt0 为接收机的钟差。由以上四个 方程即可解算出待测点的坐标 x,y,z 和接收机的钟差 Vt0. 目前 GPS 系统提供的定位精度是优于 10 米,而为得到更高的定位 精度,通常采用差分 GPS 技术:将一台 GPS 接收机安置在基准站 上进行观测。根据基准站已知精密坐标,计算出基准站到卫星的距 离改正数,并由基准站实时将这一数据发送出去。用户接收机在进 行 GPS 观测的同时,也接收到基准站发出的改正数,并对其定位结 果进行改正,从而提高定位精度。 3实验步骤 1.检查跳线 确定试验平台扩展槽上方 JP1102/JP1103 跳线位于 2、3 之间,跳线 位为 EXPORT;确定 GPS/GPRS 模块的 JP201/JP202 跳线位于模块 外侧 GPS 端。 2.接入设备 关闭 2410-S 平台,将 GPS 天线连接到 GPS/GPRS 模块上,天线接 收端置放在能良好接收室外信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特别的月饼特别的中秋作文600字9篇
- 2025年济宁金乡县事业单位公开招聘工作人员(教育类)(39人)模拟试卷及答案详解(历年真题)
- 2025年数控刃磨床项目申请报告
- 2025海南经贸职业技术学院考核招聘高层次人才40人考前自测高频考点模拟试题及一套答案详解
- 2025年三环集团社会招聘模拟试卷及答案详解一套
- 2025湖南泸溪县汇金产业投资集团有限公司招聘工作人员拟聘用人员考前自测高频考点模拟试题及答案详解(历年真题)
- 2025年辉南县补录1名乡镇、街道派驻消防文员模拟试卷(含答案详解)
- 2025年福建省泉州市华侨大学分析测试中心招聘模拟试卷含答案详解
- 2025广东广州市筑业城建有限公司招聘工作人员、人员模拟试卷及答案详解(夺冠系列)
- 2025-2026学年江西省赣州市部分学校高一上学期入学测试英语试题(解析版)
- 电子书阅读器使用教程
- JJG 597-2025 交流电能表检定装置检定规程
- 全国医师定期考核人文医学考试题库附答案
- 2025年特种设备无损检测人员超声Ⅱ级(UT-2)取证培训大纲
- 2025老年康复科护理服务计划
- 应急消防疏散培训课件
- 锚杆支护工安全考试试卷及答案
- 心理学研究方法(第2版)课件 王轶楠 第4-7章 完成研究过程-走上国际学术舞台
- 统编版语文五年级上册 第6单元 教学设计
- 统编版2024三年级语文上册第三单元复习 课件
- JG/T 451-2014建筑塑料门窗型材用未增塑聚氯乙烯共混料
评论
0/150
提交评论