tcpip与rs232协议转换器的设计内容摘要:

uClinux移植包 光盘中提供的 , 20200408 版本在很多方面比早先的 20202022版本 完善很多,这也使我们的各种移植工作变得方便很多。 这里我们使用的内核版本是 Linux。 是针对 ARMSYS 的硬件武汉工业学院 2020 毕业论文 第 12 页 共 35 页 平台进行移植的,它对 所做的修改部分保存在uClinux20202001 补丁文件中,供用户参考。 将 拷/opt/下(或者其它目录),运行解压命令: tar xvzf 解压结束后会在 /opt/下生成 uClinuxdist目录。 (3) 将 拷贝到根目录,运行安装 : sh uclinux 内核裁减,编译, 移植 Linux 内核采用模块话设计,几 乎 很多功能块可独立地安装或卸载。 因此,对内核重新编译,删除不需要的功能模块,可使系统运行所需的内核显著减小,从于缩减资源的使用量,也实现了 uclinux 的量身定制。 TCP/IP及串口驱动添加 打开 shell 终端。 cd /home/uClinuxdist make menuconfig 进入 uClinux 配置 (uClinux Configuration), 选中“ Kernel/Library/Defaults Selection224。 ”敲空格进入。 选中内核设置项和用户选项: [*] Customize Kernel Settings [*] Customize Vendor/User Settings 建议通过直接载入 立宇泰公司 提供的内核配置文件 Config_Kernel 和用户配置文件 Userconfig_eth (到 download/ 下 载 ) 来 完 成 配 置。 将Kernelconfig_eth 拷贝到 uClinuxdist/ 目录下,将 Config_User 拷贝到 uClinuxdist/Config 目录下。 回到终端,按下 ESC 键两次,敲回车退出。 武汉工业学院 2020 毕业论文 第 13 页 共 35 页 进入内核配置( Linux Kernel Configuration),选中“ Load an Alternate Configuration File”,敲空格键进入,输入 Kernelconfig_eth 文件名,按回车退出。 内核选项就被设置好了。 按下 ESC 键,敲回车保存设置。 自动切换到用户选项配置。 同样选中“ Load an Alternate Configuration File”,敲空格键进入,输入 Userconfig_eth 文件名,按回车退出。 用户选项就被设置好了。 也可以手动修改。 手动修改的步骤如下: 进入内核配置( Linux Kernel Configuration)。 (1) 配置 General Setup 选中“ General Setup ”,敲空格进入。 选中第 2项: [*] Networking Support 按 ESC退出。 (2) 配置 Networking options 选中“ Networking options”,敲空格进入。 需要选中其中的两项: * Packet socket „„ [*] TCP/IP working (3) 配置 Networking device Support 选中“ File system ”,敲空格进入。 选中: [*] Network device support? 选中“ Ether (10 or 100Mbit) ”敲空格进入: 选中: [*] Other ISA cards 在下拉的选项中,选中: * NE2020/NE1000 support 武汉工业学院 2020 毕业论文 第 14 页 共 35 页 敲三次 ESC,敲回车,退出内核配置。 (4) 配置 Network Applications 选中“ Network Applications ”敲空格进入,选中以下几项: [*] arp „„ [*] ifconfig [*] id „„ [*] ping „„ [*] route „„ 编译 uClinux 在 /opt/目录下,按下面的步骤对 uClinux源码包进行编译: make dep„„„„„„„„„ 建立依赖关系 make clean (非必要 )„„„„„ 清除旧的编译结果 make lib_only„„„„„„„„ 编译库 make user_only„„„„„„„ 编译用户程序 make romfs„„„„„„„„„ 产生 rom文件系统 make image„„„„„„„„„ 产生映像文件 make„„„„„„„„„„„„ 编译内核 编译成功后,在 uClinuxdist/目录下将产生 images目录,其中包含的 3个文件:, 和。 移植 uclinux内核 (1) 设置 tftp 服务器 TFTP协议是一个简单的基于 UDP文件传输协议 ,其实现比较简单 ,使用方便 .TFTP服务在 LINU上有客户端和服务器端两个软件包 . 武汉工业学院 2020 毕业论文 第 15 页 共 35 页 可以先看看你的 PC机器上是否已经安装了 TFTP客户端和服务器端 : [root@SunLife ~] rpm q tftp [root@SunLife ~] rpm q tftpserver [root@SunLife ~] 如果已经安装 ,就可以配置它了 .TFTP可以通过图形化 的界面来配置 .也可以手工配置 .当然操作要有 ROOT权限 .手工修改 TFTP配置文件 ,可以定制 TFTP服务 . 其配置文件 /etc/: [root@SunLife ~] cat /etc/ default: off description: The tftp server serves files using the trivial file transfer\ protocol. The tftp protocol is often used to boot diskless \ workstations, download configuration files to workaware printers,\ and to start the installation process for some operating systems. service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/ server_args = s /tftpboot per_source = 11 cps = 1002 flags = IPv4 } [root@SunLife ~] TFTP服务器默认把 /tftpboot作为输出文件的根目录 ,当然你也可以换成其他目录 . TFTP服务器默认是关闭的 .所以要将 disable设为 TFTP服务器的服务器程序为 /usr/sbin/(它是一个守护进程 ). 修改配置以后 ,就要重新启动TFTP服务 : 武汉工业学院 2020 毕业论文 第 16 页 共 35 页 [root@SunLife ~] /etc/ 停止 xid: [ 确定 ] 启动 xid: [ 确定 ] [root@SunLife ~] 即可 . (2) 开启 mini Linux 系统下使用 mini 串口通信工具 ,就像 Windows 下的超级终端。 使用mini 之前,先要配置参数。 在 shell 命令下执行“ mini s”命令, 选择“ Serial port setup”菜单项 ,通过相应的按键选择进入子项, B115200,选择 /dev/ttyS0 等。 保存配置,退出。 在 shell 命令下执行“ mini ”命令,进入 mini 控制台。 (3) 下载 映像文件 连接好开发板的串口线,网线,电源线。 启动开发板, 按下 enter 键,进 Bootloder下载模式下,把 uClinuxdist/目录下将产生 images目录,其中一个文件: ,复制到 linux 操作系统的 /tftpboot 目录下,在 mini 控制台 下,敲入 tftp 命 令即可下载 映像文件,然后执行 go 0x0c008000 启动 uclinux 内核 ,此时可以看到启动信息。 五 . 软件程序构架 软件结构 由于程序的开发和执行是在 PC和 ARM两个不同的平台上进行的,因此需要进行交叉编泽和连接。 uClinux为 ARM核处理器提的一套完整的交义开发工具链 arm— elf—toolchain,其中包括汇编编译器 arm— elf— as, c/ c++编译器 arm— elf— gcc,连接工具 arm— gcc— ld,反编泽二进制文件工具 arm— elf— objdump等 本文科序在 RedHat9. 0 Linux操作系统 下 使用 arm— elf— toolchain 二具 开 发,程序没计采 用 多线程技术, Linux系统 下 的多线程遵循 POSIX线程接 口。 作为一种多任务、并发的工作疗式,多线程程序可以提高应 用 程序相应, 改善 程序结构。 本 建立了两个子进程,分别 用于 理串口数据经网 卡 发送 和 网卡 数据经串口 发送两种 功能,程序流程如图 6 所 示。 测试 过程通过 NFS网 络 文件系统进行,在 Pc端配置 NFS服务器, 设武汉工业学院 2020 毕业论文 第 17 页 共 35 页 置 共 享文件夹及权限,调试无误后,加入自己开发的程序 重 新编译 uClinux内核,并将编译好的二进制文件 固 化 到开发 板的 ROM中, 使其开机后自动运行。 图 6 串口/以太网转换设备软件流程图 串口 处理 程序 模块 在 Linux系统 下 ,串口属于字 设备 ,位于/ dev目录下,串口操作包括打开和关闭串口,设置串口属性 (如波特率设置,数据位、校验位和停止位设置 )、读写串口等。 Linux系统将设备看成文件处理,本文系统的两个串 口 COM1和 COM2分别对应于uClinux系统下/ dev/ ttySO和/ dev/ ttyS 1两个文件,打 开 或 关 闭设备的操作对应于打开或关闭相应的文件。 以 COM1为例, 打开并初始化过程如下: (1) 打开串口是通 过使用标准的文件打开函数操作: fd=open(“/ dev/ ttyS0”. O_RDWR)://以读 写 方式打开串口 1 // fl打开错误或异常判断 If( fd 0) { perror(“ Open serial Port COM l Failed!” )。 exit(一 1); 武汉工业学院 2020 毕业论文 第 18 页 共 35 页 } tcgetattr(0, amp。 oldstdtio)。 //保存标准串口属性 tcgetattr(fd, amp。 oldtio)。 //保存 原来 串 口 属性 tcgetattr(fd, amp。 nev. stdtio)。 //设置新的串口属性 newtio. c. cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD。 //设置波特率数据位等 //其他设置 tcsetattr(fd, I39。 CSANOW, amp。 newtio); //新属性没置生效 (2) 设置串口 最基本的设置串口包括波特率设置,效验位和停止位设置。 串口的设置主要是设置 struct termios 结构体的各成员值。 struct termio { unsigned short c_iflag。 /* 输入模式标志 */ unsigned short c_oflag。 /* 输出模式标志 */ unsigned short c_cflag。 /* 控制模式标志 *。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。