

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 與 Ingenic T31 整合
<a name="quick-start-t31"></a>

**注意**  
AWS 不以任何方式為此晶片組背書，也不保證整合可以正常運作。本指南是以 Amazon Kinesis Video Streams 團隊的測試為基礎，旨在協助客戶設定裝置。

請依照這些程序，在 Ingenic T31 硬體上使用 WebRTC 設定 Amazon Kinesis Video Streams。

## 下載程式碼
<a name="t31-create"></a>

1. 設定建置目錄。

   在本教學課程中，請在 `Downloads` 資料夾中建立名為 `ingenic`的目錄。

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

1. 將下列儲存庫複製到您的新目錄：https：//[https://github.com/aws-samples/amazon-kinesis-video-streams-media-interface](https://github.com/aws-samples/amazon-kinesis-video-streams-media-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. 載入 `Ingenic-T31-app-build.tar.gz` docker 映像。

   ```
   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. 在主機機器上，將靜態二進位檔複製到微型 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)，並將其放在微型 SD 卡中做為 `cert.pem`。

1. 將微型 SD 卡放入微型 SD 卡插槽。

## 連線至裝置
<a name="t31-connect"></a>

1. 將序列連接埠工具連接至電路板，如下所示。  
![](http://docs.aws.amazon.com/zh_tw/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`，請仔細檢查主機板和主機機器之間的所有實體連線。

## 將微型 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)
+ [AWS 管理主控台](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)。

### 如何卸載微型 SD 卡？
<a name="q4"></a>

若要卸載微型 SD 卡，請使用 命令：

```
umount /tmp/sdcard
```