

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 与 Ingenic T31 集成
<a name="quick-start-t31"></a>

**注意**  
Amazon 不以任何方式认可该芯片组，也不保证集成会正常运行。本指南基于亚马逊 Kinesis Video Streams Video Streams 团队的测试，旨在帮助客户设置设备。

按照以下步骤在 Ingenic T31 硬件上使用 WebRTC 设置亚马逊 Kinesis Video Streams。

## 下载代码
<a name="t31-create"></a>

1. 设置生成目录。

   在本教程中，在`Downloads`文件夹`ingenic`中创建一个名为的目录。

   ```
   mkdir ~/Downloads/{{ingenic}}
   cd ~/Downloads/{{ingenic}}
   ```

1. 将以下存储库克隆到您的新目录中：[https://github.com/aws-samples/amazon-kinesis-video-streams-media-](https://github.com/aws-samples/amazon-kinesis-video-streams-media-interface) interface。

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-video-streams-media-interface.git
   ```

## 设置构建环境
<a name="t31-set-up"></a>

1. 获取包含工具链的预构建的 docker 镜像并将其放入文件夹。`ingenic`
**重要**  
工具链可能因主板和 CPU 类型而异。请向供应商查询正确的工具链。

1. 加载 d `Ingenic-T31-app-build.tar.gz` ocker 镜像。

   ```
   docker load --input ./Ingenic-T31-app-build.tar.gz
   ```

   预期输出：

   ```
   580272b5675c: Loading layer [==================================================>]  1.666GB/1.666GB
   Loaded image ID: sha256:76d41ef9b2f53ad3f2a33f00ae110df3d1b491378a4005e19ea989ce97e99bc1
   ```

   记下`Image Id`. 下一步你需要这个。

1. 运行以下命令将主机上的当前目录 (`~/Downloads/ingenic`) 挂载到 Docker 容器内的`/ingenicMappedFolder`目录中。

   此命令还通过终端会话在交互模式下运行容器。你将被放到容器内的 Bash shell 中，它允许你直接执行命令。

   ```
   docker run \
      -v `pwd`:/ingenicMappedFolder \
      -it 76d41ef9b2f53ad3f2a33f00ae110df3d1b491378a4005e19ea989ce97e99bc1 \
      /bin/bash
   ```

1. 查看该`/ingenicMappedFolder`文件夹的内容以确认绑定挂载卷是否成功。

   **提示：**

   ```
   ls /ingenicMappedFolder
   ```

   **响应：**

   ```
   AWS-Solution-Remote-Diagnostic-Media-Interface Ingenic-T31-app-build.tar.gz
   ```

1. 验证 docker 容器是否设置了环境变量：

   **提示：**

   ```
   env
   ```

   **响应：**

   ```
   CC=mips-linux-gnu-gcc
   CXX=mips-linux-gnu-g++
   PATH=/mips-gcc540-glibc222-64bit-r3.3.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
   ```

1. 验证 docker 容器是否包含工具链和 Ingenic SDK。它应该位于`/ingenic-sdk`。

   **提示：**

   ```
   ls /
   ```

   **响应：**

   ```
   bin   {{ingenic-sdk}}          libx32                             proc  sys
   boot  {{ingenicMappedFolder}}  media                              root  tmp
   dev   lib                  mips-gcc540-glibc222-64bit-r3.3.0  run   usr
   etc   lib32                mnt                                sbin  var
   home  lib64                opt                                srv
   ```

## 使用 WebRTC 应用程序构建 Amazon Kinesis Video Streams
<a name="t31-build-app"></a>

1. 键入以下内容：

   ```
   cd /ingenicMappedFolder/AWS-Solution-Remote-Diagnostic-Media-Interface
   cp -r /ingenic-sdk/* \
       /ingenicMappedFolder/amazon-kinesis-video-streams-media-interface/3rdparty/T31/
   export LDFLAGS=-Wl,--dynamic-linker=/lib/ld.so.1
   mkdir build
   cmake -B ./build -DBOARD=T31 -DCMAKE_BUILD_TYPE=Release -DBUILD_WEBRTC_SAMPLES=ON \
       -DBUILD_KVS_SAMPLES=ON -DBUILD_SAVE_FRAME_SAMPLES=ON
   cmake --build ./build --config Release
   ```

   该`kvswebrtcmaster-static`应用程序位于`/ingenicMappedFolder/AWS-Solution-Remote-Diagnostic-Media-Interface/build/samples/webrtc/`。

1. 运行以下命令退出 docker 容器：

   ```
   exit
   ```

1. 在您的主机上，验证`kvswebrtcmaster-static`应用程序是否存在。

   ```
   ls ~/Downloads/ingenic/AWS-Solution-Remote-Diagnostic-Media-Interface/build/samples/webrtc/kvswebrtcmaster-static
   ```

## 将应用程序上传到设备
<a name="t31-upload-app"></a>

1. 在您的主机上，将静态二进制文件复制到 micro SD 卡。

   ```
   cp ~/Downloads/ingenic/AWS-Solution-Remote-Diagnostic-Media-Interface/build/samples/webrtc/kvswebrtcmaster-static /Volumes/IngenicSDCard
   ```

1. 下载这个 [.pem 文件](https://www.amazontrust.com/repository/AmazonRootCA1.pem)并将其放入 micro SD 卡中，如。`cert.pem`

1. 将 micro SD 卡放入 micro SD 卡插槽中。

## Connect 连接到设备
<a name="t31-connect"></a>

1. 将串行端口工具连接到主板，如下所示。  
![](http://docs.amazonaws.cn/kinesisvideostreams-webrtc-dg/latest/devguide/images/serial-port.png)

1. 将以太网和电源线插入设备。红色 LED 应亮起。

1. 将您的主机连接到串行端口工具上的 micro-USB 插槽。

1. 检查连接的设备：

   ```
   ls /dev/tty.*
   ```
**注意**  
如果您有多个 TTY 设备，请确定哪个 TTY 设备是 Ingenic 主板。断开设备与主机的连接，`ls`然后重新运行。比较命令输出并找出差异。

1. 使用`screen`或其他串行端口工具（例如 Tera Term）连接到它。将波特率设置为 115200。

   ```
   screen /dev/tty.usbserial-{{XXXXXXX}} 115200
   ```

1. 根据主板的状态确定相应的操作：
   + 如果 shell 会话以结尾`#`，则启动已中断。使用`boot`命令启动 Linux 操作系统，然后继续执行此步骤的其余部分。
   + 如果 shell 会话要求您登录，请键入您的密码。
   + 如果屏幕为空白，请按 Enter。
   + 如果屏幕显示错误`Cannot exec '/dev/tty.usbserial-XXXXXXX': No such file or directory`，请仔细检查主板和主机之间的所有物理连接。

## 将 micro SD 卡安装在主板上
<a name="t31-mount-card"></a>

1. 创建目录：
**注意**  
在这个例子中，我们使用的是`sdcard`。

   ```
   mkdir /tmp/sdcard
   ```

1. 键入以下内容将 micro SD 卡安装到文件夹：

   ```
   mount /dev/mmcblk0p1 /tmp/sdcard
   ```

1. 查看该文件夹的内容：

   ```
   ls /tmp/sdcard
   ```

## 运行应用程序
<a name="t31-run-app"></a>

1. 导航到已安装的目录：

   ```
   cd /tmp/sdcard
   ```

1. 从董事会导出您的凭证和其他信息：

   ```
   export AWS_ACCESS_KEY_ID=ID
   export AWS_SECRET_ACCESS_KEY=key
   export AWS_DEFAULT_REGION=us-west-2
   export AWS_KVS_CACERT_PATH=`pwd`/cert.pem
   ```

1. 运行应用程序：

   ```
   ./kvswebrtcmaster-static {{channel-name}}
   ```

## 查看媒体
<a name="t31-view-media"></a>

要查看媒体，请以查看**者**身份连接到信令频道。有关示例，请参阅以下部分：
+ [JavaScript](kvswebrtc-sdk-js.md)
+ [Amazon Web Services 管理控制台](kvswebrtc-sdk-js.md#sdk-js-stream-console)
+ [Android](kvswebrtc-sdk-android.md)
+ [iOS](kvswebrtc-sdk-ios.md)

## 问题排查
<a name="t31-troubleshooting"></a>

本节包含我们遇到的常见问题和问题。

### 当我将主板连接到我的主机并运行时`ls /dev/tty.*`，设备不会出现。
<a name="q1"></a>

验证连接和所有电线是否安全，以及设备是否已开机。检查 USB-to-TTY设备上的所有 LED 指示灯是否亮起。如果您仍然遇到问题，请联系供应商以进一步诊断与主板连接的问题。

### 应用程序无法连接到信令
<a name="q2"></a>

如果收到以下错误之一：

`SSL error: certificate is not yet valid` 

**或者**

```
2024-09-19 08:56:34.920 WARN    lwsHttpCallbackRoutine(): Received client http read response:  { "message": "Signature expired: 20240919T085634Z is now earlier than 20240919T155135Z (20240919T155635Z - 5 min.)" }
```

这意味着 Ingenic 主板上的时间不正确。通过运行 date 命令进行验证。根据供应商的说明设置时间，然后再次运行应用程序。

### 即使文件在那里，应用程序也无法启动
<a name="q3"></a>

如果错误如下所示：

```
-sh ./kvswebrtcmaster-static: not found
```

这意味着操作系统无法找到应用程序的 ELF 标头中列出的依赖项。例如，`libc`在设备上。

通常，这表示所使用的工具链与开发板不兼容，或者链接器标志 (`LDFLAGS`) 未正确指向所需的库路径，从而导致运行时依赖关系未解决。

确保正确的工具链（`uclibc`与其版本对比）`glibc`与主板上的软件相匹配，并`LDFLAGS`根据其进行[使用 WebRTC 应用程序构建 Amazon Kinesis Video Streams](#t31-build-app)设置。

### 如何卸载 micro SD 卡？
<a name="q4"></a>

要卸载 micro SD 卡，请使用以下命令：

```
umount /tmp/sdcard
```