00. 目录
01. 命令概述
ifconfig命令的英文全称是“network interfaces configuring”,即用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
02. 命令格式
ifconfig [接口]
ifconfig 接口 [aftype] options | address ...
- 1
- 2
03. 常用选项
interface
接口的名称。这通常是一个驱动程序名,后面跟着一个单元号,例如用于第一个以太网接口的eth0。
up
此标志将导致激活接口。如果将地址分配给接口,则会隐式指定该地址。
down
此标志导致关闭此接口的驱动程序。
[-]arp
启用或禁用在此接口上使用ARP协议。
[-]promisc
启用或禁用接口的混杂模式。如果选中,网络上的所有数据包都将由接口接收。
[-]allmulti
启用或禁用所有多播模式。如果选中,则接口将接收网络上的所有多播数据包。
metric N
此参数设置接口度量。它在GNU/Linux下不可用
mtu N
此参数设置接口的最大传输单元(MTU)。
dstaddr addr
为点对点链路(如PPP)设置远程IP地址.这个关键字现在已经过时了;使用pointopoint关键字代替。
netmask addr
设置此接口的IP网络掩码。此值默认为通常的A、B或C类网络掩码(从接口IP地址派生),但可以设置为任何值。
add addr/prefixlen
向接口添加IPv 6地址
del addr/prefixlen
从接口中删除IPv 6地址
tunnel ::aa.bb.cc.dd
创建一个新的SIT(IPv6-in-IPv4)设备,通过隧道到达给定的目的地。
irq addr
设置此设备使用的中断行。并非所有设备都可以动态更改其IRQ设置。
io_addr addr
为该设备设置I/O空间中的起始地址
mem_start addr
设置此设备使用的共享内存的起始地址。只有少数几个设备需要这个
media type
设置设备要使用的物理端口或介质类型。并非所有设备都可以更改此设置,以及那些可以更改其支持的值的设备。典型的类型值是10 base 2(细以太网)、10 base T(双绞线10 Mbps以太网)、AUI(外收发信机)等。驱动的特殊介质类型可以用来告诉驱动对媒体进行自动感知。同样,并不是所有的驱动都能做到这一点。
[-]broadcast [addr]
如果地址参数给定,则为该接口设置协议广播地址。否则,设置(或清除)接口的IFF_BROADCAST标志。
[-]pointopoint [addr]
这个关键字启用了接口的点对点模式,这意味着它是两台机器之间的直接链接,没有其他人监听它。如果地址参数也给出了,就像过时的dstaddr关键字一样,设置链接另一端的协议地址。否则,设置或清除接口的IFF_POINTOPOINT标志。
hw class address
如果设备驱动程序支持此操作,则设置此接口的硬件地址。关键字后面必须跟着硬件类的名称和相当于硬件地址的可打印的ASCII。目前支持的硬件类包括ether (以太网)、ax25(AMPRAX.25)、ARCnet和netrom(AMPR NET/ROM)。
multicast
在接口上设置多播标志。这通常不应该需要,因为驱动程序本身设置正确的标志。
address
要分配给此接口的IP地址。
txqueuelen length
设置设备的传输队列的长度。对于具有高延迟(调制解调器链路,ISDN)的较慢设备,将其设置为小值是有用的,以防止快速批量传输过多地干扰诸如telnet之类的交互通信。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
04. 参考示例
4.1 查看处于激活状态的网络接口信息
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.76 netmask 255.255.254.0 broadcast 172.16.1.255
inet6 fe80::16e5:9e6b:b4d5:68de prefixlen 64 scopeid 0x20<link>
ether 00:50:56:26:d8:88 txqueuelen 1000 (Ethernet)
RX packets 6228371 bytes 1866155533 (1.7 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12697 bytes 4930072 (4.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 58611 bytes 3738994 (3.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58611 bytes 3738994 (3.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:d2:18:f4 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
4.2 所有配置的网络接口,不论其是否激活
[root@localhost ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.76 netmask 255.255.254.0 broadcast 172.16.1.255
inet6 fe80::16e5:9e6b:b4d5:68de prefixlen 64 scopeid 0x20<link>
ether 00:50:56:26:d8:88 txqueuelen 1000 (Ethernet)
RX packets 6228561 bytes 1866208151 (1.7 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12712 bytes 4933606 (4.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 58623 bytes 3739714 (3.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58623 bytes 3739714 (3.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:d2:18:f4 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:d2:18:f4 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
4.3 显示ens33网卡信息
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.76 netmask 255.255.254.0 broadcast 172.16.1.255
inet6 fe80::16e5:9e6b:b4d5:68de prefixlen 64 scopeid 0x20<link>
ether 00:50:56:26:d8:88 txqueuelen 1000 (Ethernet)
RX packets 6229282 bytes 1866403997 (1.7 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12777 bytes 4946850 (4.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.4 关闭网卡
[root@localhost home]# ifconfig ens33 down
[root@localhost home]#
- 1
- 2
4.5 启动网卡
[root@localhost home]# ifconfig ens33 up
[root@localhost home]#
- 1
- 2
4.6 添加ipv6地址
[root@localhost ~]# ifconfig ens33 add 33ffe:3240:800:1005::2/64
[root@localhost ~]#
- 1
- 2
4.7 删除ipv6地址
[root@localhost ~]# ifconfig ens33 del 33ffe:3240:800:1005::2/64
[root@localhost ~]#
- 1
- 2
4.8 修改mac地址
[root@localhost ~]# ifconfig ens33 hw ether 00:50:56:26:d8:88
[root@localhost ~]#
- 1
- 2
4.9 配置IP地址
[root@localhost ~]# ifconfig ens33 172.16.0.76
[root@localhost ~]#
- 1
- 2
4.10 配置IP地址的同时指定掩码
[root@localhost ~]# ifconfig ens33 172.16.0.76 netmask 255.255.254.0
[root@localhost ~]#
- 1
- 2
4.11 配置IP地址的同时指定掩码和广播地址
[deng@localhost ~]$ ifconfig ens33 172.16.0.76 netmask 255.255.254.0 broadcast 172.16.1.255
- 1
- 2
4.12 设置能通过的最大数据包大小为 1500 bytes
[root@localhost ~]# ifconfig ens33 mtu 1500
- 1
4.13 开启arp功能
[root@localhost ~]# ifconfig ens33 arp
[root@localhost ~]#
- 1
- 2
4.14 关闭arp功能
[root@localhost ~]# ifconfig ens33 -arp
[root@localhost ~]#
- 1
- 2
05. 总结
06. 附录
概述
功能简介
I3C(Improved Inter Integrated Circuit)总线是由MIPI Alliance开发的一种简单、低成本的双向二线制同步串行总线。
I3C是两线双向串行总线,针对多个传感器从设备进行了优化,并且一次只能由一个I3C主设备控制。相比于I2C,I3C总线拥有更高的速度、更低的功耗,支持带内中断、从设备热接入以及切换当前主设备,同时向后兼容I2C从设备。I3C增加了带内中断(In-Bind Interrupt)功能,支持I3C设备进行热接入操作,弥补了I2C总线需要额外增加中断线来完成中断的不足。I3C总线上允许同时存在I2C设备、I3C从设备和I3C次级主设备。
I3C接口定义了完成I3C传输的通用方法集合,包括:
- I3C控制器管理:打开或关闭I3C控制器。
- I3C控制器配置:获取或配置I3C控制器参数。
- I3C消息传输:通过消息传输结构体数组进行自定义传输。
- I3C带内中断:请求或释放带内中断。
基本概念
- IBI(In-Band Interrupt)
带内中断。在SCL线没有启动信号时,I3C从设备可以通过拉低SDA线使主设备发出SCL启动信号,从而发出带内中断请求。若有多个从机同时发出中断请求,I3C主机则通过从机地址进行仲裁,低地址优先相应。
- DAA(Dynamic Address Assignment)
动态地址分配。I3C支持对从设备地址进行动态分配从而避免地址冲突。在分配动态地址之前,连接到I3C总线上的每个I3C设备都应以两种方式之一来唯一标识:
1)设备可能有一个符合I2C规范的静态地址,主机可以使用此静态地址;
2)在任何情况下,设备均应具有48位的临时ID。 除非设备具有静态地址且主机使用静态地址,否则主机应使用此48位临时ID。
- CCC(Common Command Code)
通用命令代码,所有I3C设备均支持CCC,可以直接将其传输到特定的I3C从设备,也可以同时传输到所有I3C从设备。
- BCR(Bus Characteristic Register)
总线特性寄存器,每个连接到 I3C 总线的 I3C 设备都应具有相关的只读总线特性寄存器 (BCR),该寄存器描述了I3C兼容设备在动态地址分配和通用命令代码中的作用和功能。
- DCR(Device Characteristic Register)
设备特性寄存器,连接到 I3C 总线的每个 I3C 设备都应具有相关的只读设备特性寄存器 (DCR)。 该寄存器描述了用于动态地址分配和通用命令代码的 I3C 兼容设备类型(例如,加速度计、陀螺仪等)。
运作机制
在HDF框架中,I3C模块接口适配模式采用统一服务模式,这需要一个设备服务来作为I3C模块的管理器,统一处理外部访问,这会在配置文件中有所体现。统一服务模式适合于同类型设备对象较多的情况,如I3C可能同时具备十几个控制器,采用独立服务模式需要配置更多的设备节点,且服务会占据内存资源。相反,采用统一服务模式可以使用一个设备服务作为管理器,统一处理所有同类型对象的外部访问(这会在配置文件中有所体现),实现便捷管理和节约资源的目的。
相比于I2C,I3C总线拥有更高的速度、更低的功耗,支持带内中断、从设备热接入以及切换当前主设备,同时向后兼容I2C从设备。一路I3C总线上,可以连接多个设备,这些设备可以是I2C从设备、I3C从设备和I3C次级主设备,但只能同时存在一个主设备,一般为控制器本身。
图 1 I3C物理连线示意图
约束与限制
I3C模块当前仅支持轻量和小型系统内核(LiteOS-A),不支持在用户态使用。
使用指导
场景介绍
I3C可连接单个或多个I3C、I2C从器件,它主要用于:
-
与传感器通信,如陀螺仪、气压计或支持I3C协议的图像传感器等;
-
通过软件或硬件协议转换,与其他接口(如 UART 串口等)的设备进行通信。
接口说明
I3C模块提供的主要接口如表1所示,具体API详见//drivers/hdf_core/framework/include/platform/i3c_if.h。
表 1 I3C驱动API接口功能介绍
class="table-box">接口名 | 接口描述 |
---|---|
DevHandle I3cOpen(int16_t number) | 打开I3C控制器 |
void I3cClose(DevHandle handle) | 关闭I3C控制器 |
int32_t I3cTransfer(DevHandle handle, struct I3cMsg *msg, int16_t count, enum TransMode mode) | 自定义传输 |
int32_t I3cSetConfig(DevHandle handle, struct I3cConfig *config) | 配置I3C控制器 |
int32_t I3cGetConfig(DevHandle handle, struct I3cConfig *config) | 获取I3C控制器配置 |
int32_t I3cRequestIbi(DevHandle handle, uint16_t addr, I3cIbiFunc func, uint32_t payload) | 请求带内中断 |
int32_t I3cFreeIbi(DevHandle handle, uint16_t addr) | 释放带内中断 |
评论记录:
回复评论: