先给一句总览:
QNX 网络全链路 = 硬件 → 网卡驱动(.so) → io‑pkt/io‑sock(用户态协议栈+网络管理器)→ 网络服务进程 → 应用 Socket 。
和 Android 最大区别:QNX 是微内核,协议栈和驱动都在用户态,内核只做 IPC/调度 ,没有"内核协议栈 + HAL + Framework"那一套,而是 io‑pkt/io‑sock 大一统。
下面按「从下到上全链路」拆成模块,并和 Android 做对照,方便你类比理解。
一、硬件层(和 Android 一样)
- 以太网 PHY/MAC、Wi‑Fi 芯片、车载以太网(车载 SoC 常见)
- 总线:PCIe、SDIO、USB、I2C、SPI
- 典型设备:eMMC、Eth、Wi‑Fi、BT、Modem(4G/5G)
二、微内核(QNX Neutrino,和 Linux 内核完全不同)
QNX 内核 ≠ Linux 内核:
- 极小微内核
procnto:只做进程调度、IPC、中断、内存管理 - 不包含网络协议栈、不包含网卡驱动 ,全部在用户态进程/共享库实现
- 网络驱动/协议栈挂了,内核不崩,可单独重启网络
对照 Android:
Android 是「宏内核 Linux + 用户态 HAL/Framework」;
QNX 是「微内核 + 用户态网络子系统」。
三、网卡驱动层(用户态 .so 驱动,非内核驱动)
- 驱动形态:共享库
.so,命名通常devnp‑xxx.so(device network protocol) - 典型驱动:
- 以太网:
devnp‑em.so(QNX 自带)、devnp‑rtl8168.so(Realtek)、devnp‑dwc.so(DesignWare,车载常用) - Wi‑Fi:
devnp‑wlan.so、devnp‑qcom.so(高通)、devnp‑mtk.so(联发科) - 虚拟网卡:
devnp‑tun.so、devnp‑tap.so、devnp‑dummy.so
- 以太网:
- 加载方式:由 io‑pkt / io‑sock 动态
mount加载,无需重编译内核
对应 Android:
Android 是「内核 .ko 驱动 → 内核协议栈」;
QNX 是「用户态 .so 驱动 → 用户态协议栈」。
四、网络核心:io‑pkt(传统)/ io‑sock(新一代,QNX 8.0+)
这是 QNX 网络最核心、最独特 的一层,相当于「Linux 内核协议栈 + HAL + netd + wpa_supplicant」的集合,全在用户态。
1)io‑pkt(QNX 7.x 及更早,主流车载仍大量在用)
-
进程名:
io‑pkt‑v4‑hc(IPv4)、io‑pkt‑v6‑hc(IPv6) -
核心功能:
- 包转发/多路复用:所有网卡驱动、协议模块都挂在它上面
- TCP/IP 协议栈(NetBSD 移植):IP、TCP、UDP、ICMP、ARP、路由、NAT、防火墙(ipfilter)
- 二层交换/桥接:VLAN、bridge、bonding
- 零拷贝:高性能,适合车载实时场景
-
模块形态:协议/驱动都是
.so,动态加载:bashio-pkt-v4-hc -d devnp-em.so -p tcpip.so mount -T io-pkt devnp-rtl8168.so
2)io‑sock(QNX 8.0+,新一代高性能栈)
- 进程名:
io‑sock - 定位:替代 io‑pkt,更轻量、更低延迟、专为车载/实时优化
- 特点:
- 只支持以太网 (含 USB/PCIe 转以太网),不支持 Wi‑Fi/蓝牙原生
- 接口:
libsockets.so.4,兼容 POSIX socket,应用层无感 - 性能:比 io‑pkt 更低延迟、更高吞吐,适合自动驾驶/车控网络
对照 Android
- Android:
内核协议栈←→netd←→wpa_supplicant←→HAL - QNX:io‑pkt/io‑sock 一个进程全搞定,无内核协议栈,无独立 HAL 层
五、网络服务进程(用户态,可选/配套)
在 io‑pkt/io‑sock 之上,提供配置/控制/高层功能,类似 Android 的 netd/wpa_supplicant/dhcpcd,但更轻量、分散:
- ifconfig / ip:网卡 IP、掩码、网关配置
- dhcpcd / dhclient:DHCP 客户端(获取 IP/DNS)
- wpa_supplicant:Wi‑Fi 认证/连接(和 Linux 一样,对接 io‑pkt 的 Wi‑Fi 驱动)
- pppd / pppoe:拨号、VPN、3G/4G 数据
- dnsmasq:热点 DHCP/DNS(车载共享网络)
- route:路由表管理
- iptables / ipfilter:防火墙、NAT、流量过滤(io‑pkt 内置,也可独立工具)
六、应用层(POSIX Socket,和 Linux/Android 兼容)
- 应用直接调用 POSIX socket API :
socket()、bind()、connect()、send()、recv() - 无 Android 式
ConnectivityService/WifiManager,应用直接通过 socket/工具控制网络 - 车载典型应用:
- 车机:浏览器、导航、多媒体(TCP/UDP)
- 诊断:UDS、DoIP(以太网诊断)
- 车控:CAN/LIN over Ethernet(SOME/IP)
七、QNX 全链路一句话串讲(对应 Android 对照)
QNX 链路
硬件网卡 → 用户态驱动(.so) → io‑pkt/io‑sock(用户态TCP/IP+转发+控制)→ 网络服务进程(dhcpcd/wpa_supplicant) → 应用Socket
Android 链路(对照)
硬件网卡 → 内核驱动(.ko) → 内核TCP/IP → HAL → netd/wpa_supplicant → Framework(ConnectivityService) → 应用API
八、打通 QNX 全链路,你需要掌握的模块清单
- 硬件:Eth/Wi‑Fi/车载以太网 PHY/MAC、总线(PCIe/USB)
- 微内核:procnto、IPC、中断、内存(不用改内核,但要懂机制)
- 网卡驱动:devnp‑xxx.so 结构、加载、和 io‑pkt 交互
- 核心栈:io‑pkt(必学)、io‑sock(QNX8+)、TCP/IP、路由、NAT、桥接
- 服务进程:ifconfig、dhcpcd、wpa_supplicant、pppd、dnsmasq
- 应用开发:POSIX socket、SOME/IP、DoIP、车载网络协议
如果你愿意,我可以帮你画一张 QNX vs Android 网络架构对比图,把每层对应关系标清楚,一眼看懂差异。要不要?
