毕业设计(论文)-多路复合视频信号的采集与传输设计.doc_第1页
毕业设计(论文)-多路复合视频信号的采集与传输设计.doc_第2页
毕业设计(论文)-多路复合视频信号的采集与传输设计.doc_第3页
毕业设计(论文)-多路复合视频信号的采集与传输设计.doc_第4页
毕业设计(论文)-多路复合视频信号的采集与传输设计.doc_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息学院 电信 0302 王波 2003373645 毕业设计 第 1 页 共 59 页 济南大学毕业设计用纸 目目 录录 摘摘 要要.3 abstract.4 1 选题背景选题背景.5 1.1 课题的来源.5 1.2 题目的理论目的意义.5 1.3 方案选择与论证.6 1.4 指导思想.10 2 嵌入式操作系统的移植嵌入式操作系统的移植.11 2.1 嵌入式操作系统的发展.11 2.2 嵌入式操作系统及其特点.12 2.3 常用的嵌入式操作系统.12 2.3.1 windows ce .net12 2.3.2 嵌入式 linux .12 2.3.3 vxworks.13 2.3.4 t-kernel14 2.3.5 uc/os-ii15 2.4 uc/os-ii 移植原理16 2.4.1 编译器的选择16 2.4.2 移植 uc/os-ii.16 2.4.3 编写 os_cpu.h17 2.4.4 编写 os_cpu_c.c 文件18 2.4.5 编写 os_cpu_a.s 文件20 2.4.6 中断与时钟节拍21 3 基于基于 isp1161a1 的的 usb host 驱动驱动23 3.1 usb 总线传输协议.23 3.1.1 包的格式23 3.1.2 usb 总线数据传输类型24 3.2 isp1161a1 介绍25 3.2.1 isp1161x芯片介绍25 3.2.2 isp1161x 软件模块26 3.2.3 isp1161x 硬件模块27 3.2.4 isp1161x 软件系统结构.28 3.2.5 主机堆栈系统结构.28 3.2.6 编程 isp1161x 的主机控制器29 3.3 usb 驱动的软件实现.37 4 以太网连接以太网连接.43 4.1 以太网控制器 enc28j60 43 4.2 enc28j60 驱动的软件实现.46 信息学院 电信 0302 王波 2003373645 毕业设计 第 2 页 共 59 页 济南大学毕业设计用纸 4.3 基于 enc28j60 以太网卡的以太网传输的架构 .48 5 实验电路与结果实验电路与结果.50 5.1 系统设计的电路实物图50 5.2 部分实验结果51 6 总总 结结.54 6.1 毕业设计中遇到的困难及解决办法.54 6.1.1 操作系统移植部分.54 6.1.2 usb 接口芯片 isp1161 的驱动开发调试部分.54 6.2 收获与展望.56 致致 谢谢.58 参考文献参考文献.59 信息学院 电信 0302 王波 2003373645 毕业设计 第 3 页 共 59 页 济南大学毕业设计用纸 摘 要 本文提出一种多路复合视频信号的采集与传输的设计方案。该方案在 lpc2138 微处 理器上移植 ucos-ii 操作系统,采用 usb 接口芯片 isp1161a1 的 host 方式连接 usb 摄像头进行视频数据的采集,然后,通过以太网接口芯片 enc28j60 接入以太网,进行多 路复合视频信号的网络传输。本方案包括 usb host 驱动的开发、usb 驱动层 usbd 的 开发、以太网接口芯片 enc28j60 的介绍以及底层硬件驱动的开发、tcp/udp/ip 协议的 应用,对整个系统的设计进行了比较全面的论述。针对目前的情况,对一些难点技术进 行深入学习,主要讨论以下几个方面的问题: 如何将一个 ucos-ii 操作系统移植到微处理 器上;如何编写 usb 接口芯片的 hc 驱动程序;怎样设计 usbd 层;以及以太网传输的 构建。 关键字:ucos-ii 操作系统,usb host,以太网传输,ip 协议栈 信息学院 电信 0302 王波 2003373645 毕业设计 第 4 页 共 59 页 济南大学毕业设计用纸 abstract this paper presents a multi-channel composite video signal acquisition and transmission design. the program transplants ucos-ii operating system on the lpc2138 microprocessor, using the host isp1161a1 as usb interface chip connected usb camera for video data acquisition, and then through the ethernet interface chip enc28j60 access to ethernet, for multi-channel composite video signal transmission network. the program includes a usb host-driven development, usb driver layer usbd development, enc28j60 ethernet interface chip on the bottom and hardware-driven development, tcp / udp / ip protocol to the applicat - ion of the whole system design of a more comprehensive exposition. in view of the current situation, through some technical depth study, discuss on the following areas : how would one transplanted ucos-ii operating system to the microprocessor; how to prepare the usb interface chip hc driver; how to design usbd layer; ethernet transmission and construction. keywords: ucos-ii operating system, usb host, ethernet transfer, ip protocol stack 信息学院 电信 0302 王波 2003373645 毕业设计 第 5 页 共 59 页 济南大学毕业设计用纸 1 选题背景选题背景 1.1 课题的来源课题的来源 usb(universal serial bus ,通用串行总线) 是最近几年逐步在pc 领域广为应用的新型 接口技术。作为计算机外围设备的一种标准接口,他以支持热插拔、接口通用性好、实时 性强、传输方式多样、较高的传输速率、成本低、易于扩展且便于使用这些优点而受到 许多硬件厂商的青睐,各种类型的usb 设备产品,包括摄像头、键盘、鼠标、扫描仪、打 印机以及存储设备大量涌入市场,应用如火如荼。但是要使这些设备像在windows 中一样, 运行在嵌入式系统中,就需要编写相应操作系统下的驱动程序,也叫bsp(板级支持包) 。 在许多的应用中,多媒体相关的应用更是倍受人们关注,尤其是视频的相关技术。一般 情况下可以采用摄像头或视频采集卡来完成视频的采集工作,由于使 usb 接口的摄像头 在 pc 上的应用已经很广泛,而且成本低廉,所以在嵌入式 ucos-ii 系统中开发使用 usb 摄像头来采集视频是很好的选择。 为了能够进行基于下位机的视频采集与传输的设计学习与研究,增进本人对电子信 息科学专业相关的较为常见的产品开发设计的兴趣与了解,促进对嵌入式操作系统移植 的学习,尤其是为了增加对usb摄像头的驱动、以太网络传输等技术开发流程的了解与 熟悉,故选择了本设计题目。 1.2 题目的理论目的意义题目的理论目的意义 视频信号的采集与传输是安全监控、生产线控制、信息监测等视频信息处理领域的 技术基础。本设计主要是配合实现教室监控系统的下位机终端多路视频采集与传输控制 部分,将视频数据传输到上位机由上位机进行分析处理,然后上位机将控制信息发回下 位机,由下位机控制教室的照明灯,实现节能的目的。它主要有驱动 usb 摄像头进行视 频图像采集、数据与处理、网络传输技术等多方面的内容。需要综合考虑视频信号采集、 传输及控制等实现情况。本设计主要集中在 usb 协议的软件编写,usb 摄像头驱动的软 件编写和以太网传输的开发部分,工作量和开发难度大,能够真正锻炼自己的水平,将 自己四年所学提高到一个新的台阶。 1.3 方案选择与论证方案选择与论证 多路视频信号的采集与传输有很多应用场合,并且基于 usb 摄像头的视频采集理论 研究己经取得了一定的成果。系统主要有两大难题,第一是 usb 接口芯片应当选择具有 host 主机模式的芯片,而大部分接口芯片多用作从机模式,usb 主机模式的驱动编程要 信息学院 电信 0302 王波 2003373645 毕业设计 第 6 页 共 59 页 济南大学毕业设计用纸 比从机模式复杂的多;第二是 usb 摄像头驱动开发难度大,因为大部分摄像头厂商因为 商业原因,摄像头驱动开发需要的内部资料都保密;第三是多路信号的网络传输问题, 因为视频信号实时性较强并且数据量较大,所以,既要实现多路信号的传输实现,又要 实现实时性网络传输。因此,关于多路复合视频信号采集与传输系统的研究仍在不断进 行,其可行方案也多种多样。 在选择设计方案时,我的认识是一个逐步提高的过程,但也走了很多弯路,在 usb 接口芯片选择方面主要可选方案有 pdiusbd12、cypress 公司的 ez-usb 系列芯片、 lpc214x 集成 usb 功能的 arm 芯片以 isp1161 芯片等;在网络传输的方案选择上依次 经历了:采用 485 总线协议进行传输、采用常用的 rtl8239 系列基于 pci 协议的网卡传 输以及现在采用的基于 spi 总线协议 enc28j60 以太网卡接口芯片方案。 方案一方案一: 本方案采用 usb 摄像头进行视频数据采集、 以单片机作为终端核心处理器将采集 的视频数据向上位机传输,供上位机进行图像分析处理,并且接收上位机的命令进行相 关控制操作。 (1) 摄像头的选择:摄像头的选择: 摄像头为整个系统的数据传输、分析、处理提供原始视频数据,因此摄像头的选择关 系到之后对视频数据分析处理的好坏程度,极为重要;同时又考虑到本系统设计的目的 是为教室照明灯的自动控制提供前端处理、传输以及最终控制,技术要求仅限于对图像 的分析控制,而非图像的精确识别,因此对视频图像清晰度的要求不是非常严格,只需 做到区域模糊识别的程度;同时,降低成本也是必须考虑的因素之一,如果采用带有数 据采集卡的摄像头,不仅成本高,而且对视频精度的应用也是一种浪费;综上,本系统 采用带有usb接口的摄像头进行视频数据的采集。 (2) 通信接口:通信接口: 采用rs-485,rs-485是一个多引出线串行通信接口,该接口可以最多负载128个驱动 器和接收器,可以实现一台上位机与多台下位机之间的串行通信,最长传输距离可达 1200m,适合于远距离传输。pc机与rs-485总线之间的接口可以采用s2-485标准转换芯 片实现;单片机与485总线的接口可以采用max48x/49x系列收发器组成差分平衡系统, 抗干扰能力强,适合于远距离传输。系统总体示意图见图1。 (3) 通信协议设计:通信协议设计: 帧格式:包括呼叫帧、应答帧和数据帧。 呼叫帧由上位机发出。格式为起始字符、下位机、地址和校验位。上位机通过呼叫帧 来轮询各台下位机的状态或者关闭轮询,同一时间内只与一台下位机进行通信。二者之 间通过数据帧进行一对一的数据通信。 应答帧:只能由下位机发出。当下位机收到呼叫帧后,便将本机地址以及当前状态发 送给上位机。 信息学院 电信 0302 王波 2003373645 毕业设计 第 7 页 共 59 页 济南大学毕业设计用纸 数据帧:上下位机都可以发送数据,数据帧是上下位机间进行大量数据传输的基本格 式,在发数据帧之前上下位机之间已经建立的一对一的连接,为了通信的可靠性,进行 数据传输时,仍然保留下位机的地址,因此数据帧的格式可以定义见表1。 表1-1 数据帧格式 类 型 起始字符下位机地址 命令字段 数据序列 异或校验 占用位数/bit 8 8 8 8*8 8 (4) 通信模式:通信模式: 用标准异步串行通信模式,格式为1位起始位、8位数据位、1位停止位。 图1-1485总线通信模式图 (5)差错控制:差错控制: 用于传输数据的错误检查和错误纠正,以保证数据传输的准确性。 呼叫阶段:当上位机发送呼叫帧后,如果在规定时间内没有收到下位机的应答帧, 则上位机认为帧丢失并重发呼叫帧;如果连发送三次仍没有收到应答帧,则系统认为该 下位机处于关机状态,上位机便开始执行其他任务。 数据传输阶段:差错控制采用应答方式,即接收方向发送方回发特殊的控制命令码, 作为正确与错误的确认标志;发送方接收到确认信息后就可以确定数据是否已经正确发 送,是否需要重新发送。特别情况下,当数据传输过程中帧完全丢失,则发送方会无休 止的等待接收方的确认信息,为了解决这一问题,可以采用看门狗定时器,当发送方发 送数据后超过一定时间没有收到确认信息,就认为是数据丢失,自动重发数据。同时, 最大重发次数设定为 3 次,超过 3 次就认为是串行通信线路出现故障,上位机进行故障 报警。 本方案采用 485 总线传输数据,最多可以达到 128 路数据,但是数据传输速率较慢, rs-485 总线 r1r2 s2- 485 pc 机 max48x/49 x 终端 1 max48x/49 x 终端 2 max48x/49 x 终端 n 信息学院 电信 0302 王波 2003373645 毕业设计 第 8 页 共 59 页 济南大学毕业设计用纸 不能很好地满足视频数据的实时性传输的要求,因此本方案没被采用。 方案二方案二: 本方案与方案一的不同之处主要在于网络传输部分,本方案决定采用以太网进行数 据传输,网络传输协议主要采用 tcp/udp/ip 协议,网卡主要采用基于 pci 协议的 rtl8239 网卡。 本架构的优点是可以采用通用 pci 接口网卡,成本低,维护简单,如果网卡出现问 题,可以轻易的更换网卡;更重要的是较之方案一,实现了通用的以太网传输功能, ucos-ii 操作系统 rtl8239 以太网卡 ip 层 tcp/udp 层 rtl8239 网卡驱动 以太网传输管理层 以太网 图 1-3 以太网传输的架构图 传输路数多,借助交换机、路由器等工具传输距离远,可以与主机进行实时通信,并且 由于以太网的飞速发展,传输速率正不断提高,可扩展的空间较大,单就目前的速率来 看,传输速率已经很快了。但是也存在着开发的不足之处,该网卡是基于 pci 总线协议 的网卡,而 pci 总线驱动在所有总线驱动之中开发难度是最大的,在毕业设计这有限的 时间里,很难做好。鉴于以上原因,本方案也未被采用。 方案三:方案三: 本方案与方案二唯一的不同之处就是,采用 microchip 公司新生产的 10 base-t 的 enc28j60 以太网卡接口芯片,该芯片集成 mac 地址,采用最高速度可达 10 mb/s 的 spi 接口设计,与方案二相比,spi 接口驱动的开发难度小,开发周期短,而且成本低。 因此,本设计决定采用该方案。 信息学院 电信 0302 王波 2003373645 毕业设计 第 9 页 共 59 页 济南大学毕业设计用纸 enc28j60lpc2138 cs miso mosi sck int2 tx/rx 缓冲器 mac phy 以太 网变 压器 rj45 图 1-4 enc28j60 与 lpc2138 接口图 本方案的总体硬件结构如图 1-5: 系统硬件结构:系统硬件结构: usb 摄像 头 isp1161 usb 接 口芯片 微处理器 lpc2138 enc28j60 以太网卡 以太网 图 1-5 系统硬件结构图 系统软件实现结构:系统软件实现结构: isp1161 硬件 enc28j60 硬件 ucos-ii 操作系统 isp1161 驱动 enc28j60 驱动 usb 协议栈 摄像头驱动 视频采集管理 tcp/udp/ip 协议栈 网络传输管理 图 1-6 系统软件实现图 信息学院 电信 0302 王波 2003373645 毕业设计 第 10 页 共 59 页 济南大学毕业设计用纸 1.4 指导思想指导思想 综上所述系统的实现应该在移植 ucos-ii 操作系统前提下,以 usb2.0 协议为指导, 继承现有以太网传输协议 ip 协议栈技术基础上,从硬件芯片设备的选取,usb 接口芯片 驱动开发,usb 驱动开发,摄像头驱动开发,网卡驱动开发等五个主要方面进行。由于 是结合硬件设备的来设计的。着重解决以下问题: 1)基于 isp1161a1 usb 接口芯片的驱动开发,对异步传输的 ptd 头以及 atl 缓冲 区的编程实现,尤其是对同步传输的 ptd 头以及 itl 缓冲区的软件编程实现。从而实现 isp1161 驱动与 usb 协议的融合。 2)摄像头驱动程序的开发,是本设计中的重点与难点,工作量大,关键是各个摄像头 生产厂商对摄像头资料保密,驱动开发难度大,应通过大量实验解决。 3)基于 enc28j60 芯片的网卡驱动程序编写是网络传输的基础,只有实现了底层 驱动才能实现多路复合数据的网络传输功能,着重开发、调试底层网卡驱动。 2 嵌入式操作系统的移植嵌入式操作系统的移植 2.1 嵌入式操作系统的发展嵌入式操作系统的发展 嵌入式系统的出现至今已经有 30 多年的历史。纵观嵌入式技术的发展过程,大致经 历了四个阶段。 (1)无操作系统的嵌入式算法阶段 这一阶段的嵌入式系统是以单芯片为核心的系统,具有与一些监测、伺服、指示设 备相配合的功能。一般没有明显的操作系统支持,而是通过汇编语言编程对系统进行直 信息学院 电信 0302 王波 2003373645 毕业设计 第 11 页 共 59 页 济南大学毕业设计用纸 接控制。主要特点是系统结构和功能都相对单一,针对性强,无操作系统支持,几乎没 有用户接口。 (2)简单监控式的实时操作系统阶段 这一阶段的嵌入式系统主要以嵌入式式器为基础、以简单监控式操作系统为核心。 系统的特点是:处理器种类繁多,通用性比较弱;开销小,效率高;一般配备系统仿真 器,具有一定的兼容性和扩展性;用户界面不够友好,主要用来控制系统负载以及监控 应用程序运行。 (3)通用的嵌入式实时操作系统阶段 以通用型嵌入式实时操作系统为标志的嵌入式系统,如 vxworks、psos、windows ce 就是这一阶段的典型代表。这一阶段嵌入式系统的特点是:能运行在各种不同的微处 理器上;具有强大的能用型操作系统的功能,如具备了文件和目录管理、多任务、设备 驱动支持、网络支持、图形窗口以及用户界面等功能;具有丰富的 api 和嵌入式应用软 件。 (4)以 internet 为标志的嵌入式系统 伴随着通用型嵌入式实时操作系统的发展,面向 internet 网络和特定应用的嵌入式操 作系统正日益引起人们的重视,成为重要的发展方向。嵌入式系统与 internet 的真正结合、 嵌入式操作系统与应用设备的无缝结合代表着嵌入式操作系统发展的未来。 2.2 嵌入式操作系统及其特点嵌入式操作系统及其特点 嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬 件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用 计算机系统。嵌入式系统通常具有可裁剪性,实时性,可靠性等特点。即嵌人式系统具 有高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌人式 应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用 有机地结台在一起,它的升级换代也是和具体产品同步进行;嵌入式系统中的软件代码 要求高质量、高可靠性;一般都固化在只读存储器中或间存中,也就是说软件要求固态 化存储,而不是存储在磁盘等载体中。 2.3 常用的嵌入式操作系统常用的嵌入式操作系统 2.3.1 windows ce .net windows ce .net 是一个功能强大的实时嵌入式操作系统,也是微软第一个能够 全面支持中文的 windows ce 操作系统,适用于快速构建新一代内存少体积小的智能 设备,例如手持式设备、智能电话、机顶盒、零售点设备和显示器等。不仅如此, 信息学院 电信 0302 王波 2003373645 毕业设计 第 12 页 共 59 页 济南大学毕业设计用纸 windows ce .net 也为构建智能移动设备的开发人员提供了新一代的功能强大嵌入式 系统平台,它允许开发人员优化操作系统的内存占用,最小可以降至 200k 左右。为了使 开发人员能构建功能最丰富的移动设备,windows ce .net 提供了对最新无线技术的 支持,例如蓝牙技术和零配置的 802.11,而且它还通过 microsoft internet explorer 5.5、windows media (tm) 8 和 directx 8 提供了全面的多媒体和 web 浏览体验。windows ce .net 支持各种处理器产品家族,包括 x86、xscale、arm、mips 和 sh 系列,因此它允许开发人员为他们自己的项目选择 最理想的硬件。 2.3.2 嵌入式嵌入式 linux 随着微处理器的产生,价格低廉、结构小巧的 cpu 和外设连接提供了稳定可靠的硬 件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末 开始,陆续出现了一些嵌入式操作系统,比较著名的有 vxwork、psos、neculeus 和 windows ce。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小 公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。另外,结合国内实 情,当前国家对自主操作系统的大力支持,也为源码开放的 linux 的推广提供的广阔的 发展前景。还有,对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友 善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。在不久的将来, 从冰箱到收音机都会内置处理器。因为 linux 的开放性,许多人认为 linux 非常适合多数 internet 设备。他们认为 linux 可以支持不同的设备,支持不同的配置。linux 对厂商不偏 不倚而且成本极低,能够很快成为用于各种设备的操作系统。如今,业界已经达成共识: 即嵌入式 linux 是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商 进入这一领域。 嵌入式操作系统主要有 palm os,windows ce,epoc, linuxce, qnx, ecos,lynx,高端嵌入式系统要求许多高级的功能,如图形用户界面和网络支持 。很 多高端 rtos 供应商已经提供了这些功能,但其价格也很高端,一般人难以接受。微软 的 windows ce 也有此类功能,却不具备大多数嵌入式系统要求的实时性能,而且难以移 植,也曾经有人想以 dos 为基础用单独的第三方工具拼凑一个系统,但这种努力将是白 费。现在需要的是一个便宜、成熟并且提供高端嵌入式系统所必须特性的操作系统,嵌 入式 linux 操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力 量,所以,众多商家纷纷转向了嵌入式 linux。 linux 为嵌入操作系统提供了一个极有吸引力的选择,它是个和 unix 相似、以核心 为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括 x86,alpha,sparc,mips,ppc,arm,nec,motorola 等现有的大部分蕊片。程式源码全部 公开,任何人可以修改并在 gnu 通用公共许可证(gnu general public license)下发行,这 信息学院 电信 0302 王波 2003373645 毕业设计 第 13 页 共 59 页 济南大学毕业设计用纸 样,开发人员可以对操作系统进行定制,再也不必担心像 ms windows 操作系统中“后门“ 的威胁。同时由于有 gpl 的控制,大家开发的东西大都相互兼容,不会走向分裂之路。 linux 用户遇到问题时可以通过 internet 向网上成千上万的 linux 开发者请教,这使最困难 的问题也有办法解决。linux 带有 unix 用户熟悉的完善的开发工具,几乎所有的 unix 系 统的应用软件都已移植到了 linux 上。linux 还提供了强大的网络功能,有多种可选择窗 口管理器(x windows) 。其强大的语言编译器 gcc、g+等也可以很容易得到。不但成熟 完善、而且使用方便。 2.3.3 vxworks vxworks 是专门为实时嵌入式系统设计开发的操作系统内核,为程序员提供了高效 的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。在各种 cpu 平 台上提供了统一的编程接口和一致的运行特性,尽可能的屏蔽了不同 cpu 之间的底层差 异。应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的 管理。基于 vxworks 操作系统的应用程序可以在不同 cpu 平台上轻松移植。 vxworks 是美国 wind river system 公司( 以下简称风河公司 ,即 wrs 公司) 推出的一个实时操作系统。wrs 公司组建于 1981 年,是一个专门从事实时操作系统开 发与生产的软件公司,该公司在实时操作系统领域被世界公认为是最具有领导作用的公 司。 vxworks 是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。它以其 良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及 实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 f-16、fa-18 战斗机、b-2 隐形轰炸机和爱国者导弹上,1997 年 4 月在火星表面登陆的 火星探路者上也使用了 vxworks。 vxworks 是一种功能强大而且比较复杂的操作系统,包括了进程管理、存储管理、 设备管理、文件系统管理、网络协议及系统应用等几个部分。vxworks 只占用了很小的 存储空间,并可高度裁减,保证了系统能以较高的效率运行。所以,仅仅依靠人工编程 调试,很难发挥它的功能并设计出可靠、高效的嵌入式系统,必须要有与之相适应的开 发工具。tornadoii 就是为开发 vxworks 应用系统提供的集成开发环境,tornadoii 中包 含的工程管理软件,可以将用户自己的代码与 vxworks 的核心有效的组合起来,可以按 用户的需要裁剪配置 vxworks 内核;vxsim 原型仿真器可以让程序员不用目标机的情况 下,直接开发系统原型,作出系统评估;功能强大的 crosswind 调试器可以提供任务级 和系统级的调试模式,可以进行多目标机的联调;优化分析工具可以帮助程序员从多种 方式真正地观察、跟踪系统的运行,排除错误,优化性能。 信息学院 电信 0302 王波 2003373645 毕业设计 第 14 页 共 59 页 济南大学毕业设计用纸 2.3.4 t-kernel t-kernel 源自于日本东京大学坂村健博士于 1984 年提出的计算机操作系统规范 tron(the real-time operating system nucleus) 。iron 的目的是想构筑一种理想的计算 机结构,实现新的计算体系“泛在计算环境”(ubiquitous computing) 。即将微型计算 机嵌入到日常生活中的所有机器、设备、工具中,通过网络相互通信,协调运行,以实 现高度计算机化的社会环境。 通过 20 年的发展,全球微处理器操作系统系统市场上大约 60%的份额被 tron 占据。 为了实现更为理想的实时操作系统的嵌入式计算结构,tron 项目启动了 t-engine 项目 计划。 “t-engine”是为在短时间内高效开发实时嵌入式系统而设计的,由标准化硬件结构 (t-engine)与标准开源实时操作系统核心(t-kernel)组成的嵌入式系统的开放式标准 平台。 在 t-engine 开发过程中,搭载的 cpu 为可变的,而规定了其硬件结构规范、操作系 统核心界面规范、对象数据格式规范等要素,使 tron 在标准化的基础结构上,具备充 分的外围资源及开发环境。从而将 cpu 从基础结构中独立出来,在 t-kernel 上开发的中 间件可不依存于 cpu 结构而移植。 这样,通过使用高质量的标准化硬件和软件,使得 系统稳定,尺寸小,易于开发和调试,很容易使其直接成为商品,可在短时间内投向市 场。 t-kernel 整个系统是基于子系统的微内核结构。系统中的每一个模块都是一个独立的 子系统。这使 t-kernel 中的功能模块易于扩展和裁减而不会相互影响,基于这种结构, 在 t-kernel 之上开发易于移植的标准中间件成为可能。 为了适应于大规模的嵌入式软件开发,2006 年 11 月,t-engine forum 推出了 t- kernel/standard extend 的源码和规范,在 t-kernel 的基础上扩展了进程管理,文件系统 和网络协议栈等功能模块,在 t-kernel 高实时性的内核上,加强了处理信息和数据的能 力。 2.3.5 uc/os-ii c/os-ii 的前射是 c/os,最早出自于 1992 年美国嵌入式系统专家 jean j.labrosse 在嵌入式系统编程杂志的 5 月和 6 月刊上刊登的文章连载,并把 c/os 的源码发布 在该杂志的 bbs 上。当时就有 500 多人下载了这份源码。世界上数以千计的工程技术人 员将 c/os 应用到了各个领域,如照相机业、发动机控制、网络接入设备、高速公路电 话系统、atm 机和工业机器人等。许多大学用 c/os 作教材,用于实时系统教学。1998 年,作者决定出版 c/os 的第二本书c/os-ii the real time kernel ,并设立了正式的 网站:www. c/os-ii.com,给 c/os-ii 增加了一些新的功能,并且增加了约 200 页的 信息学院 电信 0302 王波 2003373645 毕业设计 第 15 页 共 59 页 济南大学毕业设计用纸 解释。 c/os 和 c/os-ii 是专门为计算机的嵌入式应用设计的,绝大部分代码是用 c 语言 编写的。cpu 硬件相关部分是用汇编语言编写的、总量约 200 行的汇编语言部分被压缩 到最低限度,为的是便于移植到任何一种其它的 cpu 上。只要有标准的 ansi 的 c 交叉 编译器,有汇编器、连接器等软件工具,就可以将 c/os 嵌入到开发的产品中。 c/os 具有执行效率高、占用空间小、实时性能优良和可扩展性能等特点,最小内 核可编译至 2kb。c/os-ii 已经移植到了几乎所有知名的 cpu 上。 c/os-ii 是一个可移植、固化、裁减的占先式实时多任务内核,它使用标准的 ansic 语言编写,并包含一段汇编语言代码,使之可供不同架构的微处理器使用。它的 主要特点如下: c/os-ii 的每个任务都有自己单独的栈,使用 c/os-ii 的占空间校验函数,可确定 每个任务到底需要多少栈空间。 优先级可剥夺的实时多任务操作系统。 可处理和调度 56 个用户任务,任务的优先级可以动态调整。 提供任务间通信、同步使用的信号量、邮箱和消息队列。 具有良好的可裁剪性,可减小系统的 rom 和 ram 大小。 中断管理,中断可以使正在执行的任务暂时挂起。如果优先级高的任务被中断唤醒, 则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达 255 层。 本方案的操作系统的选择本方案的操作系统的选择 c/os-ii 操作系统是源码公开的实时操作系统,通过对各种操作系统各自的特点和 性能进行分析和比较,c/os-ii 为一种合适的 rtos 操作系统,c/os-ii 支持当前流行 的大部分嵌入式 cpu,具有很好的可移植特性。c/os-ii 支持从 8 位到 32 位的 cpu 移 植。c/os-ii 由于本身内核就很小,经过裁剪后的代码最小可以小于 2kb,所需的最小 数据 ram 空间可以为 4kb,因此它们对硬件的要求很低,具有极高的经济性。因此本设 计移植 c/os-ii 操作系统。 2.4 uc/os-ii 移植原理移植原理 所谓移植就是使一个实时内核能在某个微处理器或微控制器上运行。c/os-ii 中任 务的定义接近线程的概念,它是一个独立的按优先级运行的处理过程。c/os-ii 实现了 对任务的可剥夺式的调度管理,内核会最先运行最高优先级的任务,其它的任务会依据 自身的优先级来完成任务调度。在这个过程中,当前运行的任务会被优先级更高的就绪 任务抢占以获得处理器时间,从而更好地实现了实时系统功能。 信息学院 电信 0302 王波 2003373645 毕业设计 第 16 页 共 59 页 济南大学毕业设计用纸 2.4.1 编译器的选择编译器的选择 目前,针对 arm 处理器核的 c 语言编译器有很多,如 sdt、ads、iar、tasking 和 gcc 等。sdt 和 ads 均为 arm 公司自己开发,ads 为 sdt 的升级版,gcc 虽然支 持广泛,但与 ads 相比编译效率较低,对充分发挥芯片性能很不利。因此,本设计决定 采用 ads 编译程序和调试。 2.4.2 移植移植 uc/os-ii c/os-ii 的软件体系结构包括应用程序软件、与应用相关的代码、与处理器无关和 相关的代码。应用程序软件是用户根据需求来编写的代码。要使同一个内核能适用于不 同硬件体系,就需要在内核和硬件之间有一个中间层,这就是与处理器相关的代码,处理器 不同,这部分代码也不同。 移植操作系统需要用 c 和汇编语言编写与处理器相关的代码,产生可重入代码要求。 用 c 语言编写六个简单的函数(os_cpu_c.c),移植一系列的类型定义以确保其可移植性, 在结构常量 os_stk_growth 中指定堆栈的生长方式、复用系统服务代码、增加软中 断服务接口来协调移植代码之间的通讯等功能。 c/os-ii 的软件体系结构如图 1 所示: os_cpu_a 为处理器相关代码的移植文件,采用 arm 的汇编语言描述。 os_cpu_c 为系统管理代码的移植文件,采用 c 语言描述。 os_cpu_h 为系统通用量设置的移植文件,采用 c 语言描述。 其中 os_cpu_a.asm 在某些情况下不需要,但极其罕见。而且移植代码往往也会使 用部分汇编语言来提高移植代码的效率。移植需要在 os_cpu.h 包含几个类型的定义和 几个常数的定义;在 os_cpu_c 和 os_cpu_a.asm 中包含几个函数的定义和时钟节拍 中断服务程序的代码。每个应用都包含独特的 includes.h 文件。 信息学院 电信 0302 王波 2003373645 毕业设计 第 17 页 共 59 页 济南大学毕业设计用纸 核心代码(处理器相关) s_core.c核心代码 os_mbox.c消息队列 os_mem.c存储管理 os_mutex.c互斥管理 os_q.c消息管理 os_sem.c信号量 os_task.c任务管理 os_time.c时间管理 设置代码(应用相关) os_flag.c includes.h os_cpu_a.asm os_cpu.c os_cpu.h 应用程序 图 2-1 c/os-ii 的软件体系结构图 2.4.3 编写编写 os_cpu.h (1) 不依赖编译的数据类型不依赖编译的数据类型 c/os-ii 不使用 c 语言中的 short、int、long 等数据类型的定义,因为他们与微处理 器类型有关,隐含着不可移植性。用移植性强的整数数据类型代替,代码如下: typedef unsigned char boolean; /* 布尔变量 */ typedef unsigned char int8u; /* 无符号 8 位整型变量 */ typedef signed char int8s; /* 有符号 8 位整型变量 */ typedef unsigned short int16u; /* 无符号 16 位整型变量 */ typedef signed short int16s; /* 有符号 16 位整型变量 */ typedef unsigned int int32u; /* 无符号 32 位整型变量 */ typedef signed int int32s ; /* 有符号 32 位整型变量 */ typedef float fp32; /* 单精度浮点数(32 位长度)*/ typedef double fp64; /* 双精度浮点数(64 位长度)*/ typedef int32u os_stk; /* 堆栈是 32 位宽度 */ (2) 使用软件中断使用软件中断 swi 作为底层接口作为底层接口 带 t 变量的 arm7 处理器核具有两个指令集,用户任务可以使用良种处理器模式: 用户模式和系统模式,结合起来具有 4 种方式,各种方式对系统资源有不同的访问控制 权限。为了使底层接口函数与处理器状态无关,同时在任务调用相应的函数时不需要知 信息学院 电信 0302 王波 2003373645 毕业设计 第 18 页 共 59 页 济南大学毕业设计用纸 道函数位置,本移植使用软件中断指令 swi 作为底层接口,并使用不同的功能好区分不 同的函数。用软中断作为操作系统得底层接口,就需要在 c 语言中使用 swi 指令。在 ads 中,有个关键字_swi,用它声明一个不存在的函数。如果调用这个函数,就在调用这 个函数的地方插入一条 swi 指令,并且可以指定功能号。同时,这个函数也可以有参数 和返回值,其传递规则与一般函数一样。其代码程序如下: _swi(0x00) void os_task_sw(void); /* 任务级任务切换函数 */ _swi(0x01) void _osstarthighrdy(void); /* 运行优先级最高的任务 */ _swi(0x02) void os_enter_critical(void); /* 关中断 */ _swi(0x03) void os_exit_critical(void); /* 开中断 */ _swi(0x40) void *getosfunctionaddr(int index); /* 获取系统服务函数入口 */ _swi(0x41) void *getusrfunctionaddr(int index); /* 获取自定义服务函数入口 */ _swi(0x42) void osisrbegin(void); /* 中断开始处理 */ _swi(0x43) int osisrneedswap(void); /* 判断中断是否需要切换 */ _swi(0x80) void changetosysmode(void); /* 任务切换到系统模式 */ _swi(0x81) void changetousrmode(void); /* 任务切换到用户模式 */ _swi(0x82) void taskisarm(int8u prio); /* 任务代码是 arm 代码 */ _swi(0x83) void taskisthumb(int8u prio); /* 任务代码是 thumb */ (3) os_stk_growth3 c/os-ii 使用结构常量 os_stk_growth 中指定堆栈的生长方向: 置 os_stk_growth 为 0,表示堆栈从下往上生长; 置 os_stk_growth 为 1,表示堆栈从上往下生长; 虽然 arm 处理器核对以上两种方式均支持,但 ads 的 c 语言编译器仅支持一种方 式,即从上往下生长,并且必须是满递减堆栈,所以 os_stk_growth 的值为 1。代码 程序如下: #define os_stk_growth 1 /* 堆栈是从上往下长的 */ 2.4.4 编写编写 os_cpu_c.c 文件文件 (1) ostaskstkinit() os_stk *ostaskstkinit (void (*task)(void *pd), void *pdata, os_stk *ptos, int16u opt) os_stk *stk; 信息学院 电信 0302 王波 2003373645 毕业设计 第 19 页 共 59 页 济南大学毕业设计用纸 opt = opt; /* opt 没有使用。作用是避免编译器警告 */ stk = ptos; /* 获取堆栈指针 */ /* 建立任务环境,ads1.2 使用满递减堆栈 */ *stk = (os_stk) tas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论