\chapter{硬件接口}
\section{网络}
系统里有两个网口，一个是从 SOC 直出的，一个从 PCIE 接 RTL81111芯片出来的网口。他们的IP地址配置文件是 /etc/network/interfaces.d 下的
eth0 和 eth1。其对应关系如下表所示：

\begin{table}[H]
    \centering
\begin{tabular}{ccc}
    \toprule
    网络接口 & 驱动 & 默认地址  \\
    \midrule
    \texttt{eth0} & \texttt{\small r8168}   & \texttt{\small 192.168.2.80} \\
    \texttt{eth1} & \texttt{\small st\_gmac}   & \texttt{\small 192.168.1.80} \\
    \bottomrule
\end{tabular}
\caption{网口对应关系}
\end{table}

\section{video}
从 HDMI 输入的视频数据，在 Linux 系统里从  /dev/videoX 的设备中获取出来。可以用 多媒体框架 gstreamer 来做测试。
用 gstreamer 的  gst-launch-1.0 可以用来控制 video 的视频数据。

这里以 板子上用 gstreamer 提供 rtp 服务，在电脑的 windows 端用 VLC 程序来实现视频的播放为例，展示一下 video 功能。
\begin{enumerate} [(1)]
    \item 在板子上启动 rtp 服务：
    \begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay pt=96 \
    ! udpsink host=192.168.1.17 port=5000
    \end{minted}
    这里假定电脑的IP地址是：192.168.1.17。这根据实际情况修改。
    \item 在电脑上新建一个 sdp 文件（hdmi.sdp）\footnote{ SDP 的完整定义，请查看 rfc4566}，内容如下：
    \begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
m=video 5000 RTP/AVP 96

a=rtpmap:96 H264
        
a=framerate:30
        
c=IN IP4 192.168.1.17
    \end{minted}
    这里的 5000 是端口号， 192.168.1.17 是 IP 地址，要与上面命令中的参数保持一致。
    \item 在电脑上用 VLC 程序打开 hdmi.sdp 文件。
    \begin{figure}[H]
        \centering
        \includegraphics[width=0.8\textwidth]{vlc}
        \caption{VLC 播放 video}
    \end{figure}
\end{enumerate}

\begin{comment}
\begin{minted}[bgcolor=lightgray!30,fontsize=\tiny]{bash}
gst-launch-1.0 v4l2src device=/dev/video0  ! video/x-raw,width=1920,height=1080,framerate=30/1 \
    ! timeoverlay ! tee name=vsrc vsrc. ! queue ! videoconvert \
    ! ximagesink vsrc. ! queue ! x264enc tune=zerolatency \
    ! rtph264pay name=pay0 pt=96
\end{minted}

gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay ! udpsink host=192.168.1.10 port=5000

在 windows 端用 vlc 打开 \verb+rtsp://<目标IP>:8554/test+ 可以拉取视频数据。

\noindent 发送端：
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000
\end{minted}
接收端：
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
gst-launch-1.0 -v udpsrc port=5000 ! rtpmp2tdepay ! decodebin ! autovideosink
\end{minted}
\end{comment}