【翻译】第四章 MMS-EASE Lite底层

**概要:**本节内容描述了MMS-EASE Lite栈组件间的关系。

1 配置文件选项(Profile Options)

“MMS-EASE Lite栈组件”是一种基于不同的OSI协议层的实现。它专门为一些硬件资源非常有限的系统而设计,比如某些嵌入式系统,它具有模块化的特点,以便在实际使用时可以仅仅调用特定应用程序所需的协议层。它由几个C代码模块组成,可以方便地在任何嵌入式系统中编译。除了几个简单的函数(隔离在tp4port.c模块中)以外,MMS-EASE Lite全部使用ANSI标准C文件。在OSI七层参考模型的术语中,每个协议层都被描述为其上层提供“服务”。在本应用中,这些“服务”是通过一系列API来提供的。下图显示了OSI协议层与连接它们的api之间的关系。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 底层组件移植(Lower Layer Component Portation)

2.1 OSI传输层(TP4)移植

对于新的操作系统或硬件平台,需要移植以下函数:

tp4_init_timer
tp4_check_timer

编译选项的配置:

必选编译选项:-DLEAN_T,功能:编译该版本的TP4 API;

可选编译选项:-DDEBUG_SISCO,功能:使用“slog”启用日志记录

mvl_init_glb_vars

函数名 mvl_init_glb_vars
功能 在TP4初始化过程(tp4_initialize))中被调用,用于初始化定时器服务
函数原型 ST_VOID tp4_init_timer (ST_VOID);
参数
返回值 ST_VOID

tp4_check_timer

函数名 mvl_init_glb_vars
功能 被tp4_event调用。该函数负责监视定时器,每当计时达到1s就调用函数tp4_timer_tick。由sisco提供的tp4_check_timer示例函数适用于大多数系统,但如果目标系统上有更有效的方法,用户也可自由修改该函数。在事件驱动的系统上,重要的是要确保mvl_comm_serve至少每秒钟调用一次,这样这个函数也会被调用。因此,系统休眠时间不应超过1秒。然而,这个限制仅在正在使用TP4服务时生效
函数原型 ST_VOID tp4_init_timer (ST_VOID);
参数
返回值 ST_VOID

2.2 OSI子网络层移植

用户必须提供子网API。更多信息请参阅附录G。

2.3 TCP/IP(via RFC1006)移植

TCP/IP(via RFC1006)协议栈由以下组件组成:

ACSE
OSI演示
OSI对话
TP0(OSI传输层类0)
TCP/IP(由操作系统通过socket提供)

socket接口实现概述

MMS-EASE Lite的sockets接口包含三个任务,每个任务具有阻塞能力(用于等待来自用户或其他任务的消息),如下所示:

Main任务 (每台主机上仅有一个)
Listen任务 (用于监听socket,每台主机上仅有一个)
Read任务 (用于读取socket,每个连接仅有一个)

Main任务包括所有MMS的编解码进程以及用户接口。在启动时,它会生成Listen任务,该任务会监听是否存在被建立的连接。当检测到已建立的连接时,Listen任务向Main任务发送管道消息,Main任务调用" accept "来接收消息,并生成一个Read任务。

如果要进行向外传输的连接,Main任务会执行一个非阻塞连接调用(可参考tp0_sock.c和p_connect_req),然后生成一个Read任务实例,该实例会等待连接完成。

在两种情况(传入或传出)下,当连接完成后,Read任务会接收连接中的包并将它们传递给Main任务。所有连接中的数据包都是由Main任务发送的。

Main任务含有多层函数调用,因此有时很难跟踪用户级函数是如何在最低层实现的。例如,处理传入事件的函数调用层级如下:

main (\mmslite\mvl\usr\server\server.c) 调用  /*主函数*/
mvl_comm_serve (\mmslite\mvl\src\mvl_serv
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值