前 言
1 案例功能
2 案例測試
2.1 網絡功能測試
2.1.1 網絡功能測試
2.1.2 網絡帶寬測試
2.2 短信功能測試
2.3 語音通話功能測試
2.4 擷取經緯度功能測試
2.5 5G子產品複位測試
3 案例編譯
4 關鍵代碼說明
前 言
本文主要基于我司TL64x-EVM評估闆 + 移遠RM500Q 5G子產品,驗證PCIe 5G網絡通信功能。本文檔适用開發環境:
Windows開發環境:Windows 7 64bit、Windows 10 64bit
虛拟機:VMware15.5.5
Linux開發環境:Ubuntu18.04.4 64bit
U-Boot:U-Boot-2021.01
Kernel:Linux-5.10.65
Linux Processor SDK:ti-processor-sdk-linux-rt-am64xx-evm-08.01.00.39
硬體裝置:5G子產品(移遠RM500Q)、中國電信5G SIM卡
評估闆簡介
創龍科技TL62x-EVM是一款基于TI Sitara系列AM62x單/雙/四核ARM Cortex-A53 + 單核ARM Cortex-M4F異構多核處理器設計的高性能低功耗工業評估闆,由核心闆和評估底闆組成。處理器ARM Cortex-A53(64-bit)主處理單元主頻高達1.4GHz,ARM Cortex-M4F實時處理單元主頻高達400MHz,采用16nm最新工藝,具有可與FPGA高速通信的GPMC并口,同時支援雙屏異顯、3D圖形加速器。核心闆經過專業的PCB Layout和高低溫測試驗證,穩定可靠,可滿足各種工業應用環境。
評估闆接口資源豐富,引出3x Ethernet(兩路支援TSN)、3x CAN-FD、9x UART、多路DI/DO、GPMC、USB、MIPI、LVDS LCD、TFT LCD、HDMI等接口,闆載WIFI子產品,支援4G子產品,可選配外殼直接應用于工業現場,友善使用者快速進行産品方案評估與技術預研。
評估闆正面圖
前
案例功能
PCIe 5G通信案例位于産品資料“4-軟體資料\Demo\module-demos\pcie_5g_test\”目錄下,目錄結構如下表:
表 1
目錄 | 描述 |
bin | 存放程式可執行檔案 |
driver | 存放驅動源碼和鏡像檔案 |
src | 存放程式源碼 |
tool | 存放Python腳本工具 |
案例包含4個測試程式和1個Python腳本,分别實作如下功能:
- quectel-CM:實作網絡功能。5G子產品官方提供的自動撥号上網程式,通過對GobiNet驅動生成的"/dev/qcqmiX"裝置節點進行操作,能自動設定網絡連接配接參數、擷取IP和DNS等,如需持續使用上網功能,需保持該程式在背景運作。
- rm500q_phone_call:實作語音通話功能。
- rm500q_send_sms:實作發送短信功能。
- rm500q_get_location:實作擷取經緯度功能。
- speedtest.py:基于Python開發的腳本程式,利用了speedtest.net的服務來測量出上下行的寬帶,并根據機房離測速伺服器的實體距離來列出測速伺服器。亦可針對某一伺服器進行測速,同時生成一個URL用于分享測速結果。
案例測試
請将5G子產品(移遠RM500Q)上的天線接口ANT0、ANT1和ANT3連接配接5G天線,ANT2_GNSSL連接配接GPS天線,将5G子產品安裝至評估闆M.2 PCIe(CON17)插槽,将中國電信5G SIM卡插入5G Micro SIM卡槽(缺口方向朝外)。
圖 1
圖 2 5G(移遠RM500Q)子產品
請確定5G天線和GPS天線(GPS字樣面朝上)已正确安裝,然後将GPS天線放置在開闊場合(室内測試GPS功能可能會導緻經緯度擷取失敗)。
将本案例bin目錄下的程式可執行檔案、"driver/pcie/image/"目錄下的驅動鏡像檔案、tool目錄下的腳本檔案拷貝至評估闆檔案系統。評估闆上電後,LED13将被點亮。
網絡功能測試
執行如下指令,加載驅動檔案。并運作5G子產品官方提供的上網撥号程式。
Target# insmod pcie_mhi.ko mhi_mbim_enabled=1
Target# ./quectel-CM &
圖 3
網絡功能測試
上網撥号程式運作成功後,執行如下指令測試網絡通信功能。
Target# ping www.baidu.com
圖 4
網絡帶寬測試
保證上網撥号程式在背景運作情況下,通過speedtest.py腳本測試網絡帶寬。腳本使用方法說明:
- 測試下載下傳與上傳的速度,無需帶參數,執行指令:./speedtest.py
- 測試下載下傳與上傳的速度(結果以位元組來表示),執行指令:./speedtest.py --bytes
- 僅需顯示Ping延遲、下載下傳速度和上傳速度,執行指令:./speedtest.py --simple
- 列出speedtest.net所有的伺服器距離主機的實體距離,機關是千米(km),執行指令:./speedtest.py --list
- 對指定的伺服器進行測速(使用"./speedtest.py --list"指令擷取伺服器ID),執行指令:./speedtest.py --server [server ID]
5G模式測試速率
在腳本所在目錄下,執行如下指令,進行測試。
Target# ./speedtest.py
圖 5
由上圖可知,下行速率為46.04Mbit/s,上行速率為33.01Mbit/s,實時性Ping為109.495ms。
備注:5G信号實測帶寬與測試點信号覆寫強度有關,如上測試資料僅供參考。
執行如下指令,使用AT指令查詢信号強度。由下圖可見,目前模式為“NR5G-SA”,信号強度值分别為“-84,-85,-85”,信号強度越接近-44,表示信号越強。
Target# microcom /dev/mhi_DUN
AT+QENG="servingcell"
圖 6
圖 7
4G模式測試速率
将5G子產品僅保留任意1根5G天線連接配接,即為4G模式,本次操作僅保留ANT0天線。在腳本所在目錄下,執行如下指令進行測試。
Target# insmod pcie_mhi.ko mhi_mbim_enabled=1
Target# ./quectel-CM &
Target# ./speedtest.py
圖 8
圖 9
由上圖可知,下行速率為20.13Mbit/s,上行速率為14.19Mbit/s,實時性Ping為139.855ms。
備注:4G信号實測帶寬與測試點信号覆寫強度有關,如上測試資料僅供參考。
執行如下指令,使用AT指令查詢信号強度。由下圖可見,目前模式為LTE,信号強度值分别為“-71,-75,-74”,信号強度越接近-44,表示信号越強。
Target# microcom /dev/mhi_DUN
AT+QENG="servingcell"
圖 10
圖 11
短信功能測試
測試指令:./rm500q_send_sms <device> <phonenumber> <text>
指令說明:<device>為裝置節點,以"ls /dev/ttyUSB*"指令檢視結果為準,重新開機評估闆後可能會變化。<phonenumber>為發送短信目标手機号。<text>為短信發送内容,短信内容字元之間不可有空格,否則會提示錯誤。
程式說明:設定短信發送模式,并發送短信内容。
進入評估闆檔案系統,在rm500q_send_sms檔案所在路徑下執行如下指令測試短信功能是否正常。
Target# ./rm500q_send_sms /dev/ttyUSB2 191******** www.tronlong.com
圖 12
圖 13
語音通話功能測試
測試指令:./rm500q_phone_call <device> <phonenumber>
指令說明:<device>為裝置節點,以"ls /dev/ttyUSB*"指令檢視結果為準,重新開機評估闆後可能會變化。<phonenumber>為撥打目标手機号。
程式說明:測試語音通話功能。
進入評估闆檔案系統,在rm500q_phone_call檔案所在路徑下執行如下指令測試語音通話功能是否正常。
Target# ./rm500q_phone_call /dev/ttyUSB2 191********
圖 14
圖 15
擷取經緯度功能測試
測試指令:./rm500q_get_location <device> <timeout>
指令說明:<device>為裝置節點,以"ls /dev/ttyUSB*"指令檢視結果為準,重新開機評估闆後可能會變化。<timeout>為等待傳回經緯度資訊的時間(機關為秒)。
程式說明:通過GPS天線擷取經緯度資訊,并列印結果。
進入評估闆檔案系統,在rm500q_get_location檔案所在路徑下執行如下指令測試GPS定位功能是否正常。
Target# ./rm500q_get_location /dev/ttyUSB2 1
圖 16
如下圖,若出現經緯度資訊擷取失敗、逾時,請檢查天線是否接好,并確定處于室外開闊場地進行測試。
圖 17
5G子產品複位測試
評估闆支援對5G子產品進行單獨複位功能。請執行如下指令,初始化對應GPIO。
Target# echo 380 > /sys/class/gpio/export
Target# echo out > /sys/class/gpio/gpio380/direction
Target# echo 381 > /sys/class/gpio/export
Target# echo out > /sys/class/gpio/gpio381/direction
圖 18
執行如下指令,控制5G子產品掉電。
Target# echo 0 > /sys/class/gpio/gpio381/value
圖 19
執行如下指令,配置5G子產品複位引腳處于低電平。
備注:在硬體設計上,當配置gpio380輸出“1”時,對應複位引腳為低電平。
Target# echo 1 > /sys/class/gpio/gpio380/value
圖 20
執行如下指令,根據5G子產品上電時序要求,拉高複位引腳,再控制5G子產品上電。
Target# echo 0 > /sys/class/gpio/gpio380/value
Target# usleep 50000
Target# echo 1 > /sys/class/gpio/gpio381/value
圖 21
圖 22
案例編譯
驅動編譯
将案例"driver\pcie\src\"目錄下的驅動源碼Quectel_Linux_PCIE_MHI_Driver_V1.3.1.zip拷貝至Ubuntu工作目錄下,執行如下指令進行解壓。
Host# unzip Quectel_Linux_PCIE_MHI_Driver_V1.3.1.zip
圖 23
執行如下指令,進入pcie_mhi目錄,編譯驅動源碼。
Host# cd pcie_mhi
Host# export PATH=$HOME/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin:$PATH
Host# make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- KDIR=/home/tronlong/AM64x/Kernel/Linux-5.10.65
備注:"/home/tronlong/AM64x/Kernel/Linux-5.10.65"為Linux核心源碼路徑,編譯驅動前,需先完成核心編譯。
圖 24
編譯完成,在目前目錄生成驅動程式pcie_mhi.ko。
圖 25
程式編譯
将案例src目錄下的程式源碼拷貝至Ubuntu工作目錄下,執行如下指令加載SDK環境并進行編譯。
Host# source /home/tronlong/ti-processor-sdk-linux-rt-am64xx-evm-08.01.00.39/linux-devkit/environment-setup
Host# make CROSS_COMPILE=aarch64-none-linux-gnu-
圖 26
編譯完成後,在目前目錄生成測試程式可執行檔案。
關鍵代碼說明
rm500q_send_sms.c
打開并設定序列槽。
圖 27
設定文本模式。
圖 28
發送短信。
圖 29
rm500q_phone_call.c
打開并初始化序列槽。
圖 30
發送語音通話指令。
圖 31
rm500q_get_location.c
打開并設定序列槽。
圖 32
查詢GPS功能是否開啟。
圖 33
開啟GPS功能。
圖 34
若GPS功能預設已開啟,先關閉GPS以清除定位資料,再重新開機GPS。
圖 35
擷取經緯度資訊并列印。
圖 36