開源鴻蒙硬件方案領跑者觸覺智能
本文適用于Purple Pi OH在Android固件后串口的開發與使用。觸覺智能的Purple Pi OH鴻蒙開源主板,是華為Laval官方社區主薦的一款鴻蒙開發主板。
該主板主要針對學生黨,極客,工程師,極大降低了開源鴻蒙開發者的入門門檻,具有以下幾點優勢:
支持開源鴻蒙/Linux /Andriod 11/麒麟,兼容樹莓派 ;
四核A55,最高1.8G主頻 Mali G52-2EE GPU ;
支持OpenGL/CL/Vulkan/1T NPU/8MISP ;
支持TensorFlow/MXNet/PyTorch/Caffe ;
支持1*千兆以太網、3*USB2.0、1*USB3.0、3*UART、2*SPI、2*I2C、28*GPIO、1*MIPI DSI、1*HDMI ;
支持OpenHarmony3.2/4.0/4.1版本,開放SDK源代碼 ;
活躍的開發者社區, 更多牛人在線技術支持 ;
超小尺寸,極致性價比,只需249元 ;
1、介紹今天的文章主題是分享與探討關于Purple Pi OH開發板燒寫Android 11固件后串口的開發與使用。基于嵌入式開發的步驟,每個模塊的開發與使用前都需要測試其單獨工作時的狀態是否正常。因此我們通常上來就會直接使用USB TO TTL串口模塊(下文稱CH340)連接Purple Pi OH開發板的RX、TX引腳,然后使用PC機的串口調試助手對其進行收發數據。
2、PC直連Purple Pi OH測試串口
接下來我將詳細介紹PC通過CH340連接Purple Pi OH開發板后測試串口是否正常,若此方法您已使用并且還是無法打開串口,可以跳過此小段直接看后續的方法。
2.1
CH340驅動安裝
在連接CH340模塊至電腦時,很多新手甚至老鳥都會遇到很多奇奇怪怪的問題,基本最終的表現都是“設備管理器”中無法正常顯示CH340所在的端口,如下圖所示:
現在我來分享如何排查PC無法識別CH340的可能問題:
1.驅動未安裝:當“設備管理器“顯示未知設備并且圖標上帶有黃色感嘆號時,我們首先需要檢查我們的PC機是否安裝了CH340對應的驅動,安裝方法如下:
a)下載CH340驅動安裝軟件,一般在網上一檢索就可以下載到,我們雙擊打開后,頁面如下圖所示:
b) 安裝之前先點擊卸載,這是為了防止電腦之前有驅動殘留的數據,卸載完畢后我們再點擊安裝即可。
2. CH340模塊本身損壞:CH340插入USB口時,模塊本身會有紅色PWR燈亮起,若不亮可能是模塊本身損壞。
3. 擴展塢或PC主板USB口損壞:如果上述的方法無法解決,我們也應該考慮是否是擴展塢或者PC主板USB口損壞,此時我們需要更換USB口甚至更換另一臺PC機插入排查是不是這個問題。
4. 開發板連接著CH340導致無法識別:導致這種現象的原因有很多種,可能是您使用開發板給CH340提供了錯誤的供電,當供電不穩定或者電流不足有可能會導致CH340無法正常工作,因此我們通常只連接CH340和開發板的GND、Tx、Rx引腳。還有可能是開發板硬件資源與CH340有沖突導致無法識別。甚至是開發板電路設計問題,即沒有按照CH340規范來設計電路等原因。
2.2硬件連接
1.將CH340插入PC機USB口,打開“設備管理器”
2.在設備管理器列表中,找到“端口 (COM & LPT)”類別,展開它。你應該能看到一個標記為“USB-SERIAL CH340”(或類似名稱)的設備,旁邊會顯示它的 COM 端口號,比如 COM6。
若成功顯示,即代表CH340模塊正常。
3.接下來我們需要將CH340的RX和TX分別連接在PurplePiOH開發板的TX和RX腳上,在連接時可以根據背后絲印來判斷是否連接正確。PurplePiOH開發板串口節點/dev/ttyS0引腳位置,如下圖 所示:
至此我們的硬件連接就完成了,接下來可以開始軟件測試串口步驟。
2.3軟件測試
1.第一步我們首先需要進入PurplePiOH開發板的命令行終端,可以通過ADB連接到其中。ADB的使用方法可以參考觸覺智能官網產品資料中的4.2章節,鏈接如下:
https://industio.yuque.com/mdtih8/gyzv1h/uecrhad89197uh01?singleDoc#aOLed
2.第二步我們進入到命令行后,使用”su”切換為root身份,通過執行“dmesg | grep tty”命令查看系統啟動時識別到的串口設備,再使用stty命令檢查和設置串口參數,例如”stty –F /dev/ttyS0 115200”將串口節點波特率設置為115200.
3.第三步我們打開SSCOM或者類似的串口調試助手,選擇“設備管理器“中識別到的COM口,配置波特率為剛剛使用stty命令設置的波特率,同時設置數據位、停止位、校驗位以及流控制參數分別為8,1,None,None,隨后點擊打開串口,如下圖所示:
?
4.如果此時一切順利,我們便可以通過SSCOM與PurplePiOH開發板互相收發串口信息,發送數據使用指令”echo “test” > /dev/ttyS0”,查看開發板接收到的數據使用”cat /dev/ttyS0”,此時SSCOM發送數據到開發板,開發板會將串口數據回顯至SSCOM,如下圖所示:
?
2.4其他常見問題
1.數據呈現亂碼或者”\0\0\0…”:波特率設置不對,使用stty修改開發板串口節點波特率后再次嘗試。
2.怎么查看串口節點:通過命令”ls /dev/tty*”查看設備串口節點,通過硬件規格書或者使用手冊查詢開發板串口引腳或端口位置。
3.設備節點無法操作:通過”ls –l /dev/tty*”查看是否權限不足,通過su切換管理員后使用”chmod 666 /dev/ttyS0“修改文件讀寫權限。
4.用戶使用自己的app無法打開串口節點:先查看自己的app是否在Android11的版本被支持,也有可能app不掃描這個節點名稱,可以重新找一個串口助手查看是app問題還是串口節點問題(可以使用Google開源SerialPort)。或者查看串口是否被占用,嘗試打開其他串口設備節點。
3、Android 11 SELinux功能
若上述操作無法解決串口無法被訪問的問題,我們就需要查看SELinux是否對我們的訪問做了限制,接下來我將分享SELinux的概念和處理方式。
3.1SELinux簡介
在基于Android的設備上,SELinux(Security-Enhanced Linux)是一種安全模塊,用于強化訪問控制策略。SELinux可以通過強制訪問控制(MAC)來限制應用程序和系統進程對系統資源的訪問。
3.2SELinux阻止串口被訪問的情況
1.沒有正確的SELinux政策:如果SELinux政策沒有為訪問特定串口的進程或應用程序明確授權,那么訪問會被阻止。需要相應的SELinux上下文或標簽(如userial_device:s0)允許對應用程序或進程訪問串口。
2.SELinux處于Enforcing模式:當SELinux處于Enforcing模式時,它會強制執行所有的安全策略,并阻止任何違反這些策略的行為。如果串口設備的SELinux標簽或訪問控制列表(ACL)配置不正確,任何嘗試訪問這些設備的操作都會被阻止。此時我們可以使用“getenforce“命令直接檢查SELinux的模式。
3.設備文件權限不足:串口通常作為設備文件(如/dev/ttyS0)存在于文件系統中。如果這些文件的SELinux標簽設置不允許特定的訪問(例如,某個應用需要讀寫權限但僅被授予了讀權限),則訪問會被拒絕。
3.3解決SELinux串口訪問問題
要解決由SELinux導致的串口訪問問題,可以采取以下步驟:
1.檢查SELinux狀態:使用“getenforce“命令查看SELinux的當前模式。如果是Enforcing,系統會強制執行所有策略。
2.查看和修改SELinux政策:使用”audit2allow”查看由于SELinux政策被拒絕的相關日志,以了解為什么訪問被拒絕。根據需要調整或創建新的SELinux政策。這可能需要深入了解SELinux政策語言,并使用如semanage和semodule等工具。
3.臨時切換到Permissive模式:作為臨時解決方案,可以將SELinux設置為Permissive模式,這樣SELinux不會阻止任何操作,但會記錄所有違反政策的行為。可以使用“setenforce 0“命令來實現,如下圖所示:
4.于安卓源碼中關閉:修改安卓源碼中device/rockchip/common/BoardConfig.mk 的BOARD_SELINUX_ENFORCING := false;
5.確保有適當的設備文件權限:確保應用或進程有正確的權限來訪問串口設備文件。使用ls -l查看設備文件的權限和所有權。
-
Android
+關注
關注
12文章
3936瀏覽量
127403 -
串口
+關注
關注
14文章
1554瀏覽量
76516 -
開發板
+關注
關注
25文章
5050瀏覽量
97471
發布評論請先 登錄
相關推薦
評論