第八章嵌入式操作系统 uclinux 实验

85
第第第第第第第第第uClinux 第第 8.1 μClinux 第第第第第第 8.2 Boot Loader 第第第第第第 8.3 μClinux 第第第第第第 8.4 第第第第 第第第第第第第第第 8.5 第第第第第第第第第第第第第第 8.6 第第第第第第第第第第第第第

Upload: phuc

Post on 21-Jan-2016

119 views

Category:

Documents


0 download

DESCRIPTION

第八章嵌入式操作系统 uClinux 实验. 8.1 μClinux 编译运行 实验 8.2 Boot Loader 编译运行实验 8.3 μClinux 内核调试实验 8.4 在文件系统中增加应用程序实验 8.5 多进程应用程序编写及调试实验 8.6 网络应用程序编写及调试实验. 8.1 μClinux 编译运行 实验. 8.1.1 实验目的 8.1.2 实验设备 8.1.3 实验内容 8.1.4 实验原理 8.1.5 实验操作步骤. 8.1.1 实验目的. 掌握 μClinux 配置、编译过程。. 8.1.2 实验设备. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第八章嵌入式操作系统 uClinux 实验

第八章嵌入式操作系统 uClinux 实验

8.1 μClinux 编译运行实验8.2 Boot Loader 编译运行实验8.3 μClinux 内核调试实验8.4 在文件系统中增加应用程序实验8.5 多进程应用程序编写及调试实验8.6 网络应用程序编写及调试实验

Page 2: 第八章嵌入式操作系统 uClinux 实验

8.1 μClinux 编译运行实验

8.1.1 实验目的8.1.2 实验设备8.1.3 实验内容8.1.4 实验原理8.1.5 实验操作步骤

Page 3: 第八章嵌入式操作系统 uClinux 实验

8.1.1 实验目的

掌握 μClinux 配置、编译过程。

Page 4: 第八章嵌入式操作系统 uClinux 实验

8.1.2 实验设备

硬件: Embest S3CEV40 实验平台, PC机软件: Linux 或者 Windows 98/2000/NT/XP 下的 cygwin 开发环境,烧写工具 Embest Online Flash Programmer for ARM 。

Page 5: 第八章嵌入式操作系统 uClinux 实验

8.1.3 实验内容

学习和掌握 μClinux 编译的基本步骤,对 μClinux 的内核及用户程序进行配置,编译生成内核和文件系统,烧写到 FALSH 中,运行 μClinux 。

Page 6: 第八章嵌入式操作系统 uClinux 实验

8.1.4 实验原理

配置命令

1. make config

2. make menuconfig

3. make xconfig

图 1 配置主界面

内核及用户程序配置

Page 7: 第八章嵌入式操作系统 uClinux 实验

实验原理

配置目标平台

定制内核

定制用户程序

Page 8: 第八章嵌入式操作系统 uClinux 实验

实验原理

在 Cygwin 中依次执行以下命令完成μClinux 的编译过程:

cd / usr/ local/ src/ uclinux-s3cev40make depmake cleanPATH=”/ usr/ local/ armtools/ bin:$ PATH”make lib_ onlymake user_ onlymake romfsmake image

编译 μClinux

Page 9: 第八章嵌入式操作系统 uClinux 实验

最后,在 images 目录下生成 2 个文件 :

zImage : μClinux 内核 2.4.x 的压缩方 式可 执行映像文件 romfs.img :文件系统的映像文件。

实验原理

Page 10: 第八章嵌入式操作系统 uClinux 实验

工具: Embest Flash Programmer 和 Embest ARM 仿真器或者其他烧写工具

操作: bootloader.bin 烧写至 FLASH 的 1-16扇区, zImage 烧写至 17-192 扇区, romfs.img 烧写至 193-400 扇区

配置界面:

实验原理

FLASH烧写配置界面

烧写映像文件、运行

Page 11: 第八章嵌入式操作系统 uClinux 实验

实验原理

运行时启动 Win2000 下超级终端软件,配置如下:

Page 12: 第八章嵌入式操作系统 uClinux 实验

8.1.5 实验操作步骤1 、将 μClinux-s3cev40.tar.gz 放置于对应的 /usr/local/

src 目录下,运行 cygwin, 在其命令窗口下解压 μClinux 源代码包,执行命令:

cd /usr/local/src

tar xzvf /tmp/μClinux-dist/μClinux-s3cev40.tar.gz

2 、登陆到工作目录下,对 μClinux 进行配置: cd μClinux-s3cev40

make xconfig

Page 13: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤 3 、在弹出的配置窗口,点击 Target Platform Se

lection 进入目标平台选择,选中 Customize Kernel Settings 、 Customize Vendor/User Settings 、 Update Default Vendor Settings 三项,对内核及用户程序进行配置,回主菜单点 Save and Exit 。

4 、在弹出的内核配置窗口,选择 File systems Network file systems NFS File system support ; File systems Network file systems Provide NFSv3 client support ;并保存退出。这些配置是为 NFS 调试做准备的。

Page 14: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤5 、在弹出的用户程序配置窗口,去掉 Network Ap

plications tftp ,选择 Network Applications

ftp 、 ftpd ,用于 FTP 调试;选择 BusyBox i

fconfig ,用于目标板 IP 设置 ;选择 BusyBox

tftp 、 tftp:get 、 tftp:put ,用于 TFTP 调试;保存退出。

6 、将交叉编译工具安装至 /usr/local 目录下。

Page 15: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤7 、配置完成后开始编译 μClinux ,在工作目录下

执行以下命令: make dep make clean PATH=”/usr/local/armtools/bin:$PATH” make lib_only make user_only make romfs make image 最后,在 image 目录下生成两个文件:内核文

件 zImage 和文件系统映像 romfs.img 。

Page 16: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

8 、准备实验环境,使用 Embest S3CEV40 目标板附带的串口线连接目标板上的 UART0 和 PC 机的串口,使用 Embest S3CEV40 目标板附带的网线连接目标板上的 Ethernet 和 PC 机的网口。

9 、用 Embest 烧些工具软件进行烧写,加载 Embest

S3CEV40.cfg 目标板配置文件,将 bootloader.bin

烧写至 FLASH 的 1-16 扇区, zImage 烧写至 17-

192 扇区, romfs.img 烧写至 193-400 扇区。

Page 17: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

10 、在 PC 机上运行 Windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、8 位数据位、无校验位、无硬件流控制);或者使用其它串口通信程序。

11 、重新启动目标板,运行 μClinux 。

Page 18: 第八章嵌入式操作系统 uClinux 实验

8.2 Boot Loader 编译运行实验

8.2.1 实验目的8.2.2 实验设备8.2.3 实验内容8.2.4 实验原理8.2.5 实验操作步骤

Page 19: 第八章嵌入式操作系统 uClinux 实验

8.2.1 实验目的

通过实验掌握 Boot Loader 的基本功能程序设计。

Page 20: 第八章嵌入式操作系统 uClinux 实验

硬件: Embest S3CEV40 实验平台, Embest 仿真器, PC 机软件: Embest IDE 2003 , Embest Online Flash , Windows 98/2000/NT/XP 下的cygwin 开发环境

8.2.2 实验设备

Page 21: 第八章嵌入式操作系统 uClinux 实验

8.2.3 实验内容

学习和掌握 Bootloader 的基本功能程序设计,并编译下载到 Embest S3CEV40 ,实现对 μClinux 内核的引导。

Page 22: 第八章嵌入式操作系统 uClinux 实验

8.2.4 实验原理

系统引导程序介绍 Boot Loader

1. 是系统复位后执行的第一段代码,相当于 PC 上的 BIOS 以及商业实时操作系统中的板级支持包 BSP 。

2. 独立于操作系统,必须由用户自己设计。3. 其实现高度依赖于硬件。

Page 23: 第八章嵌入式操作系统 uClinux 实验

实验原理

典型空间分配结构图

Boot Loader 、内核映像和文件系统映像在系统中存储的典型空间分配结构图如下:

Page 24: 第八章嵌入式操作系统 uClinux 实验

实验原理

1. 压缩方式的内核映像 2. 未经压缩的在 Flash 本地执行方式的

内核映像文件 3. 未经压缩的在 Ram 本地执行方式的

内核映像文件

μClinux 内核提供方式

Page 25: 第八章嵌入式操作系统 uClinux 实验

实验原理最简功能设计

1.禁止所有的中断;2.设置处理器时钟、运行速度; 3.存储区初始化; 4.设置堆栈指针将 bss 段清零;5.跳转到内核映像的入口

Page 26: 第八章嵌入式操作系统 uClinux 实验

实验原理

1. 上电自检;2. 支持串口通讯方式,提供串口方式的

命令控制台; 3. 支持以太网通讯方式,提供以太网通

讯方式的命令控制台; 4. 可以通过串口或以太网下载并引导内

核和文件系统映像文件;

完备功能设计

Page 27: 第八章嵌入式操作系统 uClinux 实验

实验原理

5. 支持通过串口或以太网通讯烧写映像文件到 Flash ;

6. 能够读写 I/O 端口、存储区、寄存器;7. 配置功能,包括设置 IP 地址、 MAC

地址、系统时间等;

Page 28: 第八章嵌入式操作系统 uClinux 实验

8.2.5 实验操作步骤

1 、准备实验环境,使用 Embest S3CEV40 目标板附带的串口线连接目标板上的 UART0 和 PC机的串口,将 Embest 仿真器的 JTAG 接口与Embest S3CEV40 的 JTAG 接口相连,仿真器的 PARALLEL 接口与 PC 机的并口相连。

2 、 PC 机上运行 Windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

Page 29: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

3 、运行 Embest IDE集成开发环境,打开实验系统例程目录下面的 Bootloader_test子目录下的 bootloader.ews例程。

4 、选择 Build 菜单 Build bootloader 进行编译就可以生成二进制文件 bootloader.bin ,在 Bootloader_test 目录下的 debug子目录下。

5 、使用烧写工具将 bootloader.bin 烧写至 FLASH芯片 1-16 扇区,重启运行。

Page 30: 第八章嵌入式操作系统 uClinux 实验

8.3 μClinux 内核调试实验

8.3.1 实验目的8.3.2 实验设备8.3.3 实验内容8.3.4 实验原理8.3.5 实验操作步骤

Page 31: 第八章嵌入式操作系统 uClinux 实验

8.3.1 实验目的

了解和掌握 μClinux 的内核调试方法。

Page 32: 第八章嵌入式操作系统 uClinux 实验

硬件: Embest S3CEV40 实验平台, Embest 仿真器, PC 机

软件: Embest IDE 2003 , Windows 98/2000/NT/XP 下的 cygwin 开发环境

8.3.2 实验设备

Page 33: 第八章嵌入式操作系统 uClinux 实验

8.3.3 实验内容

使用 Embest IDE 软件进行内核调试,并将内核在运行过程中的调试信息打印到终端。

Page 34: 第八章嵌入式操作系统 uClinux 实验

8.3.4 实验原理

1. Flash 本地运行方式:内核的未经压缩的可执行映像固化在 Flash ,系统启动时内核从 Flash 中开始逐句执行。

2. 压缩内核加载方式:内核的压缩映像固化在 Flash 上,系统启动时由附加在压缩映像前的解压复制程序读取压缩映像,在内存中解压后执行,这种方式相对复杂,但是运行速度更快( RAM 的存取速率要比 Flash 高)。

μClinux 内核启动过程

Page 35: 第八章嵌入式操作系统 uClinux 实验

实验原理

Flash 本地运行方式:

1. 内核的启动包括特定体系结构设置和 μClinux系统初始化两步

2. 内核启动的入口文件是 head-armv.s 。

3. head-armv.s 实现特定体系结构设置

4. start_kernel 实现 μClinux 系统初始化

Page 36: 第八章嵌入式操作系统 uClinux 实验

四、实验原理

1. 配置系统寄存器;2. 初始化 ROM 、 RAM 以及总线控制寄

存器等;3. 设置堆栈指针,将 bss 段清零;4. 修改 pc指针,跳转到 linux-2.4.x/init/ma

in.c 中的 start_kernel函数,开始 μClinux 系统的初始化。

head-armv.s 的基本运行过程:

Page 37: 第八章嵌入式操作系统 uClinux 实验

实验原理

1. 配置内核在 RAM 中执行 2. 生成内核映像文件 3. 设置 Embest IDE

4. 调试内核

进行内核调试时,通常使用未经压缩在RAM中执行的内核映像

Embest IDE调试内核

Page 38: 第八章嵌入式操作系统 uClinux 实验

实验原理

1 、在内核定制 Customize Kernel Settings 中,系统类型 System Type 中选择内核执行方式 Kernel executes from 为 RAM 。

2 、在链接脚本文件 linux-2.4.x/arch/armnommu/vmlinux.lds 中设置内核运行起始地址为 0x8000 。

配置内核在 RAM中执行

Page 39: 第八章嵌入式操作系统 uClinux 实验

实验原理

在调试设置中,设置调试信息文件为 linux-2.4.x/linux ,下载文件为 image.ram ,下载地址为 0x8000 。

设置 Embest IDE

Page 40: 第八章嵌入式操作系统 uClinux 实验

实验原理

依次执行 Debug 菜单中的 Remote Connect 和 D

ownload 命令,反汇编窗口将显示 μClinux 内核的汇编执行代码,此时可以通过 IDE 使用断点设置、单步执行、变量监视、寄存器查看修改等方法对 μClinux 内核进行调试。

调试内核

Page 41: 第八章嵌入式操作系统 uClinux 实验

实验原理

start_kernel ()函数,在执行完其中的 console_init ()函数之前,串行口终端不会输出任何信息,因此可以通过串行口终端输出 console_init ()函数后执行信息。

串口打印信息调试内核

Page 42: 第八章嵌入式操作系统 uClinux 实验

实验原理

1. 第一部分的信息调用函数 printk ()输出,该函数在 linux-2.4.x/kernel/printk.c 中。

2. 第二部分信息是在文件系统装载以后,执行 /etc/rc 文件里的系统命令的打印结果,这些打印信息是由 user/sash/ 文件夹下的 sash.c 文件中包含的 printf("Command: %s\n",buf) 命令产生。

超级终端显示的启动信息分两部分

Page 43: 第八章嵌入式操作系统 uClinux 实验

8.3.5 实验操作步骤

1 、准备实验环境,使用 Embest S3CEV40 目标板附带的串口线连接目标板上的 UART0 和PC 机的串口,使用 Embest S3CEV40 目标板附带的网线连接目标板上的 ETHERNET 和PC 机的网口。

2 、在 PC 机上运行 Windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

Page 44: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤3 、在 cygwin 下修改内核,如在 start_kernel函数里的 mem_init函数前加入一句“ printk(“This is mem_init............................./n”);” 。编译出 μClinux 内核,进入 μClinux 目录下的 linux-2.4.x目录,对 elf格式的 linux 文件执行以下命令,生成可执行文件 image.ram :

arm-elf-objcopy -O binary -R .note -R .comment -S linux image.ram

Page 45: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

对 linux 文件执行以下命令,生成 μClinux内核的反编译文件:

arm-elf-objdump –S linux | tee linux.dump

Page 46: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

4 、 Embest 仿真器连接目标板 Embest S3CEV40 ,使用 Embest IDE 通过 Embest 仿真器与目标板建立联系。

将 image.ram 放到 D盘根目录(或其他目录)下,因为 μClinux 内核从 RAM 地址 0x8000处开始执行,所以 Embest 仿真器下载的起始地址定为 0x8000 。

Page 47: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

将 image.ram 文件下载到目标板 RAM 中。在 Embest IDE 的 Toggle Output框里输入以下下载命令:

download d:\image.ram 0x8000

5 、 Embest IDE的 Disassembly 框里出现的码就是 μClinux 内核的汇编执行代码。

6 、用 Embest IDE在 0x8000 地址处运行内核。

Page 48: 第八章嵌入式操作系统 uClinux 实验

8.4 在文件系统中增加应用程序实验

8.4.1 实验目的8.4.2 实验设备8.4.3 实验内容8.4.4 实验原理8.4.5 实验操作步骤

Page 49: 第八章嵌入式操作系统 uClinux 实验

8.4.1 实验目的

通过实验掌握在文件系统中增加应用程序。

Page 50: 第八章嵌入式操作系统 uClinux 实验

硬件: Embest S3CEV40 实验平台, PC 机软件: Linux 或者 Windows 98/2000/NT/XP 下的 cygwin 开发环境

8.4.2 实验设备

Page 51: 第八章嵌入式操作系统 uClinux 实验

8.4.3 实验内容

学习和掌握 μClinux 下的应用程序开发的基本步骤,编写应用程序,实现一个简单的程序,将其添加到文件系统中。

Page 52: 第八章嵌入式操作系统 uClinux 实验

8.4.4 实验原理——

1. 编写Makefile 。

2. 修改配置相关文件 。

3. 修改用户程序工程管理文件

4. 编译并执行

添加应用程序的标准方式 将编写好的应用程序添加到文件系统中需要进行以下几个方面的工作:

Page 53: 第八章嵌入式操作系统 uClinux 实验

实验原理

方法:省略在系统中添加程序编译加载信息,直接用交叉编译工具自行编译,然后将生成的 flat 可执行文件放到 romfs/bin 目录下,使用命令直接生成 romfs镜像。

快速添加应用程序

Page 54: 第八章嵌入式操作系统 uClinux 实验

8.4.5 实验操作步骤

1 、准备实验环境,使用 Embest S3CEV40 目标板附带的串口线连接目标板上的 UART0 和PC 机的串口,使用 Embest S3CEV40 目标板附带的网线连接目标板上的 ETHERNET 和PC 机的网口。

2 、在 PC 机上运行 Windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

Page 55: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤3 、在 /usr 目录下面新建 app 目录作为应用

程序的存放位置,将 led.c 放置其中。 $:mkdir –p /usr/local/src/μClinux-dist/user/app

4 、编写此程序的工程管理文件 Makefile ,代码参见实验原理对应部分。

5 、修改配置相关文件,参考实验原理对应部分。

Page 56: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

6 、修改用户程序工程管理文件,参考实验原理对应部分。

7 、编译 μClinux, 参考实验原理对应部分。8 、将编译生成的内核文件 zImage 和文件系统 r

omfs.img按规定扇区烧写至 Embest S3CEV40 目标板的 FLASH芯片上。 bootloader.bin烧至 1-16 扇区, romfs.img 烧至 17-192 扇区 ,zImage 烧至 193-400 扇区。

Page 57: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

9 、在 Embest S3CEV40 目标板上运行 μClinux 嵌入式系统,在 PC 机上观察超级终端程序主窗口,可以看到如下界面:

Sash command shell (version1.1.1)/>

进入 bin 目录运行 led 程序 />cd bin/bin>led

Page 58: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤10 、在 PC 机上运行 cygwin ,安装 ARM 交

叉编译工具,编译修改后的 led.c例程: arm-elf-gcc –Wall –O2 -Wl,-elf2flt –o led led.c

11 、复制 flat 可执行文件 led 到文件系统,即 romfs/bin 目录下,直接执行下面的命令生成文件系统映像 romfs.img 。

genromfs -v -V "ROMdisk" –f romfs.img -d /usr/local/src/μClinux-s3cev40/romfs

Page 59: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

12 、同第 5 步将新生成的 romfs.img 烧至 FLASH ,重启运行 μClinux ,仍然至 bin 目录下运行 led 程序 ,观察 LED管的闪烁变化。

Page 60: 第八章嵌入式操作系统 uClinux 实验

8.5 多进程应用程序编写及调试实验

8.5.1 实验目的8.5.2 实验设备8.5.3 实验内容8.5.4 实验原理8.5.5 实验操作步骤

Page 61: 第八章嵌入式操作系统 uClinux 实验

8.5.1 实验目的

掌握 μClinux 下的多进程编程掌握 TFTP 方式下载应用程序的方法 。

Page 62: 第八章嵌入式操作系统 uClinux 实验

硬件: Embest S3CEV40 实验平台, PC 机软件: Windows 98/2000/NT/XP,cygwin 开发环境

8.5.2 实验设备

Page 63: 第八章嵌入式操作系统 uClinux 实验

8.5.3 实验内容

编写 μClinux 下的多进程应用程序,使用 TFTP 方式进行快速下载调试。

Page 64: 第八章嵌入式操作系统 uClinux 实验

8.5.4 实验原理

μClinux 的多进程管理是通过 vfork来实现,因此 fork等于 vfork 。这意味着 μClinux 系统 fork 调用完成后,要么子进程代替父进程执行(此时父进程已经 sleep )直到子进程调用 exit 退出;要么调用 exec 执行一个新的进程,这个时候将产生可执行文件的加载,即使这个进程只是父进程的拷贝,这个过程也不能避免。当子进程执行 exit 或 exec 后,子进程使用 wakeup把父进程唤醒,使父进程继续往下执行。

μClinux 的多进程处理

Page 65: 第八章嵌入式操作系统 uClinux 实验

实验原理

μClinux针对没有 mmu处理器开发,内存管理被迫使用一种 flat 方式的管理模式

Page 66: 第八章嵌入式操作系统 uClinux 实验

实验原理

运行 TFTP服务器程序 tftpd32.exe ,进行各种设置

图 1 TFTP服务器界面

TFTP方式下载调试

Page 67: 第八章嵌入式操作系统 uClinux 实验

实验原理

在 μClinux 的超级终端窗口执行 TFTP客户端命令连接服务器程序 tftpd32 ,直接下载文件(如 LED灯控制程序)到 var 目录,修改权限后运行:

/>tftp -g -l /var/led -r led 192.192.192.187/>cd /var/var> chmod 777 led/var> ./led

Page 68: 第八章嵌入式操作系统 uClinux 实验

8.5.5 实验操作步骤

1 、准备实验环境,使用 Embest S3CEV40 目标板附带的串口线连接目标板的 UART0 和 PC机的串口 COM1 ,使用 Embest S3CEV40 目标板附带的网线连接目标板的和 PC 机的网口。

2 、在 PC 机上运行 Windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

Page 69: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

3 、在 PC 机上运行 TFTP服务器端程序,设置传送文件的路径。

4 、在 Embest S3CEV40 目标板上运行 μClinux 嵌入式系统,在 PC 机上观察超级终端程序主窗口,可以看到如下界面:

Sash command shell (version 1.1.1)/>

Page 70: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤5 、在 PC 机上运行 cygwin ,编译实验例程目录里的 evfork.c例程,执行以下命令后生成二进制文件 evfork :

arm-elf-gcc –o evfork evfork.c –elf2flt

6 、在超级终端窗口中执行 TFTP 命令下载程序 evfork 到目标板文件系统,命令完成后 μClinux根目录下 var 文件夹中就会增加一个可执行的文件 evfork 。 />tftp –g –l /var/evfork –r evfork 192.192.192.39

Page 71: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

7 、在超级终端窗口执行以下命令首先为文件evfork 增加可执行权限,然后运行程序。

/>cd varvar>chmod +x evfork/var> ./evforki am the child process, my process id is 28end pid is 28i am the parent process, my process id is 27

Page 72: 第八章嵌入式操作系统 uClinux 实验

8.6 网络应用程序编写及调试实验

8.6.1 实验目的8.6.2 实验设备8.6.3 实验内容8.6.4 实验原理8.6.5 实验操作步骤

Page 73: 第八章嵌入式操作系统 uClinux 实验

8.6.1 实验目的

掌握 μClinux 下的网络接口编程 。掌握 NFS 方式调试应用程序的方法 。

Page 74: 第八章嵌入式操作系统 uClinux 实验

硬件: Embest S3CEV40 实验平台, PC 机软件: Windows 98/2000/NT/XP , cygwin 开发环境

8.6.2 实验设备

Page 75: 第八章嵌入式操作系统 uClinux 实验

8.6.3 实验内容

基于 μClinux 下的网络接口编写应用程序,实现一个简单的客户机 /服务器应用,服务器端程序在 μClinux 下运行,客户机程序在 PC 机上运行,服务器程序接收客户机发送过来的字符串并回传给客户端,同时将接收到的字符串打印到串口终端。在 μClinux 系统下映射主机目录进行程序的调试。

Page 76: 第八章嵌入式操作系统 uClinux 实验

8.6.4 实验原理

TCP/IP 网络应用中,通信的两个进程间相互作用的主要模式是客户 /服务器模式( Client/Server model )

套接口 ( socket )

网络接口应用程序编写

Page 77: 第八章嵌入式操作系统 uClinux 实验

实验原理

套接口使用步骤

1. 分配套接口和初始化2. 完成连接的系统调用3. 传送数据4. 关闭

Page 78: 第八章嵌入式操作系统 uClinux 实验

实验原理

NFS 的主要设计目的是为了在不同的系统中共享文件,其通讯协议设计与主机及操作系统无关。

mount 命令,可将远端文件系统安装在自己的文件系统之下,此时操作远端的文件和操作本地机器的文件完全相同。

NFS方式调试应用程序

Page 79: 第八章嵌入式操作系统 uClinux 实验

实验原理

1. 主机上安装 NFS服务 2. 配置 μClinux 支持 NFS

3. 在 μClinux 映射主机硬盘 4. 关闭

NFS方式调试应用程序的步骤

Page 80: 第八章嵌入式操作系统 uClinux 实验

8.6.5 实验操作步骤

1 、准备实验环境,使用 Embest S3CEV40 目标板附带的串口线连接目标板的 UART0 和 PC机的串口 COM1 ,使用 Embest S3CEV40 目标板附带的网线连接目标板的和 PC 机的网口。

2 、在 PC 机上运行 Windows 自带的超级终端串口通信程序(波特率 115200 、 1 位停止位、无校验位、无硬件流控制)。

Page 81: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

3 、在 PC 机上运行 TFTP服务器端程序,设置传送文件的路径 。

4 、按照 9.3 章节所述在 Cygwin 下安装 NFS Server ,设置共享目录 /home/app 并启动 NFS服务 。

5 、编译 μClinux 下运行的服务器端程序 server.c例程,执行以下命令后生成二进制文件 server ,并复制 server 程序到共享目录 /home/app

arm-elf-gcc –o server server.c –elf2flt

Page 82: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤6 、编译主机上运行的客户端程序 client.c例程,

执行以下命令后生成二进制文件 client : gcc –o client clinet.c

7 、在 Embest S3CEV40 目标板上运行 μClinux 嵌入式系统,在 PC 机超级终端程序窗口执行映射网络文件系统命令。 Sash command shell (version 1.1.1)/> mkdir /var/nfs/> portmap&/> mount -t nfs 192.192.192.12:/home/app /var/nfs -

o nolock

Page 83: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

8 、在 μClinux 终端窗口执行以下命令运行服务器程序:

/>cd /var/nfs/var/nfs>./serverserver listening …wait for connect …

命令执行后,出现“ server listening …wait for connect …”表示服务器程序进入监听状态,等待客户端程序的连接。

Page 84: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

9 、在 PC 机 cygwin 上运行客户端程序,执行以下命令,连接服务器:

$./client.exedefault local host : 192.192.192.12 , or you can input one after the command.Send to server …Default test string.Response from server …Default test string.

以上为客户端连接服务器后的显示。你可以使用默认服务器 ip ,也可以自己输入“./client 192.168.0.1” 。

Page 85: 第八章嵌入式操作系统 uClinux 实验

实验操作步骤

程序连接服务器后,客户端首先发送字符串“ Default test string.” 到服务器,服务器接受到并打印到串口,再将字符串回传给客户端,客户端接受到后再打印到显示终端。超级终端的显示如下:

/var>./serverserver listening...wait for connect...received form client...Default test string.send to client...Default test string.