【SemeDrive】【X9HP】【PTG4.6】解決 I2C 無法在 mp 和 ap2 同時使用問題

前言

以下內容說明 X9HP PTG4.6 如何在 mp 和 ap2 同時使用 I2C16。

一、問題詳述

現 mp 和 ap2 都需要使用 I2C16,兩個 domain 都寫了驅動。在 mp 使用 i2cdump I2C16 時無反應,隔很久才出來一串字符,通訊不正常。

二、問題分析

1. I2C16 在 AP2 dts 里使能 okay 並成功加載了驅動,此時在 MP 使用 I2C16,系統正常運行沒有出現 panic,說明不是資源訪問權限問題。
2. 兩個 domain 不能同時訪問同一個硬體資源,AP2 啟動加載 I2C 驅動時已經對 I2C16 進行初始化且其下掛載著 I2C 設備,MP 此時訪問 I2C16 會出現衝突,導致數據延遲或錯誤。
3. 使用虛擬 I2C 驅動,即 I2C16 驅動實體在 MP 實現,AP2 通過 rpmsg  與 MP 的 I2C16 通信。


三、解決方法

1. 修改資源 owner 為 MP:


2. 修改 AP2 的 I2C16 節點:
compatible = "sd,virtual-i2c";
phy-num = /bits/ 8 <15>;


3. 確認 AP2 的 drivers/i2c/busses/i2c-sd-virtual.c 驅動和 mp 的 ssdk/middleware/vi2c 都有編進去(相關宏使能);  

4.  編譯運行,可在 AP2 和 MP 同時使用 I2C16。

總結

以上為開機時中控屏卡在開機動畫頁面問題現象、分析與解決方法。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

參考來源

評論