LINUX嵌入式实验报告(DOC)

  • 格式:doc
  • 大小:2.19 MB
  • 文档页数:39

LINUX嵌入式实验报告 - 1 - 目录 目录 ............................................................................................................. 1 实验一:嵌入式Linux开发流程 ............................................................. 2 实验二:嵌入式Linux开发环境搭建 ..................................................... 6 实验三:串行端口程序设计 .................................................................. 11 实验四:A/D D/A接口实验 ................................................................... 16 实验五:图形界面应用程序设计 .......................................................... 18 实验六:内核与根文件系统实验 .......................................................... 23 实验七:驱动程序设计实验 .................................................................. 29 实验八:无线通信实验 .......................................................................... 33 - 2 -

实验一:嵌入式Linux开发流程 一. 实验目的 了解嵌入式Linux的开发流程,会进行简单的开发。 二. 实验内容 进行Linux的开发流程的简单介绍。 三. 实验步骤 嵌入式Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程: 建立开发环境,操作系统一般使用REDHAT-LINUX,版本7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。 使用Linux的Red Linux 9的开发界面截图如下: - 3 -

配置开发主机,配置MINICOM,一般参数为波特率115200,数据位8位,停止位1,无奇偶校验,软硬件控制流设为无。在WINDOWS下的超级终端的配置也是这样,MINICOM软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,只要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。 系统配置截图如下: - 4 -

建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,如-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的ARM7、ARM9系列芯片,这样就需要编写烧写开发板上的flash的烧写程序,网络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写ARM外围flash芯片程序。 ViVi运行的截图如下: - 5 -

开发应用程序,可以下载到根文件系统中,也可以放在YAFFS、JFFS2文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于UCOS-II的方式。烧写内核,根文件系统,应用程序,发布产品。 - 6 -

实验二:嵌入式Linux开发环境搭建 一、 实验目的 了解并且掌握Linux的开发环境搭建方法。 二、 实验内容 进行嵌入式Linux开发环境搭建 三、 实验步骤 1. REDHAT LINUX 9.0的安装 在一台PC上安装RedHat LINUX9.0,选择Custom定制安装,在选择软件Package时最好将所有包都安装,需要空间约2.7G,如果选择最后一项:everything,即完全安装,将安装3张光盘的全部软件,需要磁盘空间大约5G。因此建议提前为REDHAT LINUX的安装项,留大约5—15G的空间,具体视用户的磁盘空间大小来确定,在安装完Redhat后还要安装Linux的编译器和开发库以及ARM-Linux的所有源代码,这些包安装后的总共需要空间大约为800M。 安装如下:

安装好的Linux如下; - 7 - 2. 开发工具软件的安装

安装环境搭建如上。 3. 开发环境配置 配置网络,包括配置IP地址、NFS服务、防火墙。网络配置主要是要安装好以太网卡,对于一般常见的RTL8139网卡,READHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。然后配置宿主机IP为192.168.0.121。如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情- 8 -

况设置,如图所示: 双击设备eth0的蓝色区域,进入以太网设置界面 对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,- 9 -

这样其它网络设备根本无法访问它,即无法用NFS mount它,许多网络功能都将无法使用,因此网络安装完毕后,应立即关闭防火墙。

Minicom的配置如下: - 10 - 四、实验总结 通过本次实验我学会了关于Linux配置的一些基本的应用,感觉收获特别大,这就算入门了。 - 11 -

实验三:串行端口程序设计 一、实验目的 了解在Linux环境下串行程序的基本方法。 掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。 学习使用多线程完成串口的收发处理。 二、实验内容 读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接受和发送程序设计中。 三、预备知识 有C语言的基础 掌握在Linux下常用编辑器的使用。 掌握Makefile的编写和使用。 掌握Linux下的程序编译与交叉编译过程。 四、实验原理 异步串行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等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: 奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 帧格式错:一个字符从起始位到停止位的总尾数不对。 - 12 -

溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。每一种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的MODEM连接电缆,其连接方式如下:

五、程序分析 本实验的代码如下: #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;