嵌入式实时操作系统vxworks实验教程[1]
VxWorks使用说明书
VxWorks使用说明书1、概述VxWorks操作系统的集成环境叫Tornado。
T ornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。
Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(T arget Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。
它主要由以下几部分组成:VxWorks高性能的实时操作系统;* 应用编译工具;* 交互开发工具;下面对T ornado集成环境的各组件功能分别介绍:* Tornado开发环境Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。
* WindConfig:T ornado系统配置通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。
通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。
* WindSh:Tornado外壳WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。
Tornado外壳还能解释常规的工具命令语言TCL。
WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。
它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。
* 浏览器Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。
以ARM为例的Vxworks开发工具的使用操作流程
以ARM为例的Vxworks开发工具的使用操作流程一.认识Tornado II和VxworksVxWorks是一种嵌入式的实时操作系统,所谓嵌入式系统就是用户自己开发设计板子,板子上通常有一颗CPU,VxWorks支持32位的CPU,包括Intel公司的x86、Motorola公司的68k和PowerPC、MIPS、ARM、Intel公司的i960、Hitachi公司的SH。
我们设计的板子通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC 或工作站,我们称辅助我们软件开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。
宿主机上要有一个集成开发环境(IDE)来辅助我们的软件开发,这套集成开发环境可以运行在Windows95/NT或 UNIX下,包括交叉编译器(Cross Compiler)和交叉调试器(Cross Debugger),所谓交叉编译器就是在宿主机上编译生成可以在目标机上运行的代码IMAGE,交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调试。
我们称宿主机上的这套集成开发环境为Tornado,编译生成的目标机上的可执行代码IMAGE为VxWorks。
在系统安装的时候,集成调试环境和VxWorks的原材料(一些obj文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE内包含操作系统。
二.Tornado II IDE的主要组成Tornado II IDE的主要组成部分有:1.集成的源代码编辑器(可惜不支持汉字输入)。
2.工程管理工具。
3.集成的C和C++编译器和make工具。
4.浏览器,用于收集可视化的资源,监视目标系统。
5.CrossWind,图形化的增强型调试器。
6.WindSh,C语言命令外壳,用于控制目标机。
7.VxSim,集成的vxworks目标机仿真器。
8.WindView,集成的软件逻辑分析仪。
9.可配置的各种选项,可以改变归Tornado GUI的外观等。
嵌入式实时操作系统VXWORKS6.6集成环境使用指导建议课件
B、在Project Explorer窗口,选择Properties再选 Project References或者选择Project > Properties。然后选择 Project References,之后进行设置。
Workbench确认子工程和超级工程之间的关系是基于工程
类型和目标操作系统的。有些关系是不允许的。比如,
22
境使用指导建议
4.工程结构和编译系统
• 编译先从顶部 开始,再逐层 深入到内部的 枝叶最后回到 顶部,完成编 译
嵌入式实时操作系统VXWORKS6.6集成环
23
境使用指导建议
5.工程结构和共享子工程
一个实际的工程可以关联任意数量的逻辑工程 。产品的升级或者编译共享工程亦或组件的变化, 都会影响到关联共享工程的工程结构。
• 5.透视图(Perspectives)
• 6.视图(Views)
• 7.编辑器(Editors)
• 8.工程( Projects)
• 9.访问和查找workbench上下文关联的帮助 信息
嵌入式实时操作系统VXWORKS6.6集成环
10
境使用指导建议
四、理解Cross-Development(交叉开发)的概念
• 涉及的领域包括: • 过程控制(化工、食品加工); • 机器人(制造、自动操作控制); • 航空电子(飞行管理、GPS、喷气发动机控制); • 军事(武器管理、密码); • 数据处理(采集、信号处理); • 通信(税收机、数字电话); • 家电(微波炉、洗衣机、空调) • 计算机外围设备(打印机、Modem)等。
嵌入式实时操作系统VXWORKS6.6集成 环境使用指导建议
目录
• 第一部分 • 第二部分 • 第三部分 • 第四部分 • 第五部分
嵌入式实时操作系统VxWorks
4
• 任务有自己的上下文
• 包括CPU环境、系统资源等
• 任务由系统内核调度运行
• 上下文切换时,任务的上下文保存在任务 控制块(TCB)中
• 一个任务的上下文包括:
• 任务的执行点(程序计数器) • CPU寄存器和浮点计数器
University of Science and Technology of China
• 使用单地址空间 • 所有代码执行在单一、公共的地址空间内 • 因此地址空间不属于任务上下文
• 当选用VxVMI时,每个任务各自的地址空 间需要进行虚拟地址到物理地址的转换
University of Science and Technology of China
7
1.2 任务状态转换
• 任务状态反映任务当前在系统中所处的情 形
10
任务的状态转换图 任务创建时,处于挂起状态
ttaasskkSRuesspuemned(())
挂起
要使刚创建的任务就绪, 要ta激skt活Sasu该ksRp任eens务du(m) e()
taskSuspend() taskResume()/taskActivate()
阻塞
睡眠
就绪
semseTmaGkei(v)e/(m)/smgQsgRQeScenivde(()) 调 抢度 占
执行
taskDelay() 使延用时sp已aw到ning原语,可以直接 创建并激活一个任务
任务可以在任何状态下被删除
University of Science and Technology of China
11
任务状态队列
University of Science and Technology of China
29VxWorks移植实验
实验29 VxWorks移植实验一实验原理1 VxWorks内核的特点及BSP简介1.1 VxWorks内核的特点操作系统的实时性是一个相对的概念,一般指的是在相同的环境下、使用相同的输入,会在规定的时间内得到正确的响应。
一个实时操作系统内核需要满足许多特定的实时环境所提出的基本要求,这些内容包括:(1) 多任务由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。
多任务提供了一个较好的对真实世界的模拟,因为它允许对应于许多外部事件的多线程“同时”执行。
系统内核通过适当的策略分配CPU给这些任务来获得并发性。
(2) 抢占调度真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。
基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。
换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。
(3) 任务间的通讯与同步在一个实时系统中,可能有许多任务作为应用的一部分执行。
系统必须提供这些任务间的快速且功能强大的通信机制,内核也要提供同步机制,来有效地共享不可抢占的资源或临界资源。
(4) 任务与中断之间的通信尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先级和减少中断延时,我们通常希望在任务级处理相应的工作。
所以需要在任务级和中断级之间进行通信,完成事件的传递。
VxWorks就是一个基于抢占式的实时操作系统,已经被广泛的应用到许多行业,VxWorks 操作系统具有很多优点,比如:(1)高度的可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
(2)优秀的实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。
vxworks 程序开发实践
vxworks 程序开发实践VxWorks程序开发实践在现代软件开发领域中,实时操作系统(RTOS)被广泛应用于各种嵌入式系统中。
VxWorks是一个广受欢迎且强大的实时操作系统,它提供了许多功能和工具,可帮助开发人员构建高效可靠的嵌入式应用程序。
本文将深入探讨VxWorks程序开发的实践,详细介绍使用该系统进行开发的步骤和技巧。
第一步:项目准备在开始VxWorks程序开发之前,我们需要准备好所需的硬件和软件资源。
首先,我们需要选择适合项目需求的VxWorks版本。
VxWorks提供了许多不同版本以满足不同的嵌入式应用场景。
在选择版本时,我们应该考虑硬件平台的兼容性和所需要的功能。
其次,我们需要确保拥有适当的开发工具和文档。
VxWorks提供了VxWorks工作台和Tornado IDE等工具,这些工具能够提供强大的开发环境和调试支持。
此外,VxWorks还提供了详细的开发文档,包括用户指南、API参考和示例代码,以帮助开发人员更好地理解和应用系统。
第二步:项目设计在进行VxWorks程序开发之前,我们需要仔细设计我们的项目。
这包括确定项目的需求和功能,以及定义适当的软件架构和模块划分。
我们应该明确每个模块的职责和接口,以便实现高内聚和低耦合的设计。
此外,我们还需要考虑系统的实时性和可靠性需求,以确保我们的设计能够满足这些需求。
我们可以使用UML图或流程图等工具来辅助我们的设计过程。
第三步:开发环境设置在进行VxWorks程序开发之前,我们需要设置好正确的开发环境。
首先,我们需要安装和配置VxWorks工作台或Tornado IDE。
这些工具可以帮助我们创建和管理项目,以及进行代码编译和调试。
其次,我们需要配置正确的目标硬件和连接方式。
这包括选择适当的开发板和连接器,并设置好正确的连接参数。
最后,我们需要设置好合适的编译工具链和编译选项。
这些工具和选项可以确保我们的代码能够正确地编译和链接到目标系统。
西工大嵌入式实验指导书-VxWorks
《嵌入式计算机系统》VxWorks实验指导书编写:魏晓敏西北工业大学2013年11月实验一基于VxWorks的多任务设计第一部搭建VxWorks开发环境VxWorks 是专门为实时嵌入式系统设计开发的操作系统软件,为程序员提供了高效的实时任务调度、中断管理、实时的系统资源以及实时的任务间通信。
VxWorks是种功能强大而且复杂的操作系统,仅仅依靠人上编程调试,很难发挥它的功能并设计出可靠、高效的嵌入式系统,必须有与之相适应的开发工具。
Tornado就是为开发基于VxWorks 的应用系统而提供的集成开发环境,Tornado中包含的工具管理软件,可以将用户自己的代码与VxWorks 的核心系统有效地组合起束,从而轻松、可靠地完成嵌入式应用厅发。
Tornado是Windriver 公司开发的嵌入式软件开发环境。
Tornado开发环境的最新版本是2.2 ,它在延续了Tornado2.0 开发环境的基础上,增加了更多易于使用、性能优异的工具,因此在商业上取得了较大成功,获得了用户的好评。
Tornado开发环境是嵌入式实时领域里最新的开发调试环境,是编写嵌入式实时应用程序的完整的软件开发平台。
它给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环境a。
它包含3 个高度集成的部分:●运行在宿主机和目标机上的强有力的交叉开发工具和实用程序●运行在目标机上的高性能、可裁剪的实时操作系统VxWorks●连接宿主机和目标机的多种通讯方式,如以太网、串u线、ICE 或ROM 仿真器VxWorks的开发环境为Tornado,我们实验室用的是Tornado2.2。
包括Wind_River_tornado2.2.1_vxworks5.5.1 和Wind_River_vxworks5.5.1_BSP_drivers 两部分,需要分别安装,安装的顺序是先安装VxWorks5.5.1,再安装BSP包。
1.1Tornado安装步骤1.1.1 获取Tornado安装文件Tornado安装文件,包括 TORNADO2.2 和BSP的文件,可以从网上下载(/ShowFile.asp?FileID=62525)。
VxWorks操作指南
VxWorks操作指南项目\子项目名称:3G BTS平台分系统拟制部门:科技发展部拟制日期:2000.2.28目录1. 实时嵌入式操作系统V X W ORKS (3)2.V X W ORKS和T ORNADO (4)3.T ORNADO的配置 (5)3.1 主机的设置:Tornado Register (5)3.2 目标的设置 (6)4.T ORNADO开发工具的使用介绍 (7)4.1 Editor (7)4.2 Projects(Tornado 2.0版本特有) (7)4.3 Shell (8)4.4 Debugger (9)4.5 Browser (10)4.6 GNU工具 (10)4.7 Target Server (11)5.V X W ORKS的启动过程及相关例程 (12)5.1 VxWorks启动的一般原理 (12)5.2 MSDOS的启动过程 (13)6.V X W ORKS的多任务管理 (14)6.1多任务 (14)6.2任务状态转换 (14)6.3 wind任务的排序(scheduling)机制 (14)6.4 任务控制 (15)6.5 任务的删除和删除安全 (15)6.6 任务异常处理 (16)6.7 VxWorks系统任务 (16)7任务间通信(原语消息的传递) (16)7.1 概述 (16)7.2 互斥 (17)7.3 同步 (18)7.4 删除安全 (19)7.5 中断和任务间的通信 (19)8应用程序的加载 (19)1.实时嵌入式操作系统VxWorksVxWorks操作系统是一种应用广泛的嵌入式实时多任务操作系统。
其内核WIND具有强占式优先级排序的多任务处理能力,提供了任务间同步和通信的机制,支持中断处理、看门狗定时器和内存管理功能。
VxWorks的开发环境是Tornado,应用程序的开发语言是ANSI C和C++。
VxWorks的开发体系是代理-服务器(Agent-Server)结构体系,即驻留在主机(Host)的开发工具Tornado通过目标服务器(Target Server)指示目标上的目标代理(Target Agent)进行目标板上的操作并将结果返回给主机。
精Vxworks教程
06 VxWorks内存管 理编程实践
动态内存分配策略
分段内存管理
将内存划分为不同大小的段,根据需求动态分配和释 放内存段。
内存池管理
创建多个内存池,每个内存池管理特定大小的内存块 ,提高内存分配效率。
自定义内存分配器
根据应用需求,实现自定义的内存分配器,以满足特 定场景下的内存管理需求。
内存泄漏检测工具使用
优化内存使用技巧
减少全局变量使用
尽量避免使用全局变量,以减少内存占用和 提高程序可维护性。
合理使用指针和引用
在传递数据时,尽量使用指针和引用而非直 接传递数据,以降低内存消耗。
及时释放不再使用的内存
在程序运行过程中,及时释放不再使用的内 存资源,避免造成不必要的内存浪费。
使用内存对齐和压缩技术
合理利用内存对齐和压缩技术,提高内存使 用效率并降低内存碎片化的风险。
01
根据目标硬件平台和开发需求选择合适的编译器,如GNU
Compiler Collection (GCC) 或 Wind River Diab Compiler。
设置编译器选项
02
在Workbench中配置编译器的选项,如优化级别、警告级别、
语言标准等。
编译项目
03
使用选定的编译器对项目进行编译,生成可在目标硬件上运行
同步与互斥机制实现
互斥锁
条件变量
互斥锁是一种用于实现互斥访问共享 资源的同步机制。在VxWorks中,互 斥锁通过`mutexCreate()`函数创建, 并通过`mutexLock()`和 `mutexUnlock()`函数进行锁的获取 和释放。当一个任务获取了互斥锁时 ,其他试图获取该锁的任务将被阻塞 ,直到锁被释放。
嵌入式实时操作系统VxWorks
• 当ISR完成task1将恢复执行处理这个事件
University Science Technology China
19
of
and
of
注意
• 使用二进制信号量实现互斥与同步差别
• 信号量的初始化状态不同
• 互斥:资源一开始是可用的 • 同步:资源一开始是不可用的(事件还没有发生)
• 使用模式也不同
运行 请求同步:等待事件的发生
University
of
Science
and
Technology
of
China
18
• 在中断处理中释放信号量,引发 task1 要 由于eventInterruptSvcRout在 Init中被连接到 一个中断上,当中断发生的时候,这个函数 处理的事件 就会被运行
释放同步信号量
and
Technology
of
China
39
举例
University
of
Science
and
Technology
of
China
40
4.7 POSIX信号量
• POSIX定义了命名和未命名两种信号量
University
of
Science
and
Technology
of
China
41
4.9 信号量在多任务中的应用
• semTake隐含使用taskSafe • semGive隐含使用taskUnsafe
University
of
Science
and
Technology
of
China
35
递归资源访问
• 互斥信号量能够被递归的获取
实时嵌入式操作系统VxWorks设备驱动程序的设计
A sr c: ne b d e a t eh rw r n otaess m ee p e ttekyi tepeaai f i l ie t btat I m eddr li a aeadsf r t sdvl m n,h e rp r o o g ye c n e -m d w ye o sh tn h h f i
备 驱 动程 序 开 发 者 具 有 参 考 价值 , 过 本 文 可 以 方便 的 进 行 E D 驱 动 的 配 置 和 使 用 。 通 N
关 键 词 : 时操 作 系统 ; 级 支持 包 : 备 驱 动程 序 ; N 网 口驱 动 实 板 设 E D 中图 分 类 号 : l . 1 62 文 献 标识 码 : A 文 章 编 号 :17 — 2 6 2 1 )5 o 3 - 4 6 4 6 3 (0 1 0 _ lo 0
第1 9卷 第 5期
Vo 9 L1 No5 .
电子 设 计 工 程
Elc r n c De i n En i e rn e to i sg g n e i g
2 1 年 3月 01
Ma . 01l t2
实时嵌入 式操作 系统 V W0 k 设备驱动程 序的设计 x rs
动 程 序 是 设 备 驱 动 序 中较 为 复 杂 的一 类 。 首 先 从 整 体 上 分 析 了 V Wok 操 作 系统 的特 点 与 结 构 . 然 后 介 绍 了 x rs
V Wok x r s中设 备 驱 动 程 序 的 功 能 、 构 和 开发 方 法 . 给 出 了 E D 网 1 驱 动 程 序 的设 计 实例 。该 文 对 V Wok 设 结 并 N : 2 x rS
ARM嵌入式VxWorks实践教程课程设计
ARM嵌入式VxWorks实践教程课程设计课程概述本课程旨在介绍ARM嵌入式VxWorks操作系统的使用和实践。
VxWorks是实时操作系统(RTOS)的代表,被广泛应用于航空、能源、医疗等行业。
本课程将通过理论和实践相结合的方式,让学生了解VxWorks的基本原理和应用方法,并且亲身体验VxWorks在ARM嵌入式系统上的运行。
课程内容本课程分为理论和实践两个部分。
理论部分1.VxWorks概述:介绍VxWorks操作系统的发展历程、结构、特点和应用范围。
2.VxWorks基本组成:介绍VxWorks内核、文件系统、网络协议栈等基本组成部分的作用和特点。
3.VxWorks彩票调度算法:介绍VxWorks的彩票调度算法,让学生了解VxWorks任务调度的原理和方法。
4.VxWorks应用开发:介绍如何使用VxWorks进行应用开发,包括任务创建、消息队列、信号量、互斥量等基本应用方式。
实践部分1.环境配置:学生需要在Linux操作系统上安装交叉编译工具链和VxWorks仿真器,配置好开发环境。
2.简单例子:学生编写一个简单的VxWorks应用程序,能够在仿真器上运行。
3.TCP/IP通信:学生编写一个TCP/IP通信的应用程序,通过网络协议栈实现两台开发板之间的通信。
4.多任务调度:学生编写一个多任务调度的应用程序,演示VxWorks彩票调度算法的应用。
5.实时控制:学生通过引脚控制板上的LED灯,演示VxWorks实时控制能力。
实验设备1.ARM开发板:使用STM32F407开发板,搭载ARM Cortex-M4内核,提供了丰富的外设接口和扩展板槽,适合实时控制和通信应用。
2.仿真器:使用Wind River提供的VxSim仿真器,能够在Linux平台上仿真VxWorks操作系统和应用程序。
3.其他外设:必要的OLED屏幕、按键和LED灯等外设。
实验流程1.学习理论部分,了解VxWorks操作系统的基本原理和应用方法。
VxWorks开发教程
错误定位与排查方法
介绍针对不同类型的错误,如何采用有效的定位与排 查方法,如查看日志文件、使用调试器等。
问题解决经验分享
分享在解决VxWorks开发过程中遇到问题的 经验和技巧,帮助开发人员快速解决问题并避 免类似问题的再次出现。
THANK YOU
感谢聆听
消息队列是一种进程间通信机制,允许任务 之间发送和接收消息。
管道
管道是一种半双工的进程间通信机制,允许 任务之间以流的方式传输数据。
共享内存
共享内存允许多个任务访问同一块内存空间, 需要进行同步以避免数据冲突。
04
VxWorks驱动程序开发
设备驱动模型及框架介绍
80%
设备驱动模型
VxWorks采用层次化的设备驱动 模型,包括设备驱动管理层、设备 驱动服务层和硬件抽象层。
VxWorks开发教程
目
CONTENCT
录
• VxWorks概述 • VxWorks开发环境搭建 • VxWorks内核机制解析 • VxWorks驱动程序开发 • VxWorks网络编程技术探讨 • VxWorks图形界面设计实践 • VxWorks调试与优化技巧分享
01
VxWorks概述
VxWorks定义与特点
02
优化算法选择
03
系统资源调优
探讨针对不同性能问题的优化算 法选择,包括时间复杂度优化、 空间复杂度优化等。
提供系统资源调优的建议,如合 理分配内存、优化任务调度等, 以提高程序运行效率。
常见问题排查思路总结
常见错误类型分析
总结在VxWorks开发过程中常见的错误类型, 如编译错误、链接错误、运行时错误等,并分 析其产生原因。
中断优先级
VxWorks嵌入式操作系统
VxWorks Kernel
通信、同步和互斥机制(信号量)
VxWorks信号量提供最快速的任务间通信机制,它主 要用于解决任务间的互斥和同步。针对不同类型的问 题,有以下三种信号量:
二进制信号量
使用最快捷、最广泛,主要
用于同步或互斥;
互斥信号量 主要用于优先级继承、安全删除和 回溯;
计数器 资源分配
Wind 消息队列管理: msgQCreate() msgQDelete() msgQSend() msgQReceive()
创建(产生并激活)消息队列 中止并自由信号量 向消息队列发送消息 从消息队列接收消息
VxWorks Kernel
通信、同步和互斥机制(管道)
管道是用VxWorks的I/O系统提供一种灵活的消息传 送机制,它是受驱动器pipeDrv(VxWorks所提供) 管理的虚拟I/O设备
策略,同时它也提供了轮转调度法
VxWorks Kernel
任务管理(优先级反转)
优先级
T1:获取资源R,阻塞
T2:抢占T3
T3:获取资源R
T3:执行
T1:获得资源R,执行
时间
T3:释放R
•客观上造成优先级低的进程T2抢占优先级高的进程T1 •Vxworks解决方案:
优先级继承,在T1阻塞时,T3继承T1的优先级
将C函数和中断向量联结 得到当前中断套叠深度
设置程序中断级别 使中断禁止 开中断 设置异常向量 得到异常向量
VxWorks Kernel
时钟管理 时钟管理提供以下功能:
维护系统日历时钟;
在任务等待消息包、信号量、事件或内存 段时的超时处理;
以一定的时间间隔或在特定的时间唤醒或 发送告警到一个任务。
vxworks命令教程
memShow
显示系统内存使用情况,包括内存分区、空闲内存等信息。
taskShow
显示当前系统中所有任务的状态信息,如任务名、优先级、状态等。
semShow
显示系统中所有信号量的状态信息,如信号量名、计数值等。
系统资源管理和优化
01
02
03
memPartCreate memPartDelete taskSpawn
等。
高级命令探讨
深入探讨一些高级命令和特性,如 系统调试、性能分析等。
命令使用示例
通过具体示例演示如何在实际开发 中使用这些命令。
注意事项和最佳实践
提供一些使用命令行接口时的注意 事项和最佳实践,以帮助开发者避 免常见错误并提高开发效率。
02
VxWorks命令基础
命令格式和约定
01
命令格式
VxWorks命令通常由命令名、 参数和选项组成,格式为“命令
使用`read()`函数从已打开的文件 中读取数据,需要指定缓冲区及 其大小。
使用`write()`函数向已打开的文 件中写入数据,同样需要指定缓 冲区及其大小。
使用`lseek()`函数可以移动文件 指针到指定位置,以便进行随机 访问。
文件属性和权限设置
获取文件属性
使用`stat()`函数获取文件的属性信息, 如文件大小、创建时间等。
执行最近的包含特定字符串的命令。
自定义命令和脚本编写
alias
创建命令别名,例如`alias ll='ls -l'`。
function
定义函数,可以包含一系列命令,例 如`function myfunc { echo "Hello, world!"; }`。
ARM嵌入式VxWorks实践教程介绍
ARM嵌入式VxWorks实践教程介绍.txt28生活是一位睿智的长者,生活是一位博学的老师,它常常春风化雨,润物无声地为我们指点迷津,给我们人生的启迪。
不要吝惜自己的爱,敞开自己的胸怀,多多给予,你会发现,你也已经沐浴在了爱河里。
ARM嵌入式VxWorks实践教程介绍目录第1章嵌入式系统概述1.1 嵌入式系统——后PC时代的主宰1.2 嵌入式系统的发展历程1.3 嵌入式系统的一些基本概念1.4 嵌入式操作系统1.5 嵌入式系统的应用领域1.6 嵌入式系统的未来发展趋势第2章 ARM体系结构2.1 ARM微处理器的应用领域及特点2.1.1 ARM 微处理器的应用领域2.1.2 ARM微处理器的特点2.2 处理器模式2.3 寄存器组织2.3.1 ARM状态下的寄存器组织2.3.2 Thumb状态下的寄存器组织2.3.3 程序状态寄存器2.4 异常2.4.1 ARM 体系结构所支持的异常类型2.4.2 对异常的响应2.4.3 从异常返回2.4.4 各类异常的具体描述2.4.5 异常向量第3章 Tornado II集成开发环境的建立与使用3.1 Tornado II集成开发环境简介3.2 Tornado II集成开发环境安装3.3 使用Tornado II创建新的工程3.3.1 新建工程3.3.2 工程管理3.4 Tornado II的调试工具3.4.1 集成仿真工具3.4.2 目标机服务器3.4.3 调试命令行解释器3.4.4 调试器3.4.5 目标机浏览器3.4.6 软件逻辑分析器第4章 VxWorks BSP的移植4.1 VxWorks内核的特点及BSP简介4.1.1 VxWorks内核的特点4.1.2 VxWorks的主要功能和结构4.1.3 VxWorks BSP的简介4.1.4 VxWorks BSP的文件组织4.2 VxWorks的引导过程4.3 VxWorks BSP的移植4.3.1 Makefile4.3.2 内核配置4.3.3 带ROM启动功能内核前期初始化4.3.4 定时器处理4.3.5 中断处理4.4 组件管理4.5 BSP的调试第5章 VxWorks驱动程序的编写5.1 设备驱动分类及特点5.2 字符设备驱动5.2.1 字符设备驱动程序5.2.2 键盘驱动程序编写5.3 块设备驱动5.3.1 块设备驱动程序5.3.2 RAMDISK驱动程序编写5.4 串口设备驱动5.4.1 串口设备驱动程序5.4.2 ttyDrv的层次结构5.4.3 S3C2410串口驱动的编写5.5 网络设备驱动5.5.1 MUX网络设备驱动程序5.5.2 RTL8019网络芯片简介5.5.3 网络驱动程序编写5.6 文件系统5.6.1 TSFS5.6.2 dosFS5.6.3 TrueFFS5.7 驱动程序中的数据一致性第6章 VxWorks应用程序的编写6.1 VxWorks应用程序调试环境的建立6.2 任务管理6.2.1 任务6.2.2 任务调度6.2.3 任务操纵6.2.4 共享代码和可重入代码6.2.5 系统任务6.2.6 注意事项6.3 任务通信6.3.1 共享存储区6.3.2 互斥6.3.3 信号量6.3.4 消息队列6.3.5 管道6.4 看门狗定时器管理6.5 中断管理6.6 网络通信6.6.1 网络协议6.6.2 套接字的使用6.6.3 网络通信程序及说明6.7 异常捕捉和错误处理附录 ARM 微处理器的指令系统参考文献315。
ARM嵌入式VxWorks实践教程
嵌入式实时操作系统VxWorks
目录
• VxWorks操作系统概述 • VxWorks系统核心功能 • VxWorks开发环境与工具 • VxWorks系统设计与实践
目录
• VxWorks系统案例分析 • VxWorks与其他实时操作系统的比较
01
VxWorks操作系统概述
定义与特点
定义
VxWorks是一种高性能、可扩展的实 时操作系统(RTOS),专为嵌入式系 统设计。
资源占用
Linux通常需要更多的内存和存储资源,不太适合资源有限 的嵌入式系统。VxWorks则更为紧凑。
开放性
Linux是开源的,拥有庞大的社区支持和丰富的软件资源。 VxWorks的源代码不公开。
VxWorks与QNX的比较
实时性
VxWorks和QNX都具备出色 的实时性,能够满足严苛的 实时需求。两者在微秒级别 内都能快速进行任务调度和
内存分区管理
VxWorks将内存划分为多个分区,每个任务占用一个 独立的内存分区,避免内存冲突。
内存保护机制
通过内存保护机制,确保每个任务的代码和数据不会 互相干扰。
动态内存分配
提供动态内存分配函数,允许任务在运行时申请和释 放内存。
系统优化与性能测试
代码优化
通过优化任务代码,降 低系统开销,提高实时 性。
中断处理优化
优化中断处理程序,减 少中断延迟,提高系统 响应速度。
性能测试与评估
通过实际测试和评估, 验证系统性能是否满足 实时性要求。
05
VxWorks系统案例分析
案例一:无人机飞控系统
无人机飞控系统需要实时响应、高可 靠性和可扩展性,以满足飞行控制和 导航的需求。
嵌入式实时操作系统VxWorks入门_开发环境构建
嵌入式实时操作系统VxWorks入门――开发环境构建VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
VxWorks原先对中国区禁止销售,自解禁以来,在我们的军事、通信、工业控制等领域得到了非常广泛的应用。
VxWorks 的实时性体现在能于限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。
因此,实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
本文将对这个操作系统进行一个入门级的、全面的介绍。
为力求展示其全貌,全文共分五章:(1)搭建VxWorks嵌入式开发环境;(2)简要介绍VxWorks的基本组成,内核的基本结构;(3)概述VxWorks板级支持包(BSP)的概念及VxWorks的启动过程;(4)介绍VxWorks设备驱动的架构及编写方法;(5)指明VxWorks应用开发的思路,任务调度及任务同步、中断与任务的同步机制。
以上各章中将贯穿着许多实例,由于本文定位于入门级教程,所以文中的实例都将十分简单。
下面我们进入第一章内容的讲解。
如图1,嵌入式系统的调试方法一般为通过PC(宿主机)上的集成开发环境交叉编译针对特定电路板(目标机)的程序,然后将程序通过目标板的JTAG、串口或网口等途径下载到目标板上运行。
因此,为了构造一个嵌入式系统的学习环境,拥有一块包含CPU、存储器及I/O电路(构造计算机系统)的目标电路板往往是必要的。
虽然许多集成开发环境附带模拟软件,但仅限于指令集的模拟,均无法模拟物理的目标机硬件平台,因而在其上只能进行应用程序的象征性模拟开发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
㋏㒳VxWorks偠 Laboratory Tutorial for Embedded Real ˉtime Operating System VxWorks⥟䷀ 㢍 㓪䞡 䗮 䰶2003 10㋏㒳VxWorks 偠 Ⳃ1 ㋏㒳ὖ䗄 (1)1.1 ㋏㒳 (1)1.2 ㋏㒳 (7)2 ⧚ MPC860 (16)3 ㋏㒳VxWorks 䲚 ⦃ Tornado (25)3.1 ㋏㒳VxWorks (25)3.2 Tornado䲚 ⦃ (43)4 VxWorksⱘBootRom (48)5 偠 (55)5.1 偠ϔǃTornadoⱘՓ⫼ (55)5.2 偠Ѡǃ ㋏㒳ὖ ⱘ ゟ (74)5.3 偠ϝǃ ӏ ⱘ㓪 (78)5.4 偠 ǃ䆒 ӊㅵ⧚ (101)5.5 偠Ѩǃ ㋏㒳䕃ӊⱘѸ 㓪䆥 (110)5.6 偠 ǃ ㋏㒳䕃ӊⱘѸ 䇗䆩 (116)䰘 A hwa-xpc860 偠 (120)1 ㋏㒳ὖ䗄㋏㒳䅵ㅫ 催䗳 ⱘҞ ˈ䅵ㅫ 䅵ㅫ 䞣 ⫼ Ӏⱘ ⫳⌏ЁDŽ⦄ҷⱘ䅵ㅫ 䍙 䅵ㅫ ⱘὖ ˈ ⊯ ⫼ⱘ 䅵ㅫ (Embebdded computer) Ёϔ⾡DŽ 䅵ㅫ 㗙 ㋏㒳ˈ⑤Ѣ20Ϫ㑾60 ҷˈ ϔ⾡ϡ㹿⫼ 㾝 ⱘϧ⫼䅵ㅫ DŽ1.1.1 ㋏㒳ⱘὖ㋏㒳ˈ 䲒㒭 ⹂ Нˈ ⏅㮣Ѣ Ϯ㋏㒳ǃ℺ ㋏㒳 ϔѯ ⬉Ҿ㸼䆒 ǃ⍜䌍⬉ ㉏ѻ 䚼ˈ ϔ⾡ ⾡⡍ 㛑ⱘ䅵ㅫ ㋏㒳ˈ 䕃⹀ӊⱘ㋻ 㒧 ԧDŽ㉏ԐϢBIOSⱘ DŽ 䕃ӊҷⷕ ˈ催 㞾 ˈ 䗳 ㄝ⡍⚍DŽ⡍ 䗖 Ѣ㽕∖ ⱘ ӏ ⱘ ⫼ԧ㋏DŽ䖭ѯϧ⫼䅵ㅫ ㋏㒳䎇ҹ 䅵ㅫ Ў Ḍ ˈ 㒩 ⫼㋏㒳ⱘ 㛑ǃ 䴴 ǃ ǃԧ⿃ǃ 㗫ㄝϹḐ㽕∖ 䆒䅵ⱘDŽ ϔ㠀⬅ ⧚ ǃ ⹀ӊ䆒 ǃ ㋏㒳ҹ ⡍ ⱘ ⫼ ㄝ Ͼ䚼 㒘 ˈ⫼Ѣ ⦄ Ҫ䆒 ⱘ (control)ǃⲥ㾚Mointer) ㅵ⧚(Managemet)ㄝ 㛑DŽ1.1.2 ⧚㋏㒳ⱘ⹀ӊḌ ⧚ DŽ1.1.2.1 ⧚ ⱘ⡍⧚ ϔ㠀 ҹϟ4Ͼ⡍ ˖1˅ ӏ ⱘ 㛑 ˈ㛑 ӏ Ϩ 䕗ⷁⱘЁ 䯈ˈҢ㗠Փ 䚼ⱘҷⷕ Ḍⱘ 㸠 䯈 Ԣ䰤 DŽ2˅ ⱘ 㛑DŽ䖭 ⬅Ѣ ㋏㒳ⱘ䕃ӊ㒧 ˈ㗠Ўњ䙓 䕃ӊ П䯈 ⦄ⱘѸ 䫭䇃ˈ䳔㽕䆒䅵 ⱘ 㛑ˈ Ѣ䕃ӊ䆞 DŽ3˅ ⱘ ⧚ 㒧 ˈҹ㛑䖙䗳 ⒵䎇 ⫼ 催 㛑 ⧚ DŽ4˅ ⧚ 乏 㗫 Ԣˈ ⫼Ѣ ⱘ 㒓 ⿏ ⱘ䅵ㅫ 䗮 䆒 Ё䴴⬉∴կ⬉ⱘ ㋏㒳 ℸˈ 䳔㽕 㗫 mW⫮㟇uW㑻DŽ1.1.2.2 ⧚ ㉏Ϣ⦄⢊㋏㒳ⱘḌ 䚼ӊ ⾡㉏ ⱘ ⧚ ˈⳂ ϡ 㒳䅵ˈ Ϫ⬠ ⧚ ⱘ ⾡ 䞣 㒣䍙䖛1000 ⾡ˈ⌕㸠ԧ㋏㒧 30 Ͼ㋏ ˈЁ8051ԧ㋏ⱘ DŽ⫳ѻ8051 ⠛ ⱘ ԧ 20 Ͼˈ 350 ⾡㸡⫳ѻ ˈҙPhilips 䖥100⾡DŽ⦄ Т↣Ͼ ԧ 䗴 䛑⫳ѻ ⧚ ˈ䍞 䍞 ⱘ 㞾 ⱘ ⧚ 䆒䅵䚼䮼DŽ ⧚ ⱘ ぎ䯈ϔ㠀Ң64KB 16ˉ32MBˈ ⧚䗳 Ң0.1MIPS 2000MIPSˈ ⫼ 㺙Ң8Ͼ 㛮 144Ͼ 㛮DŽḍ ⦄⢊ˈ 䅵ㅫ ҹ ϟ䴶 ㉏DŽ1ǃ ⧚ ˄Embedded Microprocessor Unit ˈEMPU˅⧚ ⱘ ⸔ 䗮⫼䅵ㅫ ЁⱘCPUDŽ ⫼Ёˈ ⧚ 㺙䜡 ϧ䮼䆒䅵ⱘ⬉䏃 Ϟˈ ⬭ ⫼ ⱘ↡ 㛑ˈ䖭ḋ ҹ ㋏㒳ԧ⿃ 㗫DŽЎњ⒵䎇 ⫼ⱘ⡍⅞㽕∖ˈ ⧚ 㱑✊ 㛑Ϟ ⧚ Ϟ ϔḋⱘˈԚ ⏽ ǃ ǃ 㗫ǃ 䴴 ǃ ㄝ 䴶 Ϯ 䅵ㅫ Ⳍ↨ˈ ⧚ ԧ⿃ ǃ䞡䞣䕏ǃ Ԣǃ 䴴 催ⱘӬ⚍ˈԚ ⬉䏃 Ϟ 乏 ROMǃRAM ǃ ⾡ 䆒ㄝ ӊˈҢ㗠䰡Ԣњ㋏㒳ⱘ 䴴 ˈ г䕗 DŽ ⧚ ǃ 㒓ǃ 䆒ㄝ 㺙 ϔ ⬉䏃 Ϟˈ⿄Ў 䅵ㅫ DŽ STDˉBUSǃPC104ㄝDŽ䖥 ˈ ǃ ⱘϔѯ њ㉏Ԑ“☿ Ⲧ” ⠛ ⱘ 䅵ㅫ ㋏ OEMѻ DŽ ⧚ Ⳃ Џ㽕 Am186/88ǃ386EXǃSCˉ400ǃPower PCǃ68000ǃMIPSǃARM㋏ ㄝDŽ2ǃ ˄Microcontroller UnitˈMCU˅⿄ ⠛ ˈ乒 Нˈ Ͼ䅵ㅫ ㋏㒳䲚 ϔ 㢃⠛ЁDŽ ϔ㠀ҹ ϔ⾡ ⧚ ḌЎḌ ˈ㢃⠛ 䚼䲚 ROM/EPROMǃRAMǃ 㒓ǃ 㒓䘏䕥ǃ /䅵 ǃWatchDogǃI/OǃІ㸠 ǃ㛝 䇗 䕧 ǃA/DǃD/AǃFlashRAMǃEEPROMㄝ ⾡ 㽕 㛑 䆒DŽЎ䗖 ϡ ⱘ ⫼䳔∖ˈϔ㠀ϔϾ㋏ ⱘ ⠛ ⾡㸡⫳ѻ ˈ↣⾡㸡⫳ѻ ⱘ ⧚ Ḍ䛑 ϔḋⱘˈϡ ⱘ 䆒ⱘ䜡㕂 㺙DŽ䖭ḋ ҹՓ ⠛ 䰤 ⫼䳔∖Ⳍ 䜡ˈ 㛑ϡ ϡ ˈҢ㗠 㗫 DŽ ⧚ Ⳍ↨ˈ ⱘ ⡍⚍ ⠛ ˈԧ⿃ ˈҢ㗠Փ 㗫 ϟ䰡ǃ 䴴 催DŽ Ⳃ ㋏㒳 ϮⱘЏ⌕DŽ ⱘ⠛Ϟ 䆒䌘⑤ϔ㠀↨䕗Є ˈ䗖 Ѣ ˈ ℸ⿄ DŽ Ⳃ ⱘ ⾡ 䞣 ˈ↨䕗 ҷ㸼 ⱘ䗮⫼㋏ 8051ǃP51XAǃMCSˉ251ǃMCSˉ96/196/296ǃC166/167ǃMC68HC05/11/12/16ǃ68300ㄝDŽ 䖬 䆌 䗮⫼㋏ ˖ USB ⱘMCU8XC930/931ǃC540ǃC541˗ I2CǃCANˉBusǃLCD ӫ ϧ⫼MCU ㋏ DŽⳂ MCU ㋏㒳㑺70ˁⱘ 乱DŽ⡍ ⊼ ⱘ 䖥 կX86 ⧚ ⱘ㨫 AMD ˈ Am186CC/CH/CUㄝ ⧚ ⿄ПЎMicrocontrollerˈMOTOROLA ҹPower PCЎ ⸔ⱘPPC505 PPC555Ѻ ⠛ 㸠 DŽTI Ѻ TMS320C2XXX㋏ DSP ЎMCU䖯㸠 DŽ3ǃ DSP ⧚ ˄Embedded Digital Signal ProcessorˈEDSP˅DSP ⧚ ㋏㒳㒧 Ҹ䖯㸠њ⡍⅞䆒䅵ˈՓ 䗖 Ѣ 㸠DSPㅫ⊩ˈ㓪䆥 ⥛䕗催ˈ Ҹ 㸠䗳 г䕗催DŽ Ⓒ⊶ǃFFTǃ䈅 ㄝ 䴶DSP ㅫ⊩ℷ 䞣䖯 乚 ˈDSP ⫼ℷҢ 䗮⫼ ⠛ Ёҹ 䗮 Ҹ ⦄DSP 㛑ˈ䖛⏵ 䞛⫼ DSP ⧚ DŽ DSP ⧚ ϸϾ ⑤ˈϔ DSP ⧚ 㒣䖛 ⠛ ǃEMC 䗴ǃ ⠛Ϟ 䆒 Ў DSP ⧚ ˈTIⱘTMS320C2000/C5000ㄝ Ѣℸ㣗⭈˗Ѡ 䗮⫼ ⠛ SOCЁ DSP ⧚ ˈ՟ IntelⱘMCSˉ296 SiemensⱘTriCoreDŽ DSP ⧚ ⱘ ϔϾ ㋴ ㋏㒳ⱘ 㛑 ˈ՟ ⾡ 㛑䘏䕥ⱘ⍜䌍㉏ѻ ˈ⫳⠽ 䆚 㒜ッˈ 㾷 ㅫ⊩ⱘ䬂ⲬˈADSL ǃ 䇁䷇ 㾷㋏㒳ˈ㰮 ⦄ ⼎ㄝDŽ䖭㉏ 㛑 ㅫ⊩ϔ㠀䛑 䖤ㅫ䞣䕗 ˈ⡍ 䞣䖤ㅫǃ 䩜㒓 ㄝ䕗 ˈ㗠䖭ѯℷ DSP ⧚ ⱘ䭓 DŽ DSP ⧚ ↨䕗 ҷ㸼 ⱘѻ Texas InstrumentsⱘTMS320㋏ MotorolaⱘDSP56000㋏ DŽTMS320㋏ ⧚ ⫼Ѣ ⱘC2000㋏ ˈ⿏ 䗮 ⱘC5000㋏ ˈҹ 㛑 催ⱘC6000 C8000㋏ DŽDSP56000Ⳃ 㒣 ЎDSP56000ˈDSP56100 DSP56300ㄝ Ͼϡ ㋏ ⱘ ⧚ DŽ PHILIPS Ҟ г њ Ѣ 䞡㕂㒧 ǃԢ ǃԢ 㗫 Ϟ 䗴ⱘR.E.A.L.DSP ⧚ ˈ⡍⚍ Harvard㒧 Ь/㌃ ˈ ⫼Ⳃ 䞣⍜䌍㉏ѻ DŽ4ǃ ⠛Ϟ㋏㒳˄System On Chip˅䱣ⴔEDIⱘ VLSI䆒䅵ⱘ ˈ ԧ 㡎ⱘ䖙䗳 ˈ ϔϾ⸙⠛Ϟ ⦄ϔϾ Ў ⱘ㋏㒳ⱘ ҷ Јˈ䖭 System On Chip˄SOC˅DŽ ⾡䗮⫼ ⧚ Ḍ ЎSOC䆒䅵 ⱘ ˈ 䆌 ㋏㒳 䆒ϔḋˈ ЎVLSI䆒䅵Ёϔ⾡ ⱘ ӊˈ⫼ ⱘVHDLㄝ乘㿔 䗄ˈ ӊ ЁDŽ⫼ 䳔㽕 Н Ͼ ⫼㋏㒳ˈӓⳳ䗮䖛 ҹ 䆒䅵 Ѹ㒭 ԧ ḋ DŽ䖭ḋ䰸Ͼ ⊩䲚 ⱘ ӊҹ ˈ Ͼ ㋏㒳 䚼 䲚 ϔ 㢃⠛Ё ˈ ⫼㋏㒳⬉䏃 ㅔ⋕ˈ Ѣ ԧ⿃ 㗫ǃ 催 䴴 䴲 DŽSOC ҹ Ў䗮⫼ ϧ⫼ϸ㉏DŽ䗮⫼㋏ SiemensⱘTriCoreˈMotorolaⱘMˉCoreˈ ѯARM㋏ ӊˈ Echelon Motorola 㘨 ⷨ ⱘNeuron㢃⠛ㄝDŽϧ⫼SOCϔ㠀ϧ⫼Ѣ Ͼ ㉏㋏㒳ЁˈϡЎϔ㠀⫼ ⶹDŽϔϾ ҷ㸼 ⱘѻ PhilipsⱘSmart XAˈ XA ⠛ Ḍ 䍙䖛2048ԡ RSAㅫ⊩ⱘCCU ϔ ⸙⠛Ϟˈ ϔϾ 䕑JAVAC䇁㿔ⱘϧ⫼ⱘSOCˈ ⫼Ѣ ӫѦ㘨㔥 Internet 䴶DŽ1.1.3 ㋏㒳 㾕ⱘ䕃ӊ㒧㋏㒳 㾕ⱘ䕃ӊ㒧(1) ⦃䕂䆶㋏㒳:(Polling Loop)ㅔ ⱘ䕃ӊ㒧 ⦃䕂䆶, ձẔ ㋏㒳ⱘ↣ϔϾ䕧 ӊˈϔ ӊ ゟ 䖯㸠Ⳍ ⱘ ⧚ 䗮 ⱘ䕃ӊ㒧 ˖initialize()while(true) { checkfor imputif (condition_1) action_1();if (condition_2) action_2(); do some work......if (condition_n) acition_n();1-1 ⦃䕂䆶㋏㒳Ӭ⚍˖¾ Ѣㅔ ⱘ㋏㒳㗠㿔 Ѣ㓪 ⧚㾷¾≵ Ё ⱘ 䖤㸠㡃 ϡӮ ⦄䱣 ⱘ䯂乬㔎⚍˖¾ 䰤ⱘ ⫼乚 ⬅Ѣϡ ⹂¾ Ѣ 䞣ⱘI/O ⱘ ⫼ϡ ⦄¾ ⱘ ϡ Ѣ䇗䆩ℸ 䗖 Ѣ 䗳 䴲 䗳ⱘㅔ ㋏㒳˄2˅ ㋏㒳(Foreground/Background) Ё 偅 ㋏㒳ϔϾ ⦃䕂䆶㋏㒳ϔⳈ 䖤㸠, ⬅ϔѯЁ ⧚䖛㒘 ⱘ ϔ џӊ( 䚼џӊ) ⫳ 䍋Ё ,Ё 䖤㸠䖯㸠 ⧚, ⧚ (䗮 ⿄Џ )DŽ䖭⾡㋏㒳ⱘϔϾ ッ ϔϾㅔ ⱘ ⦃ϡ ӏԩџ 䛑 ⬅Ё ⧚ ⱘԚ Ё ⧚䙷ѯ䳔㽕 䗳 ⱘџӊ Ϩ I/O䆒 ⱘ ⱘ㓧 Ё, , ⱘ ⬅ 䖭ѯ 䖯㸠 ⧚ ⼎ ㄝ䖭⾡㋏㒳ⱘ䕃ӊ䖤㸠ⱘ 1-2 ⼎1-2 ㋏㒳䖭⾡㋏㒳䳔㽕㗗㰥ⱘ Ё ⱘ⦄ Ё Ё ⧚䖛ϢЏ ⱘ 䇗( ѿ䌘⑤)䯂乬㋏㒳ⱘ 㛑Џ㽕⬅Ё 䖳 䯈(Interrupt latency time), 䯈(response time) 䯈(recovery time) ⬏ 1-3 ⼎Ё 䖳 䯈: ҢЁ ⫳ ㋏㒳㦋ⶹЁ , Ϩ 㸠Ё 䳔㽕ⱘ ⒲ 䯈DŽ1-3 ㋏㒳ⱘЁ 䯈˄3˅ ӏ ㋏㒳(Multitasking Multi-thread Program Model-ㅔ⿄RTOS) ѢϔϾ ⱘ ㋏㒳 䇈, 䞛⫼Ё ⧚ ϔϾ Џ 䖭⾡䕃ӊ㒧 䲒ҹ ⱘ ⹂ⱘ 䴴ⱘ , ϔѯѦϡⳌ ⱘ䖛䳔㽕 ϔϾ䅵ㅫ Ё ⧚ , 䳔㽕䞛⫼ ӏ ㋏㒳DŽ1-4 ӏ ㋏㒳Џ㽕⡍⚍˖Ͼ乎 㸠ⱘ 㸠䖤㸠㾖Ϟⳟ ⱘ 䖤㸠↣Ͼ 䖤㸠 㞾 ⣀ゟⱘCPUϞ 䰙Ϟϡ ⱘ ѿ ϔϾCPU ⹀ӊ ℸ䳔㽕RTOS䖭ѯ ѿⱘ䆒 䖯㸠ㅵ⧚↣Ͼ 䛑㹿㓪 䰤 ⦃ⱘ ㄝ ⡍ ⱘ䕧 㸠Ⳍ ⱘӏ ㄝ䖭⾡ ㋏㒳 Ⳍ ㅔ ⱘⳌѦ ⱘЏ㽕Ӭ⚍˖ⱘ㋏㒳 㾷ЎⳌ ⣀ゟⱘ Ͼ㒓䖒 㗠 ПⱘⳂⱘҢ㗠䰡Ԣ㋏㒳ⱘ 䆕㋏㒳ⱘ㋏㒳ⱘ 催㋏㒳ⱘ 㓈㔎⚍˖䳔㽕䞛⫼ϔѯ ⱘ䕃ӊ䕃ӊ䆒䅵 ⊩䳔㽕 㛑㒓䯈ⱘ 䇗 ℹ 䗮 㛑䳔㽕 ↣ϔϾ ѿ䌘⑤Ѧ㟈㒓䯈ⱘゲѝ䳔㽕Փ⫼RTOSˈ㽕 ㋏㒳ⱘ 䫔ӏ ㋏㒳 䰙Ϟ ⬅ Ͼӏ ϾЁ ⧚䖛 ㋏㒳㒘ⱘⳌѦ䗮 ℹг䳔㽕 ㋏㒳ⱘRTOSⱘ䳔∖˖z䎇 ⱘ Ϟϟ ㋏㒳䇗⫼ㄝz ⹂ ⱘ 㛑zӏ 䇗 ѢӬ 㑻ⱘz ⱘЁ 䖳z Ԍ㓽 䜡㕂ⱘԧ㋏㒧z 䴴ӏ ㋏㒳ⱘ ⦄ 乏 ӏ ㋏㒳ⱘ ㋏㒳Џ㽕ӏ ǃӏ 䇗 ǃӏ 䯈䗮 ℹѦ ǃ 䩳ㅵ⧚ǃЁ ㅵ⧚DŽ1.2 ㋏㒳1.2.1 ㋏㒳 ㋏㒳㋏㒳 ⫼䕃ӊⱘ ⸔ DŽⳂ ⫼䖬 䕑 ⠛ ϞⳈ 䖤㸠ˈ≵ RTOS(Real-time Operating System˗ㅔ⿄RTOS)ˈԚҡ㽕 ϔϾЏ 䋳䋷䇗 Ͼӏ DŽRTOS ϔ↉ Ⳃ Ёⱘ ˈ㋏㒳 ԡ 佪 㸠ˈⳌ Ѣ⫼ ⱘЏ ˈ⫼ ⱘ ⫼ 䛑 ゟ RTOS ϞDŽϡҙ ℸˈRTOS䖬 ϔϾ ⱘ Ḍˈ CPU 䯈ǃЁ ǃI/Oǃ ㄝ䌘⑤ 㺙䍋 ˈ⬭㒭⫼ ϔϾ ⱘAPI˄System callˈ㋏㒳䇗⫼˅ˈ ḍ Ͼӏ ⱘӬ 㑻ˈ ⧚ ϡ ӏ П䯈 䜡CPU 䯈DŽRTOS 䩜 ϡ ⧚ 䆒䅵Ӭ 催 ⥛ ӏ ḌˈRTOS ҹ䴶 Ͼ㋏ ⱘ ⧚ MPUǃMCUǃDSPǃSOCㄝ կ㉏ ⱘAPI ˈ䖭 RTOS Ѣ䆒 ⣀ゟⱘ ⫼ ⸔DŽ ℸ ѢRTOSϞⱘC䇁㿔 ⱘ ⿏ỡ DŽ ϧ 乘⌟ˈӬ⾔ⱘRTOSϞ䎼 ⧚ ⱘ ⿏ỡ 䳔 1ˉ4% DŽ RTOS ⸔Ϟ ҹ㓪 ⾡⹀ӊ偅 ǃϧ ǃ㸠Ϯ ǃѻ 䗮⫼ ⱘ ⫼ ϔ䍋ˈ ҹЎѻ 䫔 ˈ 䖯㸠Ϯⶹ䆚ѻ Ѹ⌕ˈ ℸˈRTOS ϔϾ䕃ӊ DŽRTOSⱘ ˈ㾷 њ 䕃ӊ ⱘ䲒乬DŽ䱣ⴔ ㋏㒳Ё䕃ӊ↨䞡ϡ Ϟ ǃ ⫼ 䍞 䍞 ˈ Ҏ ǃ ⫼ ǃ ḷḜⱘ㒘㒛ㅵ⧚ ЎϔϾ ⱘ䇒乬DŽ RTOSⳌ Ѣ њϔ⾡ ⱘㅵ⧚ ˈ Ѣ ԡ Ҏ 䛑 ϔϾ 催DŽ ѢRTOS ⱘ 䕗催ⱘ ⿏ỡ ˈ ⦄90ˁҹϞⱘ䆒 ⣀ゟˈϔѯ ❳ⱘ䗮⫼ ҹЎϧ ѻ ⼒ӮDŽЁ 䅵ㅫ ϮϞ㨑 Ѣ㽓 ˈ ⧚ Ϟг ℸDŽԚ ㋏㒳䴶 ⫼ⱘ⡍⚍ њ ⧚ ⫼ ⱘѻ 㽕 Ͼ Ϯⱘ 䚼 ˈ㗠Ϩ ⧚ ԧ ⫼㒧 䖭⾡ⶹ䆚 ˈ 㛑⬅㊒䗮 ⫼㋏㒳ⱘ⫼ DŽ ℸЁ ㋏㒳 䴶 ⴔⳌ ⱘ ӮDŽЁ 㒣⬅10ϛԭ ⠛ ˈ Ё Ҏ䛑 䌘 䰤ⱘ ӊϟ䗮䖛 䏉ˈ㊒䗮њ ⠛ ˈ ⷨ њ㞾 ⱘѻ DŽԚ ⱘ Ⳍ↨ˈ ↉ ∈ Ⳍ 䕗Ԣˈ ϡ ˈ䞡 䕗 DŽ䖭ѯ䯂乬Џ㽕 ⬅Ѣ ⠛ Ё㔎У ǃ ㅵ⧚ˈ㔎 㸠Ϯ㘨 ˈ RTOS ㋏㒳䕃ӊ ㅵ⧚ ⱘ ˈ㋏㒳 ѻϮ䍄 Ѡ ϔϪ㑾ⶹ䆚㒣⌢ ҷⱘ 䞡㽕ⱘ㒣⌢ 䭓⚍Пϔˈ䖭 ϔϾϡ ⱘ Ϯˈ Ё ⱘ ѻϮ 䇈 ⒵њ 䘛 DŽ Ϯⱘ ⸔ ҹ ⫼ЎЁ ⱘ㢃⠛䆒䅵 䴶 ⫼ⱘ䕃ӊ DŽ ӏ ㋏㒳䖯 Ϯⱘ НˈϡѮѢ Ϟ Ẅ Ϯ䞛⫼ϝ㾚 ⱘ ˈ 䕃ӊⱘ 䗳ⶹ䆚 ϔϾ䞠DŽ1.2.2 ㋏㒳ⱘὖ ⡍⚍ⱘ Н 㾘 ⱘ 䰤 㛑 Ӵ䗦ℷ⹂ⱘ㒧 ˈ䖳 ⱘ㒧 䫭䇃DŽ ㋏㒳 䴲 “ 䗳”㋏㒳ˈ ㋏㒳 䰤 ⱘ 䯈ˈҢ㗠Փ㋏㒳 乘⌟ DŽ ㋏㒳 ҹ Ў“⹀ ㋏㒳” “䕃 ㋏㒳”DŽѠ㗙ⱘ Ѣ˖ 㗙 ϡ⒵䎇 䰤ǃ ϡ 䖛 ⱘ ϟ䛑Ӯ 㟈♒䲒 ⱘ ˄ 㟾ぎ㟾 ㋏㒳˅˗㗠 㗙 ϡ⒵䎇 䰤 ˈ㋏㒳 㛑䗔 ˈԚ ϡӮ 㟈♒䲒 ⱘ ˄ Ѹ ㋏㒳˅DŽ㋏㒳 ˈ㛑 ㋏㒳 ⱘ ㋏㒳DŽ ㋏㒳ⱘ佪㽕ӏ 䇗 ϔ ⫼ⱘ䌘⑤ ӏ ˈ ⴔⴐѢ 催䅵ㅫ ㋏㒳ⱘՓ⫼ ⥛ˈ 䞡㽕⡍⚍ 㽕䗮䖛ӏ 䇗 ⒵䎇 Ѣ䞡㽕џӊ 㾘 ⱘ 䯈 ℷ⹂ⱘ DŽӏ ㋏㒳Ϣ ӏ ㋏㒳 ⴔ ⱘ DŽ ԧⱘ䇈ˈ Ѣ ㋏㒳ˈ䕃ӊⱘ 㸠 䯈Ϟⱘ㽕∖ˈ ϡϹḐˈ 䯈Ϟⱘ 䇃 㗙 Ϟⱘ䫭䇃ˈϔ㠀ϡӮ䗴 ♒䲒 ⱘ DŽ㗠 Ѣ ㋏㒳ˈЏ㽕ӏ џӊ䖯㸠 ⱘ ⧚ˈ㱑✊џӊ 㛑 ⊩乘ⶹⱘ 䖒ˈԚ ㋏㒳 䋳㥋ϟˈг ℸ——㋏㒳 䯈 ⱘ䍙 ⴔ㟈 ⱘ 䋹DŽ ˈ ㋏㒳ⱘ䞡㽕⡍⚍ ㋏㒳ⱘ ⹂ ˈ ㋏㒳㛑 䖤㸠 ⱘ ㄝⱘ 㛑 ㊒⹂ⱘԄ䅵DŽ1.2.3 RTOSⱘ㒧 ⡍⚍RTOSЁˈϔ㠀䞛⫼ Ḍ˄Microkernel˅㒧 ˈ ㋏㒳Ё ǃ ㅔ ⱘ 㛑˄ӏ ⱘㅵ⧚Ϣ䇗 ˅㕂Ѣ Ḍ DŽ㗠 䗝 ⱘ 㛑Ў⫼ ⱘ 偏⬭ Ḍ ˈ⿄ПЎ㒘ӊ˄Components˅DŽ՟ PSOS ⬅PSOS+ Ḍ PROBE+ǃPNA+ǃPHILE+ㄝ㒘ӊ㒘 DŽ⦄ ⱘ ㋏㒳䰸Ӵ㒳 ㋏㒳ⱘ 㛑 ˈ䖬 㔥㒰 ⧚ 㛑 DŽRTOSⱘ Ḍ ㋏㒳 㽕ⱘ 㛑 њ ㋏㒳 䚼ˈ Ḍ 䆒ϡ 䆒 ϡ 䆒⫼ Ϟ ⬅ 㒓ҹ ҔМḋⱘ 㒓ˈгϡ 䆒 ⱘ ҹ ԩ ԡˈгϡ 䆒I/O I/Oˈ 䆒ⱘㅵ⧚ 㑻 ˄BSP˅ ⱘDŽRTOSⱘ䖭⾡ ǃ ǃ 㺕 ˈḍ 䳔㽕 䳔 㒧 ˈՓ ㋏㒳Ḍ ㊒ ǃ催 ǃ 㸠 њ䆌 乱 䫔ˈ 催њ 䗳 ˈ Ϩ ḌՓ ㋏㒳 䇗 ˈՓ 催Ӭ 㑻ӏ Ӭ 㸠ˈՓ ㋻ џӊӬ ⧚ˈ Ϩ Ͼ ⫼ ⫼ ˈ㡖ⳕњFLASH DRAM ぎ䯈ˈ䰡Ԣњ DŽ䗮 ㋏㒳 ҹϟ Ͼ䴲 ⱘ⡍ ˖ˈ ㋏㒳 乏 䚼џӊ 䗳 ˈϨ ⱘ 䯈 ⹂ ⱘˈϡㅵ 䚼џӊ 䱣 џӊDŽ ЎRTOS ⫼Ѣ 㽕∖ 催ⱘ ㋏㒳DŽϔ㠀 䇈 RTOSⱘ㋏㒳 䯈Ў ⾦DŽRTOSҹӏ 䯈˄Ϟϟ 䯈˅ Ё 䖳 䯈 䗄RTOSⱘ 㛑DŽӏ 䯈 ⱘ 䖤㸠ӏ ⢊ 䆹ӏ Ёˈ 㽕䖤㸠ⱘӏ ⱘ⢊ Ң Ё ⱘ 䯈DŽЁ 䖳 䯈 ⱘ ҢЁ ⫳ ㋏㒳㦋ⶹЁ ˈ Ϩ 㸠Ё ՟˄ISR˅ⱘϔ 䇁 䳔ⱘ ⒲ 䯈DŽ䴴 ˈRTOS ⫼⦃ ⡍ ⱘ䳔㽕ˈ㽕∖ 催ⱘ 䴴 DŽ♉⌏ ˈ ЎRTOSⱘ ⫼乚 ˈRTOS 乏 ⱘ♉⌏ DŽ♉⌏ Џ㽕 RTOS 乏 㺕 ǃ 䜡㕂 ㄝ 䴶ҹ䗖 ⡍ ⱘ⹀ӊ⦃ 䕃ӊ⦃ DŽ1.2.4 ㋏㒳ⱘ ㅔ70 ҷ 80 ҷ ˈ䖬≵ ⫼ⱘϧ䮼 ˈ䗮 Џ ˄Host˅Ϟ ⫼∛㓪䇁㿔 ⱘ ⫼ҷⷕⱘ㓪䆥 䫒 ˈ䗮䖛І㸠㒓ϟ㺙 Ⳃ ˈⳂ Ϟϔ㠀㺙 ㅔ ⱘⲥ ˈ㋏㒳ⱘ䇗䆩ձ䴴ⲥ ˈ 䕙Пҹ䘏䕥 Ҿ LED ⼎ㄝ ↉ ⦄DŽ80 ҷ ⦄њҹOS-9 VRTXЎҷ㸼ⱘϔҷ ㋏㒳ˈ䖭ḋ 㗙 ҹ䲚Ё㊒ Ѣ ⫼ 䕃ӊ ˈ㗠ϡ 㑴㓴Ѣ㾷 䇗 ㄝ䯂乬˗ ⫼ ҹ䞛⫼催㑻䇁㿔㓪 ˗ⲥ ⱘ 㛑 ˈ ҹ⫼ 㾖 ㋏㒳Ё Ͼӏ П䯈ⱘⳌѦ⫼ˈԚ 䖭⾡∛㓪㑻䇗䆩 Ѣ㾷 Ͼ⫼催㑻䇁㿔㓪 ⱘӏ ⱘ 䱰ҡ✊ ˈ 㗙 ҹ䴴 ⬉䏃ӓⳳ ˄ICE˅ Ͼӏ 䖯㸠⑤ⷕ㑻 䫭ˈԚ Ѣ 䇗䆩 Ͼӏ ҡ✊ 㛑Ў DŽ80 ҷЁ ˈ ⦄њҹVxWorksЎҷ㸼ⱘѠҷ ㋏㒳ˈ ㋏㒳 䚼 կ ѢTCP/IP 䆂ⱘ㔥㒰 㛑˗ կ ⱘ⑤ⷕ㑻䇗䆩 ˗կ偏⬭Ⳃ ⱘShell ˈՓ ҹ䖯㸠 䗳 䆒䅵 䗳 DŽ䖯 90 ҷҹ ˈ ⦄ҹTornado/VxWorksЎҷ㸼ⱘϝҷ ㋏㒳DŽ Џ㽕⡍ ˖˄1˅ կ ⾡ ⧚ ԧ㋏ⱘ ⊯ ˗˄2˅ ⱘ ⦃ ˈ 偏⬭Џ ⱘShell ǃ ѢЏ ⱘⳂ ӓⳳ ˗˄3˅ ⱘ䕃ӊ ˈҹ 㦋 ⊯ⱘϝ 䕃ӊ ⱘ DŽⳂ ˈ ㋏㒳ℷ ҷ ˈ Џ㽕Ⳃ ˖ ⾡ ㋏㒳 կ ⱘ ⫼ ˄API˅ǃ偅 䕃ӊ ˗ Ң8ԡ 64ԡ ԧ㋏㒧 կ㒳ϔⱘ DŽ1.2.5䆘Ӌ ㋏㒳ⱘ 䬂⬅ѢRTOS ⫼Ёⱘ⡍⅞ ԡˈ RTOSⱘⷨおЁ 㛑 ⱘ㽕∖Ⳍ Ѣ 䗮 ㋏㒳 䇈 ↨䕗ϹḐˈЎ ㋏㒳ⷨおⱘϔϾ䞡㽕 ˈ Ϣϔ㠀 䗮 ӏ ㋏㒳˄ UNIX˄POSIX˅ǃWINDOWS LINUXㄝ˅ Ⳍ П ˄ 䛑㛑 կ ӏ ˅ˈг 䆌 ϡ П DŽ Ѣ 䗮 ӏ ㋏㒳ˈ Ⳃⱘ ⫼ ㅵ⧚䅵ㅫ 䌘⑤ˈ䗑∖㋏㒳ⱘ ⫼⥛˗㗠RTOS 䗑∖ⱘ ǃ 䴴 ⹂ ㄝDŽ䆘ӋϔϾ ㋏㒳ϔ㠀 ҹҢ䖯ㅵ⧚ǃӏ 䇗 ǃ ㅵ⧚ǃӏ 䗮 ǃ 䫔ǃӏ 䯈 Ё ⽕ℶ 䯈ㄝ䅵 㸵䞣 Ӭ DŽ ӏ 䇗 ㅫ⊩RTOSⱘ ӏ 㛑 Ϟ Ѣ ⱘӏ 䇗 ㅫ⊩DŽҢ䇗 ㄪ⬹Ϟ 䆆ˈ ЎӬ 㑻䇗 ㄪ⬹ 䯈⠛䕂䕀䇗 ㄪ⬹˗Ң䇗 Ϟ 䆆ˈ Ў ǃϡ 䗝 䇗 ˗Ң 䯈⠛ ⳟˈ Ў Ϣ 䯈⠛䕂䕀䇗 ϸ⾡ DŽϞϟ 䯈˄&RQWH[W 6ZLWFKLQJ 7LPH˅ӏ ㋏㒳ЁˈϞϟ ⱘ ⧚ ⱘ ⬅䖤㸠ӏ 䕀⿏ ϔϾ 㒾ӏ ⫳ⱘ DŽ 䖤㸠ӏ 䕀Ў 㒾ǃ 䍋 䰸 ˈ ϔϾ㹿䗝 ⱘ 㒾ӏ ⿄Ў ӏ DŽϞϟ 䖬 ⱘ⢊ ˈ 䙷Ͼӏ 䖤㸠ˈ 㽕䖤㸠ⱘ䙷Ͼӏ ⱘ⢊ DŽ Ϟϟ ձ䌪ѢⳌ ⧚ ⱘDŽ ℸˈϞϟ 䯈 RTOS 㛑ⱘϔϾ䞡㽕 DŽ⹂㋏㒳Ёˈ ϔ ⱘ ӊϟˈ㋏㒳䇗 䖤㸠ⱘ 䯈 ҹ乘⌟ⱘDŽԚ䖭 ϡ ⴔ ⱘ㋏㒳䇗⫼ 㸠ϔϾ 䭓 ⱘ 䯈ˈ㗠ϡㅵ㋏㒳ⱘ䋳䕑 ԩDŽ㋏㒳䇗⫼ⱘ 㸠 䯈 ⱘDŽㅵ⧚䗮 ㅵ⧚ Ўϸ⾡ ˖ DŽ䫔RTOSⱘ䆒䅵䖛Ёˈ 䫔 ϔϾ 䞡㽕ⱘ ˈ䖭 Ў Ϯ 乚 Ёⱘ ѯ ˄ Ϟϟԡ ㋏㒳ЁⱘϞϟԡ ˅ˈ⬅Ѣ Ѣ䰡Ԣ ⱘ㗗㰥ˈ ⱘ䜡㕂ϔ㠀䛑ϡ ˈ՟ 5000㋏ 5185 ˈ 䜡㕂ҙЎ256K SRAMˇ128K EPROMˈ㗠 䰤ⱘぎ䯈 ϡҙ㽕㺙䕑 ㋏㒳ˈ䖬㽕㺙䕑⫼ DŽ ℸˈ RTOSⱘ䆒䅵Ёˈ ⫼ ϔϾ 䞡㽕ⱘ DŽ䖭 RTOS䆒䅵Ϣ ㋏㒳䆒䅵ⱘ ⱘ ПϔDŽ Ё ⽕ℶ 䯈RTOS䖤㸠 Ḍ 㸠 ѯ㋏㒳䇗⫼ ˈ ϡӮ Ў 䚼Ё ⱘ 㗠Ё 㸠ⱘDŽ RTOS䞡 ⫼ 䚼Ё 䇋∖ˈ䖭ϔ䖛 䳔ⱘ 䯈 Ё ⽕ℶ 䯈DŽӏ 䯈⬅Ѣ ѯ ՓϔϾӏ 䗔 㸠 ˈRTOS ⱘ䖤㸠⦄ ǃ Ⳍ 䯳 ǃ ḍ ϔ ⱘ䇗 ㅫ⊩䞡 䗝 ϔϾӏ ՓП 䖤㸠ˈ䖭ϔ䖛 䳔 䯈⿄Ўӏ 䯈DŽϞ䗄 乍Ёˈ Ё ⽕ℶ 䯈 ӏ 䯈 䆘ӋϔϾRTOS 䞡㽕ⱘϸϾ DŽ1.2.6 ㋏㒳ⱘ䗝䗝 ㋏㒳 㽕㗗㰥ⱘ ㋴ ˈ Ӏ 䖭䞠ҙ Џ㽕 ⱘ䯂乬 ҹ䅼䆎DŽ䭓 ⊯ⱘ ⫼Ӯ ԩՓ⫼ϔϾ ㋏㒳 㛑 ❳㒗 ⫼ ⫼ˈ䳔㽕ϔϾⳌ 䭓ⱘ䖛ˈ 䯈 Ҏ Ϟⱘ 䌘 DŽ ℸϔ 䗝⫼њϔϾ ㋏㒳ˈ 㛑 ⫼Ѣ ⾡ ⧚ ㋏㒳 ⾡㾘ⱘ㋏㒳DŽг 㽕∖ 䗝ⱘ ㋏㒳 ⿏ỡ 㾘 Ԍ㓽 ˈ䖭ḋ 㛑䱣ⴔџϮⱘ ˈ䗖 ϡ ⱘ ⫼㽕∖ˈ䭓 Փ⫼ϟ DŽ⧚ ⱘ 䍞 䍞 ˈ 㛑䍞 䍞催ˈ Ѣϡ ㉏ ⱘ ⫼ˈ䆒䅵㗙 㛑㽕䗝⫼ϡ ㉏ ⱘ ⧚ ˈ 㗙 ϔ㉏ ϟ䗝⫼ ⱘ DŽЎњ㛑 䭓 Փ⫼ϔϾ ㋏㒳ˈ 㽕∖ ⱘ ⧚ ⱘ㉏ 䍞 䍞 DŽЎњ䖒 䖭Ͼ㽕∖ˈ 㽕∖ ㋏㒳 㡃 ⱘ ⿏ỡ ˈ㗠Ўњ 㡃 ⱘ ⿏ỡ ˈ ㋏㒳 䆹䞛⫼催㑻䇁㿔˄ϔ㠀䛑 C䇁㿔˅ ⦄DŽ䗮 ↣ ⦄ϔϾ ⱘ ⧚ ˈ Ӯ Ⳍ ⱘC㓪䆥 ˈ䞛⫼C䇁㿔ⱘ ㋏㒳 㛑䖙䗳 ⿏ỡ 䖭Ͼ ⧚ ϞDŽϔϾ ㋏㒳䞛⫼ⱘ∛㓪䇁㿔䍞 ˈ ⧚ ⱘ⿏ỡ 䍞 䲒⫮ ϡ 㛑ˈ䖭ϔ⚍ ѢRISC ⧚ DŽ ϔҷⱘ㋏㒳˄՟ VxWorks˅䞛⫼C䇁㿔 ⦄ˈ⿏ỡ ϔϾ ԧⱘ ⧚ П ˈ 㾚䳔㽕 ѯ 䯈㽕∖㢯 ⱘҷⷕ⫼∛㓪䇁㿔Ӭ DŽ㋏㒳㽕⫼Ѣ ⾡ ㋏㒳ˈ ϾҎ ㋏㒳ˈ ⧚ ㋏㒳DŽ䖭 㽕∖ ㋏㒳ⱘҷⷕ㾘 Ԍ㓽 DŽ ԧ 䇈ˈ 㽕∖㋏㒳 㓽 ˈ Ѣ 㾘 䰤ⱘ ㋏㒳ˈ㽕∖ ㋏㒳ⱘҷⷕ䭓 㛑㓽 KB⫮㟇 KB㣗 DŽҷⷕ㾘ⱘ Ԍ㓽 Џ㽕 ѢϸϾ ㋴DŽϔ ⫼ⱘ䇁㿔ˈ ѢC䇁㿔ⱘ㋏㒳㚃 ϡ Ѣ∛㓪䇁㿔ⱘ㋏㒳㋻ ˈԚЎњ 䗄ⱘ ⿏ỡ ⱘ⧚⬅ˈ䞛⫼催㑻䇁㿔З 䍟ˈ 㛑 㛑 ҹӬ ˈ㓽 ҷⷕ䭓 DŽ ㋏㒳㾘 Ԍ㓽 ⱘѠϾ ㋴ ㋏㒳 䗝⫼ⱘ㒧 DŽⳂ Ў⌕㸠ⱘ 䗨ⱘ ㋏㒳㒧 Ḍ㒧 ˈ䖬 䆌 ㋏㒳䞛⫼⿄Ў“㉏ Ḍ”ⱘ 㒧 ˈ䖭⾡㒧 Ѣ㺕 ˈ ҹ ⧚㋏㒳ⱘ㾘 Ԍ㓽 䯂乬DŽˈ 䭓 ⫼ ⱘ㽕∖ ✊䖬 ⴔ 䗝 ㋏㒳ⱘ⫳ѻ 䆹 ϔϾ Ϟ ⱘ ˈ ⲯⱘ⫳ ˈ㛑 ѻ կ䭓 DŽ ѢՓ⫼ ѢϔϾ ㋏㒳 ѢՓ⫼ Ѣ ˈⳈ ㋏ⴔѻ ⱘ 䯈DŽ䖭Џ㽕 ҹϟ 䴶˖˄1˅ Ѣ 㺙ˈ Ѣ䜡㕂DŽ˄2˅⫼ ⱘ ⦃ DŽ 䗮⫼ⱘに ⬠䴶 ⏙ ⌕⬙ⱘ ḷDŽ˄3˅Є ⱘ䇗䆩 ӓⳳ DŽ˄4˅Є ⱘ㋏㒳 㛑DŽ ㋏㒳䇗⫼ 䞣ǃ䇗 ㄪ⬹ Ӭ 㑻 䕀䰆 ǃRMA ㄝDŽ˄5˅ ⱘ DŽ Ё ⬅Ѣ 㓬 ㋏ˈЏ㽕㽕∖䗮䖛㔥㒰ⱘ DŽ㛑㸵䞣 ㋏㒳ⱘ 㛑ⱘ ˈ Ё Џ㽕ⱘ ҹϟ Ͼ˖* ӏ 䯈ˈ ㋏㒳 ϸϾ⣀ゟⱘ Ѣ▔⌏ ⱘӏ П䯈 䳔ⱘ 䯈DŽ* Ё ㄝ 䯈ˈ ⧚ Ё 䇋∖ 㸠Ё ⱘϔ Ҹ 䳔 䯈DŽ* ⅏䫕㾷㜅 䯈DŽ㔥㒰 㛑ⱘ ㋏㒳 ϡ 㔥㒰 㛑DŽ✊㗠 Ҟ 㔥㒰ⱘϪ⬠ˈϔϾӬ⾔ⱘ ㋏㒳 乏 㔥㒰 㛑ˈ催 䴴 催 ⥛ ⦄TCP/IP NFSㄝ 䆂DŽ䅵ㅫ 乚 Ϟ 䞡ˈ 㛑䙉 ⱘ Ё ⱘџ Ϟⱘ DŽⳂ ㋏㒳乚 ↨䕗 䅸ⱘ ҢUNIX㋏㒳 㗠 ⱘPOSIX API DŽPOSIX1003.1 Нњ㋏㒳䇗⫼ˈ㗠POSIX1003.1B Нњ ǃ ♃ǃ⍜ 䯳 ㄝDŽPOSIX Ѣ ㋏㒳 ✊ϡ ϔϾ 㕢ⱘ ˈϸ ⬅VITA⡉ ˈ ㋏㒳 Ϣ ゟϔϾ⿄ЎESSE˄E mbedded System Software Environment ˅ⱘ ˈESSE НϔϾ Ḍⱘ ⫼ ˄API˅ Ѣ 䚼 ՟ ӊ㋏㒳 䇗䆩 ⱘ DŽϔѯ䞡㽕ⱘ ㋏㒳 ҹ ⬉ 乚 ⱘ 䛑 ESSEˈԚ 㒜ESSEⱘ ԩˈ 㾖 DŽϔϾ Ёⱘ ㋏㒳ԧ㋏㒧 I2O˄Intelligent I/O˅ˈ ⹀ӊ㋏㒳㒧 ㋏㒳ϸϾ 䴶ˈ 䞛⫼ 㛑 ⱘ ⊩ 催I/O ㋏㒳ⱘ 㛑ˈ Н ḌϢ䆒 偅 П䯈ⱘ DŽ䖭Ͼ г Џ⌕䅵ㅫ ㋏㒳 ⱘ DŽ%63ⱘЄ ㋏㒳 ↣ϔ⾡ ⧚ կϔϾBSP˄Board Support Package˅䕃ӊ,ϔϾ⡍ ⱘ ⧚ њⳌ ⱘBSPˈ 㛑 䆹 ㋏㒳ϟ 䖤㸠DŽѢ ϡ CPU 㛑 ⱘӕϮ ˈ䗮 䞛⫼⦄ ⱘ ⧚ ゟ㞾 ⱘ ⫼㋏㒳DŽ⬅Ѣ䗮⫼ⱘ Ў⡍ 乚 䆒䅵ⱘ ⧚ 㒣 Є ˈ ⧚ 㛑 ⱘӕϮˈг 㛑 䞛⫼ ⧚ 㓽ⷁѻ ˈ䰡Ԣ DŽℸˈ ㋏㒳 ⧚ 㛑 կⱘBSPⱘ䍞Є ˈ ⫼ 㗙 䍞ФѢ䞛⫼DŽ ✊ˈ ㋏㒳䛑 կ㞾㸠 BSPⱘ ˈԚ 㞾㸠 BSP ⫼ ⱘ ѻ ⱘ 䯈DŽ1.2.7 ㋏㒳䕃ӊ㋏㒳 ⱘ䖛ϔ㠀 1ˉ5 ⼎˖Ң Ё ⳟ ˈ ㋏㒳ⱘ 䰙Ϟ 䕃⹀ӊѸ 㸠䆒䅵ⱘ䖛DŽԚ ϔ ㋏㒳ⱘԧ㋏㒧 䆒䅵 ˈ䕃⹀ӊ䆒䅵 ⣀ゟ 㸠 䖯㸠њDŽㄝ ϸ㗙ⱘ䆒䅵 ˈ 䲚 ϔԧ䖯㸠䲚 ⌟䆩DŽ䕃ӊ ゟ ӏ Ⳍ Ѣϔ㠀䕃ӊ䆒䅵䖛Ёⱘὖ㽕䆒䅵䰊↉DŽ ゟ 㛑㒭㋏㒳 ゟϔϾ DŽӏ 䖭Ͼ ⸔Ϟˈ ✻ϔ ⱘӏ 䗴 ˈ ㋏㒳 㾷 㛑 ⧚ Ⳃ 䗖ⱘӏ 䲚 DŽӏ 䜡 ӏ ✻ϔѯ㾘 㑺 ˈ Ⳍ ⱘ䅵ㅫ ⧚ ЁDŽӏ ⱘ 㸠˗⬅ӏ 䇗 DŽ1-5 ㋏㒳ⱘҢ乊 ϟⱘ ⌕䇁㿔 ⦄䰊↉ ⫼ ϔ䅵ㅫ 䇁㿔 ⦄ӏ 䰊↉ ⱘ↣Ͼ DŽ ↣Ͼ䰊↉ⱘ㒧 㽕䖯㸠Ⳍ ⱘ 㛑 ˈг 䆘Ԅ↣Ͼ䰊↉ⱘ䆒䅵 ⒵䎇 㛑㽕∖ˈ䖒 ϔ ⱘ DŽ 䰊↉ ⱘ㚃 ˈ ϟϔ䰊↉ ҹ乎 䖯㸠ⱘ 䆕DŽϔ 䕃ӊⱘ Ͼ䚼 㒣 ⦄ˈ 䆹䖯 ⌟䆩䰊↉DŽ䕃ӊⱘ⌟䆩 Ў ⌟䆩 䲚 ⌟䆩ˈ 㗙 㓪ⷕ䰊↉䖯 㗙 ⌟䆩ⱘ䕃ӊ 㒘㺙 ϔϾ ⱘ㋏㒳䖯㸠⌟䆩DŽ䕃ӊ ˖⬅Ѣ ㋏㒳㞾䑿ⱘ⡍⅞ ˈ 䰤Ѣ ㋏㒳㞾䑿䌘⑤Ϣぎ䯈ⱘ䰤 ˈ 䕃ӊ ϔ㠀䞛⫼ Џ ʊʊⳂ Ѹ ˈ 1ˉ6 ⼎DŽ ⦃ 䖤㸠 Џ ϞDŽ Џ ҹ キǃPc ㄝˈ䖤㸠ⱘ ㋏㒳 Ўunixǃmicrosoft windowsㄝ Є ⬠䴶 ⱘ㋏㒳 DŽⳂ Ӏ㽕 ⱘ ⹀ӊ DŽЏ Ⳃ 䗮䖛І㸠 ǃҹ 㔥ǃӓⳳ Ҫ䗮 ↉Ⳍ㘨㋏DŽ⫼ ⱘ Џ ⦃ ϟ ˈ 㓪ⷕǃ㓪䆥ǃ㘨 ǃϟ䕑 䇗䆩ㄝ DŽ⫳ Ⳃ ⷕ⬅І㸠 ҹ 㔥 Ҫ䗮 䗨 ϟ䕑 Ⳃ ˈ ⫼ Ⳃ Ϟ 㸠ˈ⫼ ҹՓ⫼ ѢЏ ⱘ ⦃ կⱘ䇗䆩 䇗䆩䖤㸠 Ⳃ Ϟⱘ ⫼ DŽ䖭⾡ ⦃ 䰸㛑 ⧚ ⱘ 䚼 㛑ҹ ˈ䖬 ⫼ ⱘDŽ1-6Ѹ ⦃2 ⧚ MPC860MPC860 ↨䕗⌕㸠ǃ 㛑Ⳍ Ӭ䍞ⱘ ⠛䲚 ⧚ DŽ 䚼䲚 њ ⧚ ϔѯ 乚 ⱘ ⫼ 㒘ӊˈ⡍ 䗖 Ѧ㘨㔥㒰 䗮 DŽMPC860䗮 ⧚ ḍ ⫼ ϡ ⱘ㽕∖ կ2̚4ϾІ㸠䗮 ǃϡ 㾘Ḑⱘ Ҹ cacheˈ ⾡㑻 ⱘ㔥㒰 䆂 DŽ䆹ѻ ϧЎ 䆒 䏃⬅ ǃ 䲚㒓 ǃLAN/WANѸ ǃPBX㋏㒳 STM㔥 ㄝ䆒䅵DŽMotorola860 ⫼䗨 ⠛䲚 䗮 ⧚ ˈ ⴔ㡃 ⱘ 㛑 ˈ ⫼ ⾡ ˈ⡍ ⫼ 䗮 䴶DŽ2.1 MPC860ⱘ ḚMPC860 ϝϾ 㛑 㒘 ˖ PowerPc Ḍǃ㋏㒳 ҹ 䗮 ⧚ DŽ 㛑Ḛ 2-1 ϟ ⼎DŽ2-1 PowerPc860 㛑Ḛz ⱘPOWER PC Ḍ˄Embedded PowerPC core˅— Power PC⫼ Ҹ㑻ⱘ32ԡ ⱘPower PC Ḍˈ 㕂32Ͼ32ԡⱘ DŽ— ҹ䖯㸠 Ҹ ⱘ乘⌟ ӊ ˈԚϡ㛑 ӊ 㸠DŽ— CPU 䚼ˈ䲚 2Kⱘ cache˄D-Cache˅ 1Kⱘ Ҹ˄I-cache˅ˈ䖭ѯcache ǃ⠽⧚Ϟ ⱘˈ䞠䴶 ⱘ DŽ— ㅵ⧚ ˄MMU Memory Management Unit˅ 4K,16K,256K,512K,8M Bytes ⱘ ⾡义䴶 DŽz 䖯ⱘ 㒓ӓⳳ䇗䆩 DŽz 㒓⬅26 䚼 㒓 ˈ32 㒓 8ԡǃ16ԡǃ32ԡⱘ 㒓ˈ 催ԡ ⱘ Ԣԡ ⱘ DŽz㋏㒳 ˄SIU System interface Unit˅—⹀ӊ 㒓ⲥ㾚—ӾЁ ⲥ㾚—䕃ӊⳟ䮼⢫˄Watchdog˅— Ё— 䩳— 䩳 Power PCⱘ—䞡—IEEE 1149.1 JTAG⌟䆩 ッz ˄Memory Controller˅˄8Ͼ㒘˅— DRAMǃSDRAMǃSRAMǃEPROMǃEEPROMǃFLASHㄝ ⾡— 㓪ⱘ 䞣 䗳 ⱘ— 㢃⠛ 䗝8ԡǃ16ԡǃ32ԡ— ⾡ ⱘ ˄Block˅ˈҢ32KByte 256Mbyte— さ z䗮⫼ ˄General-purpose timers˅—4Ͼ16ԡ 㗙2Ͼ32ԡ—䮼⽕ℶǃՓ㛑 䅵zЁ ˄Interrupts˅—8 䚼Ё 䇋∖˄IRQ˅㒓—12Ͼ Ё 㛑 ⱘㅵ㛮—15Ͼ 䚼Ё ⑤—SCC USBП䯈ⱘ 㓪Ӭ— 㓪 催Ӭ 䇋∖z䗮 ⧚ ˄CPM: Communication Processor Module˅—32ԡⱘRISC䗮 ⧚—䆌 ϧЎ 䆂 Нⱘ Ҹ䲚— І㸠䗮䘧Ϟ䖲㓁 䗕 —催䖒8Kbytesⱘ RAM—14ϾІ㸠DMA(SDMA)䗮䘧—3Ͼ 䞞 㛑 ⱘ 㸠I/Oz4Ͼ⣀ゟ⊶⡍⥛ ⫳ ˄BRG: Baud-rate Generators˅— ҹ㹿䖲 ӏ ⱘSCCǃSMCǃUSB— Ё 䆌㹿—㞾 ⊶⡍⥛z4ϾІ㸠䗮 ˄SCC: Serial Communications Controller˅— IEEE 802.3/Ethernet( ⱘ10Mbits/s)—HDLC/SDLC( ⱘ䗮䘧 2Mbit/s)—HDLC 㒓˄ ѢHDLCⱘ 㔥LAN˅— ℹHDLCҹ PPP˄Point-to-Point Protocol˅—AppleTalk— UART(Universal asynchronous receiver transmitter) ℹUART— ⱘ䗣 ˄ Ѣ↨⡍⌕˅z2ϾІ㸠ㅵ⧚ ˄SMC: Serial Managemennt Controllers˅— UART—䗣—䗮⫼⬉䏃 ˄GCI:General Circuit Interface˅— 䖲 䏃 ⫼(TDM)䗮䘧z1ϾSPI˄Serial Peripheral Interface˅ 1ϾCI22.1.1 Power PCԧ㋏ὖ䗄Power PC䞛⫼њ ⧚ 䆒䅵ˈ կњϔϾ⫼ ⫼ⱘ催 㛑 Power PCḌ ϔϾ њϧ⫼ⱘ32ԡ䗮 ⧚ ⱘ䗮 ⧚ DŽŁ Power PC ⧚ Power PC Ḍ 㸠 ⱘ ˈҪϢ 䚼 㒓 䚼 㒓ⱘ 䛑 32ԡˈ Փ⫼ˎϾ Ҹ 䯳 ǃːϾ 䯳 ǃ˒Ͼ Ҹ 㓧 Ϣ 䆒 Ѹ䘧DŽPower PC 䚼䲚 њ32Ͼ32ԡⱘ䗮⫼ ˈ䖭ѯ 㹿⫼ Ҹ 㸠 䳔ⱘ⑤ Ⳃⱘ ㄝ DŽPower PC ⧚ г䲚 њMMUǃˎK ҸCache ˍK CacheDŽł SIU 䞡MPC860ⱘ䜡㕂 䗮䖛SIU ⱘˈSIU ㋏㒳 ǃ ǃ Ҹ 䚼ⱘ㋏㒳 㒓DŽ㋏㒳䜡㕂 㛑 ⴔ Ͼ㋏㒳ˈ կњ 㒓ⲥ㾚 ǃ䕃ӊⳟ䮼⢫ǃ Ё ǃ ㄝ ⾡ 㛑DŽ 䩳 ℹ⬉䏃㛑ѻ⫳ϢSIU ⱘ 䆒 䳔 䩳 ˈЏ㽕ⱘ㋏㒳 䩳 ҹ ˈԚ⊶⡍⥛ѻ⫳ І Փ⫼ ⱘ 䩳DŽㅵPower PC Ḍ 32ԡⱘˈԚ 䚼 㒓г ҹ⫼ ˔ԡ 16ԡˈ 䆎㋏㒳 䆒 ⱘ㋏㒳 㒓 ԡˈ䛑 ҹ ˄г 䇈˔ԡǃ16ԡǃ32ԡⱘ 䆒 ҹ ㋏㒳 㒓Ϟ ˅DŽ 䖒˔Ͼ 㒘ˈ DRAMǃSRAMǃEPROMǃFLASHǃSDRAMǃEDOㄝ ˈг Ң32Kbytes 256Mbytesⱘ义䴶 DŽ ↣ϔϾ 㒘䛑 կˌˉˍˑϾㄝ ˈг կњːϾ 㡖Փ㛑 ˄AT[0-3]˅ǃˍϾ䕧 Փ㛑 ˄OE˅ǃˍϾ ⱘ⠛䗝 ˄BOOT-CS˅DŽMPC860 ϔϾ䞡 ˈҹϟⱘ 䛑 㛑䗴 860䞡 ˖Ϟ⬉ǃ 䚼⹀ ԡǃ 䚼⹀ ԡ˄ 䫕ǃ䕃ӊⳟ䮼⢫䞡 ǃ䇗䆩 ⹀ ˅ǃJTAG䞡 ǃ 䚼䕃 ǃ 䚼䕃 DŽ2.1.2 MPC860ⱘ⹀ӊMPC860ⱘ 㒓z26ԡⱘ 㒓ǃ32ԡⱘ 㒓z TTLⱘz䗮䖛 ˈ ҹ ⱘ䜡㕂 㒓 Ў˔ԡǃ16ԡǃ32ԡz ⱘ 㒓 䩳ⱘϞ ⊓Ł Clock ⥛MPC860ⱘClock ㋏㒳 䫕Ⳍ⦃䏃 ҹ կMPC860⠛ 䚼䆒 䳔ⱘ ⾡ 䩳 ˈ䫕Ⳍ⦃ 乥⬉䏃 ҹ 䚼ⱘԢ乥 䩳⑤ ⠛ ⱘ催乥 䩳⑤ˈ г ⫼ 乥⬉䏃 催乥 䩳 Ԣ乥 䩳ҹ䗖 ⥛ⱘ㽕∖DŽł㛑 ˔Ͼ 䌂 㒘ˈ䖭ѯ 㒘г ḋ GPCM ˄General-Purpose Chip-select Machine˅ UPMs˄User-Programmable Machines˅ⱘ DŽGPCM⬅Ѣϡ さ ˈ ҹ 㛑䕗ԢˈҪ կⱘ կㅔ ǃԢ 㛑ⱘ ҹ Ў ⱘ䆒 Փ⫼ˈЏ㽕⫼ 䕑 䆒 䴲さ ҹ Ў ⱘ䆒 DŽUPM 䚼 㒓Ϟⱘ ⫼ˈѻ⫳ 㓪ⱘ㸠 DRAMˈ㗠⫼ ѻ⫳DRAM 乏ⱘ DŽ2.1.3䗮 ⧚ ˄CPM˅Ўњ 催䗳 㗫ˈCPM䞛⫼њ㞾䑿⣀ゟⱘRISC䗮 ⧚ ˈҪ ♉⌏ⱘ 㓪 ӊ ⾡䗮 䆂ˈ Ͼ䲚 ⱘ䗮 䗮䘧ˈ 㸠Ԣ㑻ⱘ 䆂 ⧚ DMADŽCPM⫼ҹϟ Ͼ ⊩ Power PC ḌҢ㐕䞡ⱘ䗮 ⧚ӏ Ё㾷 ˖z Ё ⱘ䗳 ˈ Ḍҙ ǃ 䗕 Ё ˈ㗠ϡ ↣ϔϾBit.z Bufferⱘ 㒧 ҹ Ѣ䕃ӊ㓪CPMs ϢMC68360Ⳍ䖥Ԑˈ ҹϟ⡍ ˖z䗮 ⧚ (CP: Communication Processor)— ッ RAM— 䚼ROM—2Ͼ⠽⧚ⱘІ㸠DMA(SDMA) ⦄14ϾSDMA䗮䘧ˈ↣ϾSCCǃSMCǃUSBǃSPIǃCI2 2Ͼ䗮䘧—2Ͼ⣀ゟⱘDMA(IDMA)⫼Ѣ П䯈ⱘ Ӵ䕧z4Ͼ ⱘІ㸠䗮 ˄SCC1ǃSCC2ǃSCC3 SCC4˅ ҹϟ 䆂—UART 䆂—HDLC 䆂—APPLETALK 䆂— ℹHDLC 䆂—BISYNC 䆂—IrDA—IEEE802.3/Ethernet 䆂z2Ͼ ⱘSMC UART GCI 䆂z USB 4ϾҢ USB㒜ッˈ 䗳⥛Ў12Mbpsz CI2 (Inter-intergrated Circuit) 㒓z CPMЁz䗮⫼I/O2.2 MPC860ⱘ ㅵ㛮 㛑MPC860ⱘㅵ㛮 㛑 ϟ 2-2 ⼎2-2 PowerPc860ㅵ㛮 2.2.1 CPMŁ USBㅵ㛮USBRXD:䕧 ˈҢ 䕧 㒓Ϟ ⱘUSBOE:䕧 ˈ 㒓Ϟ䕧 Փ㛑USBTXN,USBTXP:䕧 ˈ 䕧 01 䘏䕥“0”˗10 䘏䕥“1”˗00 ℶUSBRXP,USBRXN:䕧 ˈD+ D-ⱘ䮼 ˈҹ 䗳 DŽ00 ℶ˗01 䗳˗10Ԣ䗳ł SMC1/2SMRXD1/2:䕧 ˈSMCⱘІ㸠 䕧SMTXD1/2:䕧 ˈSMCⱘІ㸠 䕧SMSYN1/2:䕧 ˈSMC ℹŃ SCC2/3RXD2/3:䕧 ˈІ㸠 䕧 SCCⱘTXD2/3:䕧 ˈІ㸠 䗕ҢSCC䕧 ⱘRTS2/3:䕧 ˈ䇋∖ 䗕ˈҹ㸼 SCC 䗕ACTS2/3:䕧 ˈ⏙䰸 䗕ˈ SCC㸼 䗕 ҹ ⱘ䕧CD2/3:䕧 ˈ䕑ԧẔ⌟ˈ㸼 SCC㽕ń IDMDREQ[1-2]:䕧 ˈ ϔϾIDMA䗮䘧 䗕ⱘ䇋∖ˈ IDMAӴ䕧SDACK[1-2]:䕧 ˈCPM Ӵ䕧 ˈ SDACK 㒓㕂ԡŅ Serial InterfaceL1TXDA:䕧 ˈ 䏃 ⫼(TDM)䗮䘧AІ㸠䕧L1TCLKA:䕧 ˈTDM䗮䘧Aⱘ 䗕 䩳L1TSYNCA:䕧 ˈTDM䗮䘧Aⱘ 䗕 ℹ䕧L1RXDA:䕧 ˈ 䏃 ⫼(TDM)䗮䘧AІ㸠䕧L1RCLKA:䕧 ˈTDM䗮䘧Aⱘ 䗕 䩳䕧L1RSYNCA:䕧 ˈTDM䗮䘧Aⱘ 䗕 ℹ䕧L1ST[1-8]:䕧 ˈІ㸠䆒 䗝䗮䕧 ˈ ⫼Ѣ 䩳䗕 ϡ 䚼 䱭 䜡 (TSA)ⱘ 䆒ˈL1ST[1-4]⫼ѢRXRAM,L1ST[5-8]⫼ѢTXRAML1RQA: ˈ 䗕IDL 䇋∖ˈņ SPISPIMISO: ˈSPIЏ䆒 ⱘІ㸠 䕧 ˈSPIҢ䆒 ⱘІ㸠 䕧 SPIMOSI: ˈSPIЏ䆒 ⱘІ㸠 䕧 ˈSPIҢ䆒 ⱘІ㸠 䕧 SPISEL˖䕧 ˈSPIҢ䆒 ⱘ䗝䗮䕧SPICLK˖ ˈSPIЏ䆒 ⱘ 䩳䕧 ˈSPIҢ䆒 ⱘ 䩳䕧ŇCI2I2ⱘCI2SDA: ˈCC I 2SCL: ˈC I 2ⱘ 䩳2.2.2 䚼 㒓Ł 㒓ӆ㺕BR:䕧 ˈ㸼 ϔϾ 䆒㽕∖ 㒓ӆ㺕BG:䕧 ˈ㸼 㒓 㒧 ˈMPC860䅽 㒓BB:䕧 ˈ⬅ 䆒 ˈ㸼 Ⳃ 㒓ℷ TS:䕧 ˈ⬅ 䆒 ˈ㸼 Ӵ䕧 ł 㒓A[6-31]:26ԡ 㒓ŃӴ䕧ⱘTSIZ[0-1]:㸼 ԭⱘ Ӵ䕧ⱘ 㡖 BURST:㸼 Ⳃ Ӵ䕧ⱘ さ BDIP : 㸼 さ Ⳃ ℷ Ӵ䕧ЁBI: 㸼 㒓ϞⱘҢ䆒 ϡ さ ń Ӵ䕧D[0-31]: 㒓DP[0-3]: 㒓Ϟⱘ 偠ˈ↣ ԡϔϾ 偠ԡRD/WR ˖䇏 㒓CS[0-7]: 8Ͼ⠛䗝㒓ˈԢWE[0-3]: ˈ 㒓Ϟⱘ4Ͼ ԡ OE:䕧 Փ㛑Ņ䗮⫼I/O Ё P A [4-15]: A PB[16-19,22-31]:B PC[4-15]: C PD[3-15]: DIRQ[0-7]: 8ϾЁ 㒓ˈԢ2.3 MPC860ⱘ 䖛2.3.1 MPC860 ⱘ䜡㕂MPC860 ḍ ___RSTCONF ㅵ㛮Ϟⱘ⬉ ⹂ ҹҢD[0..31]Ϟ䞛ḋⱘ 䜡㕂MPC860 ⱘ DŽ Ӏⱘ 㗗䆒䅵Ёˈ___RSTCONF ㅵ㛮Ϟ Ԣ⬉ ˈMPC860 ҢD[0..31]Ϟ䞛ḋˈ⫼䞛 ⱘ Ў“ 䜡㕂 ”˄32ԡ˅ˈ䆹“ 䜡㕂 ”ϢMPC860 ⱘ ԧDŽԧ ↉䜡㕂Ϣ⹀ӊ䆒䅵 ⱘ ISB ↉˄7-8ԡ˅ BPS˄4-5ԡ˅ ↉DŽISB ↉˄Initial internal space base select˅ ⫼ Н ˈMPC860 䚼 㒓䇏 䳔㽕ⱘ ⱘ ˄䆹 ↉ 00ˈг 䇈 MPC860ⱘIMMR ⱘBIT[0..15] 0X00000000, Нњ 䚼 ⱘ ˗䆹 ↉ 01ˈ ⱘ 0x00F00000˗䆹 ↉ 10ˈ ⱘ 0xFF000000˗䆹 ↉ 11ˈ ⱘ 0xFFF00000˗˅DŽBPS ↉˄Boot port size˅ ⫼ Н 䆒 ˄ EPROM FLASH˅ ⱘ ˈ 䆹 ↉ 00 ˈ 32Bit˗ 䆹 ↉ 01 ˈ 8Bit˗ 䆹 ↉ 10 ˈ 16Bit˗ 䆹 ↉ 00 ˈ НDŽMPC860 Ң 䚼 Ё䇏 Ҹˈ㗠䆹 ⱘ +0x100ˈ ⬅ 䗄ⱘ ↉ НⱘDŽ2.3.2 MPC860Ϣ 䚼 ⱘ⠛䗝䖲䚼 ⱘ⠛䗝 ⠛ ⱘ䆒䅵Ё Ⳉ ⱘ催ԡ 㒓Ϟˈ Ͼ催ԡ 䗮䖛 䆥ⷕ 䚼 ⱘ⠛䗝Ϟˈ 㒓ⱘԢԡϢ ⱘ 㒓Ⳍ䖲DŽ䖭ḋ 䗮䖛 㒓ⱘ催ԡ䆥ⷕ ϔⱘ 䚼 ˈ ҢЁ䇏 DŽ㒓2-3 PowerPcϢ ⱘ㗠MPC860 䑿 կњCS[0-7]ϔ 8Ͼ⠛䗝 ˈ䖭8Ͼ⠛䗝 ҹ 8Ͼ ҹ Ў ⸔ⱘ 䆒 ˈ ⱘ⠛䗝 ⬅MPC860ⱘ1Ͼ Ёⱘ3ԡ ⱘDŽ 䆹 䖯㸠 Ӯ MPC860ⱘCS[0-7]ЁⱘϔϾ⠛䗝 Ԣ⬉ ˈ䗝䗮 䚼ⱘ DŽ 䚼 㒓Ϟⱘ ⠛䗝ϔ䍋 ϔ䗝 њϔϾ ˈ ϞW/E ˈ ҹ 䚼 䖯㸠䇏 DŽ3 VxWorks 䲚 ⦃ Tornado3.1 ㋏㒳VxWorks3.1.1 ⫼㚠㋏㒳 ⫼Ёˈ⬅ѢՓ⫼16ԡҹϟⱘCPUⱘ䌘⑤䞣䕗 ˈӏ ↨䕗ㅔ ˈ ҹ ⫼ Ё㞾 ㅵ⧚CPU䌘⑤ˈϡϔ 䳔㽕ϔϾϧ⫼ⱘ㋏㒳䕃ӊˈㅵ⧚CPUDŽ ㋏㒳↨䕗 㗠䞛⫼32ԡCPU ϡ њˈ32ԡCPUⱘ䌘⑤䞣䴲 ˈ ҹ䖒 4GBぎ䯈ˈ ⧚㛑 г䴲 ˈ ҹ ⦄ ӏ ⧚ˈ ℸ ҡ✊⊓⫼ 㓪 CPUㅵ⧚ ˈ䴶 ⱘ ⫼ˈ 䲒 32ԡCPUⱘ ⧚㛑 ˈ 催 䴴ⱘ ⫼㋏㒳DŽㅵ⧚CPUⱘ㋏㒳䕃ӊ ↣ϔϾ㋏㒳 䳔ⱘˈϡ ⱘCPU ˈ DŽ 䛑㽕 ⫼㋏㒳ⱘ 㗙㞾 ˈ䙷М↣䛑㽕䞡 ˈ䗴 ϡ 㽕ⱘ䌘⑤⌾䌍ˈ 䭓њ ˈ њ DŽ㗠ϨCPUㅵ⧚ Ͼ㋏㒳ⱘ ⸔ˈӏԩ㔎䱋䛑 㛑 䍋Ϲ䞡ⱘ䯂乬ˈ䖭ḋˈ Փ 㗙㗫䌍 䞣ⱘ㊒ Ϣ ⫼ ⱘ㋏㒳ㅵ⧚ϞDŽӀⶹ䘧ˈ⫼ Ⲟ ⱘ32ԡ ⧚ ⱘѻ ˈ䳔㽕ϔϾ⫼ 䖲 ѻ ⫼ ⹀ӊⱘ ㋏㒳DŽ⫼ ∖ⱘ ㋏㒳 䆹 ⱘ 䞡㽕ⱘ⡍⚍ ˖z 䴴 催ⱘ 㛑z ϟ䕑 㒜ѻ ⱘ Ϟ ⱘЄ ♉⌏ⱘ 㛑 䲚Ϣ㓐 䴶ⱘЏ ⦃ ⱘ DŽ3.1.2 VxWorks ㅔҟVxWorks 㕢 Wind River System ˄ҹϟㅔ⿄亢⊇ ˈ WRS ˅ ⱘϔϾ ㋏㒳DŽWRS 㒘 Ѣ1981 ˈ ϔϾϧ䮼Ңџ ㋏㒳 Ϣ⫳ѻⱘ䕃ӊ ˈ䆹 ㋏㒳乚 㹿Ϫ⬠ 䅸Ў 乚 ⫼ⱘ DŽVxWorks ㋏㒳 㕢 WindRiver Ѣ1983 䆒䅵 ⱘϔ⾡ ㋏㒳˄RTOS˅ˈ TornadoII ⦃ ⱘ 䬂㒘 䚼 DŽ㡃 ⱘ 㓁 㛑 ǃ催 㛑ⱘ Ḍҹ ⱘ⫼ ⦃ ˈ ㋏㒳乚 䗤⏤ ϔ П DŽ佪 ˈ ♉⌏ˈ 䖒1800Ͼ 㛑 ⱘ ⫼ ˄API˅˗ ˈ 䗖⫼ 䴶 ˈ ҹ䗖⫼ѢҢ ㅔ ⱘѻ 䆒䅵˗ ˈ 䴴 催ˈ ҹ⫼ѢҢ䰆 ⅏ 䔺㋏㒳 䰙 ㋶ⱘ 䬂ӏ ˗ ˈ䗖⫼ ˈ ҹ⫼Ѣ ⱘ⌕㸠ⱘCPU VxWorks ϧ䮼Ў ㋏㒳䆒䅵 ⱘ ㋏㒳 ḌˈЎ կњ催 ⱘ ӏ 䇗 ǃЁ ㅵ⧚ˈ ⱘ㋏㒳䌘⑤ҹ ⱘӏ 䯈䗮 DŽ ⾡CPU Ϟ կњ㒳ϔⱘ㓪 ϔ㟈ⱘ䖤㸠⡍ ˈ 㛑ⱘ 㬑њϡ CPUП䯈ⱘ DŽ ⫼ ҹ 㛑 ⱘ㊒ ⫼ 䑿ˈ㗠ϡ ㋏㒳䌘⑤ⱘㅵ⧚DŽ ѢVxWorks ㋏㒳ⱘ ⫼ ҹ ϡ CPU Ϟ䕏 ⿏ỡDŽVxWorks ϔϾ䖤㸠 Ⳃ Ϟⱘ催 㛑ǃ 㺕 ⱘ ㋏㒳DŽ ҹ 㡃 ⱘ 䴴 䍞ⱘ 㹿 ⊯ ⫼ 䗮 ǃ џǃ㟾ぎǃ㟾 ㄝ催㊒ 㽕∖ 催ⱘ乚 Ёˈ 䗮䆃ǃ џⓨдǃ 䘧 ǃ亲 㟾ㄝDŽ 㕢 ⱘ F-16ǃFA-18 ǃB-2䱤 䕄⚌ ⠅ 㗙 Ϟˈ1997 4 ☿ 㸼䴶ⱏ䰚ⱘ☿ 䏃㗙ϞгՓ⫼њVxWorksDŽVxWorks ϔ⾡ 㛑 㗠Ϩ↨䕗 ⱘ ㋏㒳ˈ њ䖯ㅵ⧚ǃ ㅵ⧚ǃ䆒 ㅵ⧚ǃ ӊ㋏㒳ㅵ⧚ǃ㔥㒰 䆂 ㋏㒳 ⫼ㄝ Ͼ䚼 DŽVxWorks ⫼њ ⱘ ぎ䯈ˈ 催 㺕 ˈ 䆕њ㋏㒳㛑ҹ䕗催ⱘ ⥛䖤㸠DŽ ҹˈҙҙձ䴴Ҏ 㓪䇗䆩ˈ 䲒 ⱘ 㛑 䆒䅵 䴴ǃ催 ⱘ ㋏㒳ˈ 乏㽕 ϢПⳌ䗖 ⱘ DŽTornadoII Ў VxWorks ⫼㋏㒳 կⱘ䲚 ⦃ ˈTornadoIIЁ ⱘ ㅵ⧚䕃ӊˈ ҹ ⫼ 㞾 ⱘҷⷕϢVxWorksⱘḌ ⱘ㒘 䍋 ˈ ҹ ⫼ ⱘ䳔㽕㺕 䜡㕂VxWorks Ḍ˗vxSim ӓⳳ ҹ䅽 ϡ⫼Ⳃ ⱘ ϟˈⳈ ㋏㒳 ˈ ㋏㒳䆘Ԅ˗ 㛑 ⱘCrossWind䇗䆩 ҹ կӏ 㑻 ㋏㒳㑻ⱘ䇗䆩 ˈ ҹ䖯㸠 Ⳃ ⱘ㘨䇗˗Ӭ ҹ Ң ⾡ ⳳℷ 㾖 ǃ䎳䏾㋏㒳ⱘ䖤㸠ˈ 䰸䫭䇃ˈӬ 㛑DŽ3.1.3 VxWorksЏ㽕ⱘ ⫼乚VxWorks ⊯ ⫼ ҹϟ ϾЏ㽕 䴶˖⍜䌍⬉z Ϟ⬉㛥z 乊Ⲧz 㾚⬉䆱z≑䔺 㟾㋏㒳㟾ぎ㟾z亲㸠z㟾⧁ㅵ⧚㋏㒳z 䎳䏾㋏㒳z㟾ぎ⬉ 䆒 䈵䆒z ǃӴⳳzz Ⳍ䗮䆃㔥㒰zѸz䏃⬅z䖰䆓䯂z ATM Ё㒻Ѹ3.1.4 TornadoII ⱘЏz Sun-4: Sun OS 4.1.x; Solaris 2.4/2.5; Solaris 2.5.1/2.6; Solaris 2.7;zHP 9000/700: HP-UX 9.0.7; HP-UX 10.10; HP-X 10.20;zPC: Win95; Win98; WinNT;Win20003.1.5 VxWorks ⱘⳂ CPUz Motorola 68k:68000; 68010; 68020; 68030; 68040; 68060; CPU32; zMotorola ColdFire: MCF51xx ;MCF52xx ;MF53xx Motorola/IBM Power PC:PPC4xx ;PPC6xx ;PPC7xx ;MPC5xx ;MPC8xx ;MPC82x ;z Motorola M-COREz Intel:i386;i486;Pentium ;Pentium -Pro ;z Intel Strong ARM: SA-110; SA-1100; SA-1110; z ARM:ARM7; ARM7T; ARM8ˈARM9;z i960:KA/KB/CA/JX/RP; RP/RD; z NEC:V85x; V83x; z NEC/LSI MIPS:R3K; R4K; Vr41xx; R4700; CW400x; CW4011; R5K;z HITACHI SH: SH-1; SH-2; SH-3; SH-4; SH-DSP; SH3-DSP; zSUN SPARC: UltraSPARC; SPARC3.1.6 VxWorks ㋏㒳ⱘ㒧VxWorks ㋏㒳 Ḍwind ǃ催㑻ⱘ㔥㒰 ǃ ⱘ ӊ㋏㒳 I/O ㅵ⧚ǃC++ Ҫ ㄝḌ 㛑DŽ䖭ѯḌ 㛑䖬 ҹϢWindRiver ⱘ Ҫѻ ҹ 320ϾWindRiver ⱘ ӭԈⱘѻ 㘨 Փ⫼DŽVxWorks ㋏㒳 њ 㑻 BSP (Board Support Package)ǃ䖯ㅵ⧚ǃ ㅵ⧚ǃ䆒 ㅵ⧚ǃ ӊ㋏㒳ㅵ⧚ǃ㔥㒰 䆂 ㋏㒳 ⫼ㄝ Ͼ䚼 DŽϮ z Ҏz ⌟䆩Ϣ⌟䞣䆒z䖛 ㋏㒳䅵ㅫ 䆒z 㔥㒰䅵ㅫ zX 㒜ッz RAID ㋏㒳zI/O 䆒Ѹ䗮䖤䕧z ≑䔺z Ѹ䗮 z催䗳 䔺⬉ 䆒zPBXs ˈACDs z CD Ѹ ㋏㒳z ⿏ 䗮䆃 キz 㳖ぱ ⬉䆱zCable ModemVxWorks ⫼њ ⱘ ぎ䯈ˈ 催 㺕 ˈ 䆕њ㋏㒳㛑ҹ䕗催ⱘ ⥛䖤㸠DŽVxWorks ㋏㒳ⱘ 㒧VxWorks ㋏㒳ⱘ 䚼ӊЏ㽕 ҹϟѨϾ䚼 ˖z 㑻 BSP(Board Support Package)z Ḍwindz㔥㒰㋏㒳z ӊ㋏㒳z I/O㋏㒳3-1 VxWorksⱘ㋏㒳㒧1ǃ催 㛑ⱘ ḌWind䆒䅵ѢVxWorks ㋏㒳Ḍ ⱘ 催 㛑ⱘ ḌwindDŽ䖭Ͼ Ḍ ⱘ ⡍ ˖ 䗳ӏ ǃЁ ǃ 䯈⠛䕂䕀䇗 ㄝDŽ Ḍ䆒䅵 њ㋏㒳 䫔ˈҢ㗠 䆕њ 䚼џӊⱘ 䗳ǃ⹂ ⱘ DŽ䖤㸠⦃ г կњ ⱘӏ 䯈䗮 ˈ 䆌⣀ゟⱘӏ ㋏㒳ЁϢ 㸠 Ⳍ 䇗DŽ 㗙 ⫼ ҹՓ⫼ ⾡ ⊩˖⫼Ѣㅔ ѿⱘ ѿ ǃ⫼Ѣ CPUⱘ ӏ 䯈 Ѹ ⱘ⍜ 䯳 ㅵ䘧ǃ ǃ⫼Ѣ㔥㒰䗮 ⱘ䖰䖛䇗⫼ǃ⫼Ѣ ⧚ џӊⱘ ㄝDŽЎњ 䬂ⱘ㋏㒳䌘⑤ˈ կњϝ⾡ ♃˖Ѡ䖯 ǃ䅵 ǃ Ӭ 㑻㒻 ⡍ ⱘѦ ♃DŽVxWorks ⱘḌ ˈ㹿⿄ windˈ ӏ 䇗 ˄䞛⫼Ӭ 㑻 ˅ˈӏ 䯈ⱘ ℹ 䖯䯈䗮 ҹ Ё ⧚ˈⳟ䮼⢫ ㅵ⧚ DŽϔϾ ӏ ⦃ 䆌 ⫼ ҹϔ ⣀ゟӏ ⱘ ㄥˈ↣Ͼӏ ⣀ゟⱘ 㸠㒓 㞾 ⱘϔ ㋏㒳䌘⑤DŽ䖯䯈䗮 Փ 䖭ѯӏ ⱘ㸠Ў ℹǃ 䇗DŽwindՓ⫼Ё 偅 Ӭ 㑻ⱘ DŽ 㓽ⷁњϞϟ 䕀 ⱘ 䯈 䫔 Ё ⱘ DŽ VxWorks Ёˈӏԩ՟䛑 ҹ㹿 ЎϔϾ ⣀ⱘӏ ˈ 㞾 ⱘϞϟ DŽ䖬 ϔѯ ⱘӏ ҹՓӏ 䍋ǃ㒻㓁ǃ 䰸ǃ Ӭ 㑻DŽwindḌ կ 䞣Ўӏ 䯈 ℹ Ѧ ⱘ DŽ wind ḌЁ ⾡㉏ ⱘ 䞣ˈ Ӏ 䩜 ϡ ⱘ ⫼䳔∖˖Ѡ䖯 䞣ǃ䅵 䞣ǃѦ 䞣 POSIX 䞣DŽ ⱘ䖭ѯ 䞣 䗳 催 ⱘˈ Ӏ䰸њ㹿 ⫼ 䆒䅵䖛Ё ˈ䖬㹿 ⊯ ⫼ VxWorks 催 ⫼㋏㒳ЁDŽ Ѣ䖯䯈䗮 ˈwindḌг կњ䇌 ⍜ 䯳 ǃㅵ䘧ǃ ㄝ DŽ2ǃ 㑻 BSP˄Board Support Package˗Hardware Layer Abstract˅ 㑻 ⾡ ⱘ⹀ӊ 㛑 կњ㒳ϔⱘ䕃ӊ ˈ ⹀ӊ ǃЁ ⱘѻ⫳ ⧚ǃ⹀ӊ 䩳 䅵 ㅵ⧚ǃ 㒓 ǃ 䜡ㄝㄝDŽ↣Ͼ 㑻 ϔϾ ROM ˄Boot ROM˅ DŽ3ǃ㓐 ⱘ㔥㒰VxWorks ϔϾ Ϯ TCP/IPⱘ ㋏㒳DŽ ⱘӴ㒳Ԉ䱣ⴔVxWorks TCP/IP 䆂 ˈ ⱘBerkeley㔥㒰⡍ ˈ ˖z IP, IGMP, CIDR, TCP, UDP, ARPz RIP v.1/v.2z Standard Berkeley sockets and zbufsz NFS client and server, ONC, RPCz Point-to-Point Protocolz BOOTP, DNS, DHCP, TFTPz FTP, rlogin, telnet, rsh3-2 VxWorksⱘTCP/IP 䆂WindRiverг 䗝ⱘWindNetѻ ˖SNMP v.1/v.2c, OSPF v.2, STREAMSDŽWindRiver䖬䗮䖛 կ Ϯ㑻 ⊯ⱘ㔥㒰 ⦃ 䖭ѯḌ ˈ䖭Џ㽕 䗮䖛WindLink for TornadoIIӭԈ䅵 ⦄ⱘDŽ催㑻ⱘ㔥㒰㾷 Ḝ䖬 ˖z ATM, SMDS, frame relay, ISDN, SS7, X.25, V5 㔥㔥㒰 䆂z IPX/SPXˈAppleTalkˈSNA 㔥㔥㒰 䆂z 㔥㒰ㅵ⧚ⱘRMONˈCMIP/GDMOˈ ѢWeb㔥ⱘ㾷 Ḝz CORBA 䅵ㅫ ⦃4ǃ ӊ㋏㒳VxWorks կⱘ 䗳 ӊ㋏㒳䗖 Ѣ ㋏㒳 ⫼DŽ ⾡ Փ⫼ 䆒 ˄ ⺕Ⲭ˅ⱘ ӊ㋏㒳DŽ䖭ѯ䆒 䛑Փ⫼ϔϾ ⱘ Ң㗠Փ ӊ㋏㒳㛑 㹿♉⌏ 䆒 偅 Ϟ⿏ỡDŽVxWorks г SCSI ⺕ 䆒 ⱘ ӊ㋏㒳DŽVxWorks I/O ԧ㋏㒧 ⫮㟇䖬 ϔϾ ⣀ⱘ VxWorks ㋏㒳Ϟ Ͼϡ ⱘ ӊ㋏㒳DŽVxWorks ⾡ ӊ㋏㒳˖z dosFsz rt11Fsz rawFsz tapeFsDŽϔ 䴶ˈ 䗮 ӊˈ 䚼䆒 䛑㒳ϔЎ ӊ ⧚DŽ Ӏ ⫼ 䴶 Ⳍ ⱘ䇁⊩ НˈՓ⫼Ⳍ ⱘ DŽ䖭ḋ ㅔ њ㋏㒳䆒䅵 Ѣ⫼ Փ⫼DŽ5ǃI/O㋏㒳VxWorks կњϔϾ 䗳♉⌏ⱘϢ A NSI C ⱘ I/O ㋏㒳ˈ z UNIX ⱘ㓧 I/Oz POSIX ⱘ ℹ I/OVxWorks ҹϟ偅 ˖z㔥㒰偅zㅵ䘧偅z RAMⲬ偅z SCSI偅z䬂Ⲭ偅z ⼎偅z⺕Ⲭ偅z 偅3.1.7 VxWorks ㋏㒳Џ㽕⡍⚍1ǃ Ḍ(wind microkernel)ⱘЏ㽕⡍⚍z催 ⱘӏ ㅵ⧚˖¾ 䰤 Ⳃ ӏ ˈ 256ϾӬ 㑻¾ Ӭ 㑻 䯳 䯈⠛䕂䕀䇗¾ 䗳ⱘǃ⹂ ⱘϞϟz 䗳♉⌏ⱘӏ 䯈䗮䆃˖¾ϝ⾡ ♃˖Ѡ䖯 ǃ䅵 ǃ Ӭ 㑻㒻 ⡍ ⱘѦ ♃¾POSIXㅵ䘧ǃ䆄 䞣ǃ⍜ 䯳 ǃ 䇗¾¾ ѿ (shared memory)z催 ⱘ 㺕z 䞣䖲 䚼ӊ 䕑z 䗳 ⱘЁ џӊ ⧚zӬ ⱘ⍂⚍z ㅵ⧚z㋏㒳 䩳 䅵2ǃ㔥㒰 䴶z BSD 4.4 TCP/IPz IP, IGMP, CIDR, TCP, UDP, ARPz RIP v.1/v.2z Berkeley ,zbufs(zero-copy socket)z SLIP, CSLIP, PPPz BOOTP, DNS, DHCP, TFTPz NFS, ONC, RPCz FTP, rlogin, rsh, telnetz SNTPz MIB㓪䆥 ⱘWindNet SNMP v.1/v.2c ( 䗝)z WindNet OSPF v.2 ( 䗝)z WindNet STREAMS SVR4( 䗝)3ǃ 䗳♉⌏ⱘI/O ӊ㋏㒳z POSIX ℹI/O Ⳃ ㅵ⧚z SCSIz MS-DOC ӊ㋏㒳z Raw disk ӊ㋏㒳z TrueFFS䮾 ӊ㋏㒳z ISO 9660 CD-ROM ӊ㋏㒳z PCMCIA4ǃⳂ ⡍z ANSI C C++ⱘ ⧚ z POSIX 1003.1, .1bzⳂ shellϞⱘѸѦ C㾷䞞zヺ 䇗䆩 ∛㓪z ⱘ 㛑ⲥ㾚 㛑z ⱘ Ḍǃӏ ǃ㋏㒳z 䖲 㺙䕑z䍙䖛1800Ͼ ⫼՟z♉⌏ⱘ ˈ ҹҢROMǃ ⺕Ⲭ 䗮䖛㔥㒰 z催 㺕 䆒䅵 ҹ䗖⫼Ѣ ⊯ⱘ ⫼z䗮䖛ҹ 㔥ǃІ㸠㒓ǃICE ROMӓⳳ ⱘ㋏㒳㑻䇗䆩3.1.8 VxWorks ㋏㒳 Ḍⱘ ⧚VxWorks Ḍ˄wind˅ⱘ 㛑 ҹ Ў ϟ ㉏˖ӏ ㅵ⧚˗џӊ ℹ ˗䞣 ˗⍜ 䯳 ˗ㅵ⧚˗Ё ˗䩳ㅵ⧚ ˗䫭 ⧚DŽҹϟ 㡖Ё VxWorks Ḍⱘ ㉏ 㛑 䖯㸠 䗄DŽӏ ㅵ⧚ӏ ҷⷕ䖤㸠ⱘϔϾ 䈵ˈҢ㋏㒳ⱘ㾦 ⳟˈӏ ゲѝ㋏㒳䌘⑤ⱘ 䖤㸠 DŽӏ ҹՓ⫼ ㄝ CPUǃI/O䆒 ぎ䯈ㄝ㋏㒳䌘⑤ˈ ⣀ゟѢ ӏ ˈϢ Ӏϔ䍋 䖤㸠˄ 㾖Ϟ ℸ˅DŽVxWorks ḌՓӏ 㛑 䗳 ѿ㋏㒳ⱘ㒱 䚼 䌘⑤ˈ ⣀ゟⱘϞϟ Ͼ 㒓ⱘ 㸠DŽ3.1.8.1.1ӏ 㒧ӏ 䆒䅵㛑䱣 ℷ 㸠ⴔⱘӏ ˈ 䚼 䚼 ⫳ⱘџӊ ⹂ ⱘ 䯈䞠 DŽVxWorks ḌWind կњ ⱘ ӏ ⦃ DŽҢ㸼䴶Ϟ ⳟˈ Ͼӏ ℷ 㸠ˈ 䰙Ϟˈ㋏㒳 Ḍḍ ϔ䇗 ㄪ⬹䅽 ӀѸ 䖤㸠DŽ㋏㒳䇗 Փ⫼ӏ ⱘ 㒧 ˄ㅔ䆄ЎTCB˅ ㅵ⧚ӏ 䇗 㛑DŽӏ ⫼ 䗄ϔϾӏ ˈ↣ϔӏ 䛑ϢϔϾTCB 㘨DŽTCB њӏ ⱘ ⢊ ǃӬ 㑻ǃ㽕ㄝ ⱘџӊ 䌘⑤ǃӏ ⷕⱘ䍋 ǃ 䩜ㄝ DŽ䇗 ӏ 㹿▔⌏ ҹ Ңӥ 䞡 㹿▔⌏ ˈ㽕⫼ 䖭ѯ DŽℸ ˈTCB䖬㹿⫼ ӏ ⱘ"Ϟϟ "˄context˅DŽӏ ⱘϞϟ ϔϾ 㸠Ёⱘӏ 㹿 ℶ ˈ 㽕 ⱘ DŽ ӏ 㹿䞡 㸠 ˈ 乏㽕 Ϟϟ DŽ䗮 ˈϞϟ 䅵ㅫ ⱘ⢊ ˈг Ͼ ⱘ DŽ ⫳Ё 㽕 ⱘ ϔḋDŽ ⫳ӏ ˈ 䖤㸠ⱘӏ ⱘϞϟ 㹿 TCBˈ 㽕㹿 㸠ⱘӏ ⱘϞϟ Ң ⱘTCBЁ ˈ Ͼ ЁDŽѢ 䕀㗠 㸠䖭Ͼӏ ˈ 㸠ⱘ䍋⚍ 䖤㸠 㹿Ёℶⱘԡ㕂DŽVxWorksЁˈ ぎ䯈ϡ ӏ Ϟϟ ⱘϔ䚼 DŽ ⱘҷⷕ䖤㸠 ϔ ぎ䯈DŽ ↣ϔӏ 䳔 㞾ⱘ ぎ䯈ˈ䳔 䗝ѻ VxVMIⱘ DŽ3.1.8.1.2ӏ ⢊ ⢊ 䖕⿏㋏㒳ⱘϔϾӏ ⾡⢊ ˈ Ё ⱘ⢊ ⾡˖㒾 ˖ӏ ㄝ ㋏㒳 䜡CPU䌘⑤˗㕂 ˖ӏ 䳔ㄝ ѯϡ ⫼ⱘ䌘⑤㗠㹿䰏 ˗ӥ ˖ ㋏㒳ϡ䳔㽕 ϔϾӏ ˈ 䖭Ͼӏ Ѣӥ⢊ ˗䖳 ˖ӏ 㹿 䖳 ⢊ ˗㋏㒳 ϔӏ 䖯㸠 ˈӏ Ңϔ⾡⢊ 䖕⿏ ϔ⢊ DŽ Ѣӏϔ⢊ ⱘӏ 䛑 㹿 䰸DŽ催Ӭ 㑻ӏ ℷ 㸠3-3 VxWorksӏ ⢊ 䎗䖕⢊ 䖕⿏䇗⫼㒾 ----> 㕂 semTake()/msgQReceive() 㒾----> 䖳 taskDelay()㒾 ----> ӥ taskSuspend()㕂 ----> 㒾 semGive()/msgQSend()㕂 ----> ӥ taskSuspend()䖳 ----> 㒾 expired delay䖳 ----> ӥ taskSuspend()ӥ ----> 㒾 taskResume()/taskActivate()ӥ ----> 㕂 taskResume()ӥ ----> 䖳 taskResume()3.1.8.1.3ӏ 䇗 ㄪ⬹ӏ 䇗 乏䞛⫼ϔ⾡䇗 ㅫ⊩ 䜡CPU㒭 㒾 ӏ DŽWind Ḍ䞛⫼ ѢӬ 㑻ⱘ 䇗 ⊩Ў ⱘ㔎ⳕㄪ⬹ˈ г կњ䕂䕀䇗 ⊩DŽ ѢӬ 㑻ⱘ 䇗 ˈ Ӭ⚍DŽ䖭⾡䇗 ⊩Ў↣Ͼӏ ϡ ⱘӬ 㑻DŽ≵ Ѣ 㕂 ӥ ⱘ 催Ӭ 㑻ӏ ϔⳈ䖤㸠ϟ DŽ 催Ӭ 㑻ⱘӏ ⬅ 㒾 䖯 䖤㸠 ˈ㋏㒳 Ḍゟ ӏ ⱘϞϟ ˈ 催Ӭ 㑻ⱘӏ DŽWind Ḍ Ӭ 㑻Ў256㑻˄0~255˅DŽӬ 㑻0Ў 催Ӭ 㑻ˈӬ 㑻255Ў ԢDŽ ӏ 㹿 ˈ㋏㒳ḍ 㒭 䜡ӏ Ӭ 㑻DŽ✊㗠ˈӬ 㑻г ҹ ⱘˈ Ӏ㛑 ㋏㒳䖤㸠 㹿⫼ Փ⫼㋏㒳䇗⫼taskPrioritySet() ҹ ˈԚϡ㛑 䖤㸠 㹿 ㋏㒳 DŽ3-4 ѢӬ 㑻ⱘ 䇗䕂䕀䇗 ⊩ 䜡㒭 Ѣ 㒾 ⱘ↣Ͼ Ӭ 㑻ⱘӏ ϔϾⳌ ⱘ 㸠 䯈⠛DŽ 䯈⠛ⱘ䭓 ⬅㋏㒳䇗⫼KernelTimeSlice()䗮䖛䕧 DŽ ˈ↣Ͼӏ 䛑 ϔ䖤㸠 䯈䅵 ˈӏ 䖤㸠 ↣ϔ 䯈Ⓢㄨ 1DŽϔϾӏ ⫼ 䯈⠛П ˈ 䖯㸠ӏ ˈ ℶ 㸠 䖤㸠ⱘӏ ˈ 䯳 䚼ˈ 䖤㸠 䯈䅵 㕂䳊ˈ 㸠 㒾䯳 ЁⱘϟϔϾӏ DŽ 䖤㸠ӏ 㹿 催Ӭ 㑻ⱘӏ ˈℸӏ ⱘ䖤㸠 䯈䅵 㹿 ˈⳈ 䆹ӏ ϟ䖤㸠 DŽ3-5Ѣ 䯈⠛䕂䕀䇗3.1.8.1.4 ⽕ℶWind Ḍ 䗮䖛䇗⫼taskLock() taskUnlock ˄˅ Փ䇗 䍋⫼ DŽ ϔϾӏ 䇗⫼taskLock()Փ䇗 ˈӏ 䖤㸠 ≵ ѢӬ 㑻ⱘ ⫳DŽ✊㗠ˈ ӏ 㹿䰏 㕂 ˈ䇗 Ң 㒾䯳 Ё 催Ӭ 㑻ⱘӏ 䖤㸠DŽ 䆒㕂 ⽕ℶⱘӏ 㾷䰸䰏 ˈ 䖤㸠 ˈ 㹿⽕ℶDŽ䖭⾡ ⽕ℶ䰆ℶӏ ⱘ ˈԚ Ё ⧚ϡ䍋⫼DŽ3.1.8.1.5 ⧚催Ԣ催Ԣ⊼˖㸼⼎ ˈ㸼⼎ӏ DŽ ҷⷕ ⱘ 䫭ˈ 䴲⊩ Ҹǃ 㒓 䫭䇃ǃ㹿䳊䰸ㄝDŽVxWorks ⧚ ˈϔ㠀 䍋 ⱘӏ ӥˈ ӏ 䫭 ⱘ⢊ DŽ Ḍ ӏ 㒻㓁 㸠DŽ⫼ Tornado ˈ ⳟ ӏ ⢊ ˈҢ㗠⹂ 㹿ӥⱘӏ DŽ3.1.8.1.6ӏ ㅵ⧚ⱘ㋏㒳䇗⫼VxWorks Ḍⱘӏ ㅵ⧚ կњ ǃ 䰸 ӏ ⱘ 㛑ˈ ԧ ⦄䗮䖛 ϟϔѯ㋏㒳䇗⫼˖taskSpawn() ˄ѻ⫳ ▔⌏˅ ӏ taskInit() ϔϾ ӏ taskActivat e () ▔⌏ϔϾ ⱘӏ taskNam e() ⬅ӏ ID ӏtaskNameToId ˄˅⬅ӏ ӏ ID taskPriorityGe t()㦋 ӏ ⱘӬ 㑻taskIsSuspended()Ẕ ӏ 㹿 㕂taskIsR e ady() Ẕ ӏ 䖤㸠taskTcb() ϔϾӏ ⱘ 䩜taskD e l e t e() Ёℶ ӏ 䞞 ˄ҙӏ ˅taskSaf e () 㹿䇗⫼ӏ taskSusp end() 㕂ϔϾӏ taskR e sum e () ϔϾӏ taskRestart() 䞡 ϔϾӏ taskD elay() 䖳ϔϾӏ 䗮 ǃ ℹ ѦVxWorks ⾡ӏ 䯈䗮 ˈ կњ ḋⱘӏ 䯈䗮 ˈЏ㽕 ϟ ⾡˖y ѿ ˈЏ㽕 ⱘ ѿ˗y 䞣ˈ⫼Ѣ ⱘѦ ӏ ℹ˗y ⍜ 䯳 ㅵ䘧ˈ CPU ⱘ⍜ Ӵ䗕˗y Socket 䖰䖛䇗⫼ˈ⫼Ѣ㔥㒰䯈ӏ ⍜ Ӵ䗕˗yѠ䖯 ˈ⫼Ѣ ⧚DŽ⧚ П䯈ⱘӏ г 䞛⫼ ѿ 䈵 ⦄ӏ 䯈䗮 , ㋏㒳䜡㕂Ϟ ϡ .3.1.8.2.1 ѿӏ 䯈䗮 ⱘ ㅔ ⱘ ⊩ 䞛⫼ ѿ ˈг Ⳍ ⱘ Ͼӏ ѿ Ѣ Ӏⱘ ぎ䯈ⱘ ϔ DŽ Ў ӏ 䛑 Ѣ ϔⱘ㒓 ぎ䯈ˈӏ 䯈 ѿ DŽ 䞣ǃ㒓 䯳 ǃ⦃ 䯳 ǃ䫒㸼ǃ 䩜䛑 㹿䖤㸠 ϡ Ϟϟ ⱘҷⷕ DŽ3.1.8.2.2Ѧϔ ぎ䯈⫼Ѣ Ѹ ˈЎњ䙓 さˈ Ѣ ⱘ䫕 䴲 䞡㽕ⱘDŽϸϾ Ͼӏ 䇏 ѯ ѿ ˈ ⱘ㒧 Ѣӏ 䖤㸠ⱘ㊒⹂ ˈ 㛑 䫭䇃 ˈ䖭ḋ 乏ҹ ⾡ ↉⹂ ϔϾӏ Փ⫼ϔϾ ѿ 䞣 ӊ ˈ Ҫӏ ϡ㛑 ḋⱘ DŽЏ㽕 Ё ǃ ⽕ℶ ⫼ 䞣䫕 䌘⑤ㄝ ⊩DŽϔ㠀 䇈ˈ Ё ⱘ㾷 Ѧ ⱘ ⊩DŽԚ䖭 Ѣ ⫼ 䇈ˈ 䰏ℶ㋏㒳 䚼џӊⱘ ˈ ⊩⒵䎇 ⱘ㽕∖DŽ ḋˈЁ 䖳г ϡ㛑 DŽ3.1.8.2.3 䞣VxWorks 䞣 կ 䗳ⱘӏ 䯈䗮 ˈ Џ㽕⫼Ѣ㾷 ӏ 䯈ⱘѦ ℹDŽ䩜 ϡ ㉏ ⱘ䯂乬ˈ ҹϟϝ⾡ 䞣˖y Ѡ䖯 䞣Փ⫼ ǃ ⊯ˈЏ㽕⫼Ѣ ℹ Ѧ ˗y Ѧ 䞣Џ㽕⫼ѢӬ 㑻㒻 ǃ 䰸 ⒃˗y䅵VxWorks 䖬 կPOSIX 䞣 ⧚ Ϟ 䞣ⱘ ⫼DŽ3.1.8.2.4⍜ 䯳⦄ ⱘ ⫼⬅ϔ㋏ ѦⳌ⣀ゟ ⱘӏ 㒘 DŽ 䞣Ўӏ 䯈 ℹ 䗮 կњ催 ⊩DŽ ⧚ Ёӏ 䯈⍜ ⱘӴ䗕䞛⫼⍜ ⍜ 䯳 DŽ⍜ Փ⫼ϔϾ㹿 䖯 ѿⱘ⍜ 䯳 ˈӏ П䯈㒣⬅䖭Ͼ⍜ 䯳 䗕 ⍜ DŽ3-6ӏ 䯈Փ⫼⍜ 䯳 䖯㸠 䗮2䯳3.1.8.2.5ㅵ䘧ㅵ䘧⫼VxWorks ⱘI/O ㋏㒳 կϔ⾡♉⌏ⱘ⍜ Ӵ䗕 ˈ 偅 pipeDrv ˄VxWorks կ˅ㅵ⧚ⱘ㰮 I/O 䆒 DŽӏ 㛑䇗⫼ ⱘI/O ǃ䇏 ǃ ㅵ䘧DŽ ӏ 䆩 ҢϔϾぎⱘㅵ䘧Ё䇏 ˈ ϔϾ⒵ⱘㅵ䘧Ё ˈӏ 㹿䰏 DŽ ⍜ 䯳 ㉏ԐˈISR 㛑 ㅵ䘧Ё ˈԚϡ㛑ҢЁ䇏 DŽ䈵I/O 䆒 ϔḋˈㅵ䘧 ϔϾ⍜ 䯳 ≵ ⱘӬ ----䇗⫼select()ˈӏ ㄝ ϔ㋏ I/O 䆒 Ϟⱘ DŽ3.1.8.2.6 ⫼ⱘ㋏㒳䇗⫼Wind 䞣 Ѣ ⾡㉏ ⱘ 䞣ⱘ կњ ϔ㾘㣗 ⱘ ˈҙ 㽕⡍ 䞣㉏ DŽs e mBCr e at e() ˄ѻ⫳ ▔⌏˅ϔϾѠ䖯 䞣s e mMCr e at e () ˄ѻ⫳ ▔⌏˅ϔϾѦ 䞣s e mCCr e at e () ˄ѻ⫳ ▔⌏˅ ϔϾ䅵 䞣s e mD e l e t e () Ёℶ 㞾⬅ 䞣semTake ˄˅ 㦋 䞣s e mGiv e () 㒭 䞣s emFlush() 㾷䫕 ℷㄝ ϔ 䞣ⱘӏ Wind ⍜ 䯳 ㅵ⧚˖msgQCr e at e() ˄ѻ⫳ ▔⌏˅⍜ 䯳 msgQD e l e t e() Ёℶ 㞾⬅ 䞣msgQS e nd() ⍜ 䯳 䗕⍜ msgQR e c e iv e() Ң⍜ 䯳 ⍜ 3.1.8.2.7㔥㒰䗮VxWorks կњ ⱘ㔥㒰 㛑ˈ㛑Ϣ 䆌 Џ ㋏㒳䖯㸠䗮 DŽ㔥㒰 4.3BSD ˈг SUN ⱘNFS DŽ䖭⾡ ⊯ⱘ 䆂 Џ VxWorksh Ⳃ П䯈 կњ 㓱ⱘ ⦃ ,ӏ 䗮䖛㔥㒰 ㋏㒳ⱘЏ ӊˈ 䖰 ӊ ˈг 䖰䖛䇗⫼DŽ䗮䖛ҹ 㔥ˈ䞛⫼TCP/IP UDP/IP 䆂 ϡ Џ П䯈Ӵ䗕 DŽ3-7 VxWorks ⱘTCP/IP 䆂VxWorks կњ ϟϔѯ㔥㒰 Ӵ䗕˖y Sockets䖤㸠 VxWorks ㋏㒳 ㋏㒳П䯈ӏ ⱘ⍜ Ӵ䗕˗y 䖰䖛䇗⫼˄RPC ˅䆌ӏ 䇗⫼ ϔЏ ˄䖤㸠ⱘ㋏㒳ЎVxWorks ˅Ϟⱘ䖛DŽy 䖰 ӊVxWorks ӏ 䞛⫼NFS ǃRSH ǃFTP ǃTFTP ㄝ 䖰 Џ ӊDŽy ӊ䕧y 䖰 㸠 ҸVxWorks ӏ 䗮䖛㔥㒰▔⌏Џ ㋏㒳Ёⱘ ҸDŽVxWorks 㔥㒰㒘ӊ㒧 ϟ˖Vxworks ㋏㒳 㔥㒰 䆂ⱘ 䴴 ˄sockets ˅ ⦄ⱘDŽSockets 㾘㣗 ⊯ ⫼ⱘǃ ⱘǃ ⾡ 䆂ⱘ㔥㒰㓪 DŽ䗮䆃ⱘ ˈϔϾ䗮䆃 ⱘϔッˈ 䖭ϔッϞԴ ҹ ⱘϔϾ DŽϔϾℷ 㹿Փ⫼ⱘ 䛑 ⱘ㉏ Ϣ Ⳍ ⱘӏ DŽ Ѣ䗮䆃 ЁDŽ䗮䆃 Ўњ ⧚ϔ㠀ⱘ㒓䗮䖛 䗮䆃㗠 䖯ⱘϔ⾡ 䈵ὖ DŽ rlogin telnet SourceDebuggerNFS RSH FTP TFTP X Windows ProtocolRPCZbufi'face Sockets SNMPv1/v2TCPUDP IP+ICMPEthernetBackplane Custom Interface SLIP/CSLIPPPP netDrv䖰 㸠 Ҹ䖰 ӊ䖰ⱏ䗮 ϔϾ Ёⱘ Ѹ ˄ Ѹ г 㛑こ䍞 ⱘ⬠䰤ˈԚ䖭 ϔ 㽕 㸠 ⾡㾷䞞 ˅DŽ Ͼӏ Փ⫼䖭Ͼ ѦⳌП䯈⫼Internet 䆂 䖯㸠䗮䆃DŽҹḍ 䗮䆃 䋼 ㉏DŽ ⫼ ϔ㠀ҙ ϔ㉏ⱘ 䯈䗮䆃DŽϡ䖛 㽕 ⱘ䗮 䆂 䆌ˈϡ ㉏ ⱘ 䯈г✻ḋ ҹ䗮 DŽ⫼ Ⳃ Փ⫼ϸ⾡ ˈ ⌕ ˄䞛⫼TCP 䆂˅ ˄䞛⫼UDP 䆂˅DŽ⌕ կњ ⱘǃ ⱘǃ 䞡 Ϩ 䆄 䖍⬠ⱘ ⌕ DŽ ⱘ ⌕ˈԚ ϡ 䆕 䴴ǃ ǃ 䞡 ⱘDŽг 䇈ˈϔϾҢ ⱘӏ 㛑 ⦄ 䞡 њˈ 㗙 ⱘ乎 ϡ DŽ ⱘϔϾ䞡㽕⡍⚍ ⬭њ䆄 䖍⬠DŽ Ѣ䖭ϔ⡍⚍ˈ 䞛⫼њϢ⦄ 䆌 Ѹ 㔥㒰˄՟ ҹ 㔥˅䴲 ㉏Ԑⱘ DŽ˄socket ˅䗮 ⱘ Ӭ⚍ ˖䖛䯈ⱘ䗮 ㄝⱘˈϡㅵ㔥㒰Ё䖛ⱘ ԡ Џ 䖤㸠ⱘ ㋏㒳DŽϔ㠀 䇈ˈ⌕ կњ 䴴ⱘ䴶 䖲 ⱘ ˈ ⫼䕗 ⊯DŽ ⫼ ϟ˖3-8 䗮 ⱘ ⦄socket()bind()listen()accept()䰏 ˈㄝread()write()close()close()read()write()connect()socket() ⧚ 䇋∖ゟ䫒 䇋∖ ㄨ。