目前,TX 端仅支持通过 IOCTL 调用FM_PORT_IOC_SET_RATE_LIMIT 来实现速率限制。需要实现一个用户空间应用程序,用于打开 TX 端口的字符驱动接口并发出 IOCTL 调用。为了实现该限制,需要填充 rate_limit 结构体(下文会提到)。
例如:
fd =打开(“/ dev / fm0_port_tx5”, O_RDWR);
err = ioctl(fd, FM_PORT_IOC_SET_RATE_LIMIT, &fm_port);
传递给 IOCTL 的结构:
/**************************************************************************//**
@Description@@ 用于定义 Tx 速率限制的结构
(必须与 fm_port_ext.h 中定义的 struct t_FmPortRateLimit 匹配)
*//***************************************************************************/
typedef struct ioc_fm_port_rate_limit_t{
uint16_t max_burst_size; /**< 以 KB 为单位的 Tx 端口,以帧为单位
用于离线解析端口。(注意
对于早期芯片突发大小
四舍五入为 1000 帧的倍数)。*/
uint32_t rate_limit; /**< 以 Kb/秒为单位的 Tx 端口,以帧/秒为单位的
离线解析端口。速率限制是指
数据速率(而不是线路速率)。*/
ioc_fm_port_dual_rate_limiter_scale_down rate_limit_divider; /**< 仅用于离线解析端口。无效
对于一些早期的芯片版本 */
} ioc_fm_port_rate_limit_t;
更多信息请参见下面的链接。
http://www.freescale.com/infocenter/index.jsp?topic=%2FQORIQSDK%2F2283674.html